Name: series-workflowjngrq Phase: Succeeded StartedAt: 2026-08-01 23:59:36 +0000 UTC FinishedAt: 2026-08-02 04:05:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[0] Phase: Succeeded StartedAt: 2026-08-01 23:59:36 +0000 UTC FinishedAt: 2026-08-02 00:15:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 23:59:36 +0000 UTC FinishedAt: 2026-08-02 00:15:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS", "NET_CLS_BASIC", "NET_CLS_ACT", "NET_CLS_BPF", "NET_CLS_FLOWER", "NET_CLS_U32" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS", "NET_CLS_BASIC", "NET_CLS_ACT", "NET_CLS_BPF", "NET_CLS_FLOWER", "NET_CLS_U32" ], "series_id": "09a51ac6-68ec-40e2-a6c2-103b5c409a33" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcf_block_put", "tcf_block_put_ext" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQkFTSUMmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkVUX0NMU19CUEYmIzM0OywKICAgICYjMzQ7TkVUX0NMU19GTE9XRVImIzM0OywKICAgICYjMzQ7TkVUX0NMU19VMzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfYmxvY2tfcHV0JiMzNDssCiAgICAmIzM0O3RjZl9ibG9ja19wdXRfZXh0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgaW4gYF9fdGNmX2Jsb2NrX3B1dGAsIHVuYmluZGluZyB0aGUgb2ZmbG9hZCBiZWZvcmUgdGFraW5nIHRoZSBibG9jayBsb2NrIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nL2NsYXNzaWZpZXIgQVBJIGFuZCBhZmZlY3RzIGNvbnRyb2wgcGF0aCB0ZWFyZG93bi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ5ODE3M2Y3MWE5MThiYmJiNGE0MmY3NjgyN2M1NWZkNDI0NGIxYTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDAwOjE0OjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfYXBpLmMgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXG5pbmRleCBmZWU0NTI0YWRjOThlLi5kM2IyNTA2ZDg3Y2Y0IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2Nsc19hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2Nsc19hcGkuY1xuQEAgLTEzMTIsNiAmIzQzOzEzMTIsOSBAQCBzdGF0aWMgc3RydWN0IHRjZl9ibG9jayAqX190Y2ZfYmxvY2tfZmluZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBRZGlzYyAqcSxcbiBzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcbiBcdFx0XHQgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWksIGJvb2wgcnRubF9oZWxkKVxuIHtcbiYjNDM7XHRpZiAocSlcbiYjNDM7XHRcdHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChibG9jaywgcSwgZWkpO1xuJiM0MztcbiBcdGlmIChyZWZjb3VudF9kZWNfYW5kX211dGV4X2xvY2soXHUwMDI2YmxvY2stXHUwMDNlcmVmY250LCBcdTAwMjZibG9jay1cdTAwM2Vsb2NrKSkge1xuIFx0XHQvKiBGbHVzaGluZy9wdXR0aW5nIGFsbCBjaGFpbnMgd2lsbCBjYXVzZSB0aGUgYmxvY2sgdG8gYmVcbiBcdFx0ICogZGVhbGxvY2F0ZWQgd2hlbiBsYXN0IGNoYWluIGlzIGZyZWVkLiBIb3dldmVyLCBpZiBjaGFpbl9saXN0XG5AQCAtMTMyNSwxNSAmIzQzOzEzMjgsMTAgQEAgc3RhdGljIHZvaWQgX190Y2ZfYmxvY2tfcHV0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG4gXHRcdGlmICh0Y2ZfYmxvY2tfc2hhcmVkKGJsb2NrKSlcbiBcdFx0XHR0Y2ZfYmxvY2tfcmVtb3ZlKGJsb2NrLCBibG9jay1cdTAwM2VuZXQpO1xuIFxuLVx0XHRpZiAocSlcbi1cdFx0XHR0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKTtcbi1cbiBcdFx0aWYgKGZyZWVfYmxvY2spXG4gXHRcdFx0dGNmX2Jsb2NrX2Rlc3Ryb3koYmxvY2spO1xuIFx0XHRlbHNlXG4gXHRcdFx0dGNmX2Jsb2NrX2ZsdXNoX2FsbF9jaGFpbnMoYmxvY2ssIHJ0bmxfaGVsZCk7XG4tXHR9IGVsc2UgaWYgKHEpIHtcbi1cdFx0dGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKGJsb2NrLCBxLCBlaSk7XG4gXHR9XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX0NMUyYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0JBU0lDJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQlBGJiMzNDssCiAgICAmIzM0O05FVF9DTFNfRkxPV0VSJiMzNDssCiAgICAmIzM0O05FVF9DTFNfVTMyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNmX2Jsb2NrX3B1dCYjMzQ7LAogICAgJiMzNDt0Y2ZfYmxvY2tfcHV0X2V4dCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGluIGBfX3RjZl9ibG9ja19wdXRgLCB1bmJpbmRpbmcgdGhlIG9mZmxvYWQgYmVmb3JlIHRha2luZyB0aGUgYmxvY2sgbG9jayBhbmQgZGVjcmVtZW50aW5nIHRoZSByZWZjb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZy9jbGFzc2lmaWVyIEFQSSBhbmQgYWZmZWN0cyBjb250cm9sIHBhdGggdGVhcmRvd24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkOTgxNzNmNzFhOTE4YmJiYjRhNDJmNzY4MjdjNTVmZDQyNDRiMWE2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAwMDoxNDo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfYXBpLmMgYi9uZXQvc2NoZWQvY2xzX2FwaS5jCmluZGV4IGZlZTQ1MjRhZGM5OGUuLmQzYjI1MDZkODdjZjQgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9jbHNfYXBpLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2Nsc19hcGkuYwpAQCAtMTMxMiw2ICYjNDM7MTMxMiw5IEBAIHN0YXRpYyBzdHJ1Y3QgdGNmX2Jsb2NrICpfX3RjZl9ibG9ja19maW5kKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IFFkaXNjICpxLAogc3RhdGljIHZvaWQgX190Y2ZfYmxvY2tfcHV0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsCiAJCQkgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWksIGJvb2wgcnRubF9oZWxkKQogewomIzQzOwlpZiAocSkKJiM0MzsJCXRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChibG9jaywgcSwgZWkpOwomIzQzOwogCWlmIChyZWZjb3VudF9kZWNfYW5kX211dGV4X2xvY2soJmFtcDtibG9jay0mZ3Q7cmVmY250LCAmYW1wO2Jsb2NrLSZndDtsb2NrKSkgewogCQkvKiBGbHVzaGluZy9wdXR0aW5nIGFsbCBjaGFpbnMgd2lsbCBjYXVzZSB0aGUgYmxvY2sgdG8gYmUKIAkJICogZGVhbGxvY2F0ZWQgd2hlbiBsYXN0IGNoYWluIGlzIGZyZWVkLiBIb3dldmVyLCBpZiBjaGFpbl9saXN0CkBAIC0xMzI1LDE1ICYjNDM7MTMyOCwxMCBAQCBzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSwKIAkJaWYgKHRjZl9ibG9ja19zaGFyZWQoYmxvY2spKQogCQkJdGNmX2Jsb2NrX3JlbW92ZShibG9jaywgYmxvY2stJmd0O25ldCk7CiAKLQkJaWYgKHEpCi0JCQl0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKTsKLQogCQlpZiAoZnJlZV9ibG9jaykKIAkJCXRjZl9ibG9ja19kZXN0cm95KGJsb2NrKTsKIAkJZWxzZQogCQkJdGNmX2Jsb2NrX2ZsdXNoX2FsbF9jaGFpbnMoYmxvY2ssIHJ0bmxfaGVsZCk7Ci0JfSBlbHNlIGlmIChxKSB7Ci0JCXRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChibG9jaywgcSwgZWkpOwogCX0KIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjk0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIENsYXNzaWZpZXIgQVBJIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvc2NoZWQvY2xzX2FwaS5jYC4gSXQgc2VlbXMgdGhleSYjMzk7dmUgbWFkZSBhIGNoYW5nZSB0byB0aGUgYF9fdGNmX2Jsb2NrX3B1dGAgZnVuY3Rpb24sIGFuZCB0aGUgY29yZSBvZiB0aGUgYWx0ZXJhdGlvbiBpcyBtb3ZpbmcgdGhlIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKWAgY2FsbC4gUmlnaHQgbm93LCBpdCYjMzk7cyAqaW5zaWRlKiB0aGUgYHJlZmNvdW50X2RlY19hbmRfbXV0ZXhfbG9ja2AgYmxvY2ssIGJ1dCB0aGUgcGF0Y2ggc2hpZnRzIGl0IHRvIHRoZSAqYmVnaW5uaW5nKiBvZiB0aGUgZnVuY3Rpb24sIHB1dHRpbmcgaXQgYmVmb3JlIHRoYXQgcmVmY291bnQgZGVjcmVtZW50IGFuZCBtdXRleCBvcGVyYXRpb24uIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYF9fdGNmX2Jsb2NrX3B1dGAgaXRzZWxmIHdpdGhpbiBgbmV0L3NjaGVkL2Nsc19hcGkuY2AgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGNoYW5nZSBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvbiBob3cgdGhlIGNsYXNzaWZpZXIgYmxvY2tzIGFyZSBoYW5kbGVkIGR1cmluZyB0aGVpciByZWxlYXNlLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGV5JiMzOTtyZSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhbmQgdGhlIGltcGFjdCBvbiBjb25jdXJyZW5jeSBvciByZXNvdXJjZSBtYW5hZ2VtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fdGNmX2Jsb2NrX3B1dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc19hcGkuYz0xMjc1PXN0YXRpYyBzdHJ1Y3QgdGNmX2Jsb2NrICpfX3RjZl9ibG9ja19maW5kKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IFFkaXNjICpxLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTMxMS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTMxMjpzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTMxMy1cdFx0XHQgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWksIGJvb2wgcnRubF9oZWxkKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTMzOD1zdGF0aWMgdm9pZCB0Y2ZfYmxvY2tfcmVmY250X3B1dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgYm9vbCBydG5sX2hlbGQpXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTEzMzkte1xubmV0L3NjaGVkL2Nsc19hcGkuYzoxMzQwOlx0X190Y2ZfYmxvY2tfcHV0KGJsb2NrLCBOVUxMLCBOVUxMLCBydG5sX2hlbGQpO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0xMzQxLX1cbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE1NDg9dm9pZCB0Y2ZfYmxvY2tfcHV0X2V4dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU1OS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU2MDpcdF9fdGNmX2Jsb2NrX3B1dChibG9jaywgcSwgZWksIHRydWUpO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTYxLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDEyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYToKCioqRGVjb25zdHJ1Y3RpbmcgYSBGdW5jdGlvbiBDYWxsIEZsb3cqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBfX3RjZl9ibG9ja19wdXRgLiBUaGF0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyBsaWtlbHkgYW4gaW50ZXJuYWwgdXRpbGl0eS4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBjYWxsZWQgYnkgYHRjZl9ibG9ja19yZWZjbnRfcHV0YCBhbmQgYHRjZl9ibG9ja19wdXRfZXh0YCBpcyB0aGUga2V5LiBJIGtub3cgdGhlc2UgZnVuY3Rpb25zIGFyZSByZWxhdGVkIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCBkYXRhIGZsb3cuIGB0Y2ZfYmxvY2tfcHV0X2V4dGAgYmVpbmcgZWl0aGVyIGV4cG9ydGVkIG9yIG5vbi1zdGF0aWMgaXMgaW50ZXJlc3RpbmcgYXMgdGhpcyBpbXBsaWVzIGl0IGhhcyBicm9hZGVyIHZpc2liaWxpdHkuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHNob3VsZCBmb2N1cyBteSBhdHRlbnRpb24gb24gdW5kZXJzdGFuZGluZyB0aGUgYmVoYXZpb3IgYW5kIGltcGFjdCBvZiBgdGNmX2Jsb2NrX3B1dF9leHRgIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSB1bmRlcmx5aW5nIGBfX3RjZl9ibG9ja19wdXRgIGZ1bmN0aW9uLiBMZXQmIzM5O3MgZGlnIGludG8gYHRjZl9ibG9ja19wdXRfZXh0YCBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNmX2Jsb2NrX3B1dF9leHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmM9MTU0Mz1FWFBPUlRfU1lNQk9MKHRjZl9ibG9ja19nZXQpO1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU0Ny0gKi9cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU0ODp2b2lkIHRjZl9ibG9ja19wdXRfZXh0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NDktXHRcdCAgICAgICBzdHJ1Y3QgdGNmX2Jsb2NrX2V4dF9pbmZvICplaSlcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjEtfVxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTYyOkVYUE9SVF9TWU1CT0wodGNmX2Jsb2NrX3B1dF9leHQpO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTYzLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0xNTY0PXZvaWQgdGNmX2Jsb2NrX3B1dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaylcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjktXHRcdHJldHVybjtcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU3MDpcdHRjZl9ibG9ja19wdXRfZXh0KGJsb2NrLCBibG9jay1cdTAwM2VxLCBcdTAwMjZlaSk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NzEtfVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9NDAwNT12b2lkIHRjZl9xZXZlbnRfZGVzdHJveShzdHJ1Y3QgdGNmX3FldmVudCAqcWUsIHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDAwNy1cdGlmIChxZS1cdTAwM2VpbmZvLmJsb2NrX2luZGV4KVxubmV0L3NjaGVkL2Nsc19hcGkuYzo0MDA4Olx0XHR0Y2ZfYmxvY2tfcHV0X2V4dChxZS1cdTAwM2VibG9jaywgc2NoLCBcdTAwMjZxZS1cdTAwM2VpbmZvKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDAwOS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc1NgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkV4YW1pbmluZyBCbG9jayBQbGFjZW1lbnQgUm91dGluZXMqKgoKQWxyaWdodCwgc28gYHRjZl9ibG9ja19wdXRfZXh0YCBhbmQgYHRjZl9ibG9ja19wdXRgIGFyZSBib3RoIGV4cGxpY2l0bHkgZXhwb3J0ZWQuIEdvb2QsIHRoYXQgbWVhbnMgdGhleSYjMzk7cmUgaW50ZW5kZWQgZm9yIHVzZSBvdXRzaWRlIHRoZWlyIG1vZHVsZS4gTm93LCBnaXZlbiB0aGF0LCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGVsdmUgaW50byB0aGVpciB1c2FnZSBwYXR0ZXJucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoZXJlKiBhbmQgKmhvdyogdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyBlbXBsb3llZC4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSYjMzk7cmUgYmVpbmcgdXRpbGl6ZWQuIEkgbmVlZCB0byBmaW5kIG91dCB3aGVyZSB0aGV5JiMzOTtyZSBiZWluZyBjYWxsZWQgZnJvbSBhbmQgdGhlIGNvbnRleHRzIHN1cnJvdW5kaW5nIHRob3NlIGNhbGxzLiBBcmUgdGhlcmUgYW55IHN1YnRsZXRpZXMgaW4gdGhlaXIgYXBwbGljYXRpb24gdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZj8gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNmX2Jsb2NrX3B1dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9wa3RfY2xzLmg9NTg9aW50IHRjZl9ibG9ja19nZXRfZXh0KHN0cnVjdCB0Y2ZfYmxvY2sgKipwX2Jsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxuaW5jbHVkZS9uZXQvcGt0X2Nscy5oLTYwLVx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuaW5jbHVkZS9uZXQvcGt0X2Nscy5oOjYxOnZvaWQgdGNmX2Jsb2NrX3B1dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jayk7XG5pbmNsdWRlL25ldC9wa3RfY2xzLmg6NjI6dm9pZCB0Y2ZfYmxvY2tfcHV0X2V4dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxuaW5jbHVkZS9uZXQvcGt0X2Nscy5oLTYzLVx0XHQgICAgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWkpO1xuLS1cbmluY2x1ZGUvbmV0L3BrdF9jbHMuaD0xMzA9aW50IHRjZl9ibG9ja19nZXRfZXh0KHN0cnVjdCB0Y2ZfYmxvY2sgKipwX2Jsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxuaW5jbHVkZS9uZXQvcGt0X2Nscy5oLTEzNi1cbmluY2x1ZGUvbmV0L3BrdF9jbHMuaDoxMzc6c3RhdGljIGlubGluZSB2b2lkIHRjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2spXG5pbmNsdWRlL25ldC9wa3RfY2xzLmgtMTM4LXtcbi0tXG5pbmNsdWRlL25ldC9wa3RfY2xzLmg9MTQxPXN0YXRpYyBpbmxpbmVcbmluY2x1ZGUvbmV0L3BrdF9jbHMuaDoxNDI6dm9pZCB0Y2ZfYmxvY2tfcHV0X2V4dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxuaW5jbHVkZS9uZXQvcGt0X2Nscy5oLTE0My1cdFx0ICAgICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTI3NT1zdGF0aWMgc3RydWN0IHRjZl9ibG9jayAqX190Y2ZfYmxvY2tfZmluZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBRZGlzYyAqcSxcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTEzMTEtXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjEzMTI6c3RhdGljIHZvaWQgX190Y2ZfYmxvY2tfcHV0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTEzMTMtXHRcdFx0ICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpLCBib29sIHJ0bmxfaGVsZClcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTEzMzg9c3RhdGljIHZvaWQgdGNmX2Jsb2NrX3JlZmNudF9wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIGJvb2wgcnRubF9oZWxkKVxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMzM5LXtcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTM0MDpcdF9fdGNmX2Jsb2NrX3B1dChibG9jaywgTlVMTCwgTlVMTCwgcnRubF9oZWxkKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTM0MS19XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0xNTQzPUVYUE9SVF9TWU1CT0wodGNmX2Jsb2NrX2dldCk7XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTQ3LSAqL1xubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTQ4OnZvaWQgdGNmX2Jsb2NrX3B1dF9leHQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU0OS1cdFx0ICAgICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU1OS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU2MDpcdF9fdGNmX2Jsb2NrX3B1dChibG9jaywgcSwgZWksIHRydWUpO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTYxLX1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU2MjpFWFBPUlRfU1lNQk9MKHRjZl9ibG9ja19wdXRfZXh0KTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU2My1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU2NDp2b2lkIHRjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2spXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjUte1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU2OS1cdFx0cmV0dXJuO1xubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTcwOlx0dGNmX2Jsb2NrX3B1dF9leHQoYmxvY2ssIGJsb2NrLVx1MDAzZXEsIFx1MDAyNmVpKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU3MS19XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NzItXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE1NzM6RVhQT1JUX1NZTUJPTCh0Y2ZfYmxvY2tfcHV0KTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU3NC1cbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTQwMDU9dm9pZCB0Y2ZfcWV2ZW50X2Rlc3Ryb3koc3RydWN0IHRjZl9xZXZlbnQgKnFlLCBzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQwMDctXHRpZiAocWUtXHUwMDNlaW5mby5ibG9ja19pbmRleClcbm5ldC9zY2hlZC9jbHNfYXBpLmM6NDAwODpcdFx0dGNmX2Jsb2NrX3B1dF9leHQocWUtXHUwMDNlYmxvY2ssIHNjaCwgXHUwMDI2cWUtXHUwMDNlaW5mbyk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQwMDktfVxuLS1cbm5ldC9zY2hlZC9zY2hfY2FrZS5jPTI4MDc9c3RhdGljIHZvaWQgY2FrZV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTI4MTEtXHRxZGlzY193YXRjaGRvZ19jYW5jZWwoXHUwMDI2cS1cdTAwM2V3YXRjaGRvZyk7XG5uZXQvc2NoZWQvc2NoX2Nha2UuYzoyODEyOlx0dGNmX2Jsb2NrX3B1dChxLVx1MDAzZWJsb2NrKTtcbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTI4MTMtXHRrdmZyZWUocS1cdTAwM2V0aW5zKTtcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jPTQ0Mj1zdGF0aWMgdm9pZCBkcnJfZGVzdHJveV9xZGlzYyhzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ0OC1cbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDQ5Olx0dGNmX2Jsb2NrX3B1dChxLVx1MDAzZWJsb2NrKTtcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDUwLVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jPTExMjY9c3RhdGljIHZvaWQgZHVhbHBpMl9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMzMtXHRcdHFkaXNjX3B1dChxLVx1MDAzZWxfcXVldWUpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTEzNDpcdHRjZl9ibG9ja19wdXQocS1cdTAwM2V0Y2ZfYmxvY2spO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEzNS19XG4tLVxubmV0L3NjaGVkL3NjaF9ldHMuYz03MzI9c3RhdGljIHZvaWQgZXRzX3FkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9ldHMuYy03MzctXHRldHNfb2ZmbG9hZF9kZXN0cm95KHNjaCk7XG5uZXQvc2NoZWQvc2NoX2V0cy5jOjczODpcdHRjZl9ibG9ja19wdXQocS1cdTAwM2VibG9jayk7XG5uZXQvc2NoZWQvc2NoX2V0cy5jLTczOS1cdGZvciAoYmFuZCA9IDA7IGJhbmQgXHUwMDNjIHEtXHUwMDNlbmJhbmRzOyBiYW5kJiM0MzsmIzQzOylcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmM9NDk5PXN0YXRpYyB2b2lkIGZxX2NvZGVsX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jLTUwMi1cbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYzo1MDM6XHR0Y2ZfYmxvY2tfcHV0KHEtXHUwMDNlYmxvY2spO1xubmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jLTUwNC1cdGt2ZnJlZShxLVx1MDAzZWJhY2tsb2dzKTtcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jPTU1ND1zdGF0aWMgdm9pZCBmcV9waWVfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU1Ny1cbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6NTU4Olx0dGNmX2Jsb2NrX3B1dChxLVx1MDAzZWJsb2NrKTtcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNTU5LVx0cS1cdTAwM2VwX3BhcmFtcy50dXBkYXRlID0gMDtcbi0tXG5uZXQvc2NoZWQvc2NoX2hmc2MuYz05MTI9aGZzY19jaGFuZ2VfY2xhc3Moc3RydWN0IFFkaXNjICpzY2gsIHUzMiBjbGFzc2lkLCB1MzIgcGFyZW50aWQsXG4tLVxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTA0My1cdFx0aWYgKGVycikge1xubmV0L3NjaGVkL3NjaF9oZnNjLmM6MTA0NDpcdFx0XHR0Y2ZfYmxvY2tfcHV0KGNsLVx1MDAzZWJsb2NrKTtcbm5ldC9zY2hlZC9zY2hfaGZzYy5jLTEwNDUtXHRcdFx0a2ZyZWUoY2wpO1xuLS1cbm5ldC9zY2hlZC9zY2hfaGZzYy5jPTEwOTE9aGZzY19kZXN0cm95X2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgaGZzY19jbGFzcyAqY2wpXG4tLVxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTA5NC1cbm5ldC9zY2hlZC9zY2hfaGZzYy5jOjEwOTU6XHR0Y2ZfYmxvY2tfcHV0KGNsLVx1MDAzZWJsb2NrKTtcbm5ldC9zY2hlZC9zY2hfaGZzYy5jLTEwOTYtXHRxZGlzY19wdXQoY2wtXHUwMDNlcWRpc2MpO1xuLS1cbm5ldC9zY2hlZC9zY2hfaGZzYy5jPTE0OTg9aGZzY19kZXN0cm95X3FkaXNjKHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfaGZzYy5jLTE1MDYtXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KGNsLCBcdTAwMjZxLVx1MDAzZWNsaGFzaC5oYXNoW2ldLCBjbF9jb21tb24uaG5vZGUpIHtcbm5ldC9zY2hlZC9zY2hfaGZzYy5jOjE1MDc6XHRcdFx0dGNmX2Jsb2NrX3B1dChjbC1cdTAwM2VibG9jayk7XG5uZXQvc2NoZWQvc2NoX2hmc2MuYy0xNTA4LVx0XHRcdGNsLVx1MDAzZWJsb2NrID0gTlVMTDtcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTE2MDc9c3RhdGljIHZvaWQgaHRiX2Rlc3Ryb3lfY2xhc3Moc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBodGJfY2xhc3MgKmNsKVxuLS1cbm5ldC9zY2hlZC9zY2hfaHRiLmMtMTYxMy1cdGdlbl9raWxsX2VzdGltYXRvcihcdTAwMjZjbC1cdTAwM2VyYXRlX2VzdCk7XG5uZXQvc2NoZWQvc2NoX2h0Yi5jOjE2MTQ6XHR0Y2ZfYmxvY2tfcHV0KGNsLVx1MDAzZWJsb2NrKTtcbm5ldC9zY2hlZC9zY2hfaHRiLmMtMTYxNS1cdGtmcmVlKGNsKTtcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTE2MTg9c3RhdGljIHZvaWQgaHRiX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9odGIuYy0xNjM0LVx0ICovXG5uZXQvc2NoZWQvc2NoX2h0Yi5jOjE2MzU6XHR0Y2ZfYmxvY2tfcHV0KHEtXHUwMDNlYmxvY2spO1xubmV0L3NjaGVkL3NjaF9odGIuYy0xNjM2LVxuLS1cbm5ldC9zY2hlZC9zY2hfaHRiLmMtMTYzOC1cdFx0aGxpc3RfZm9yX2VhY2hfZW50cnkoY2wsIFx1MDAyNnEtXHUwMDNlY2xoYXNoLmhhc2hbaV0sIGNvbW1vbi5obm9kZSkge1xubmV0L3NjaGVkL3NjaF9odGIuYzoxNjM5Olx0XHRcdHRjZl9ibG9ja19wdXQoY2wtXHUwMDNlYmxvY2spO1xubmV0L3NjaGVkL3NjaF9odGIuYy0xNjQwLVx0XHRcdGNsLVx1MDAzZWJsb2NrID0gTlVMTDtcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTE3NjI9c3RhdGljIGludCBodGJfY2hhbmdlX2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgY2xhc3NpZCxcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTIwNjgtZXJyX2Jsb2NrX3B1dDpcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MjA2OTpcdHRjZl9ibG9ja19wdXQoY2wtXHUwMDNlYmxvY2spO1xubmV0L3NjaGVkL3NjaF9odGIuYy0yMDcwLVx0a2ZyZWUoY2wpO1xuLS1cbm5ldC9zY2hlZC9zY2hfaW5ncmVzcy5jPTExMj1zdGF0aWMgdm9pZCBpbmdyZXNzX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmMtMTIwLVxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM6MTIxOlx0dGNmX2Jsb2NrX3B1dF9leHQocS1cdTAwM2VibG9jaywgc2NoLCBcdTAwMjZxLVx1MDAzZWJsb2NrX2luZm8pO1xubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmMtMTIyLVxuLS1cbm5ldC9zY2hlZC9zY2hfaW5ncmVzcy5jPTI5Mj1zdGF0aWMgdm9pZCBjbHNhY3RfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0zMDAtXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYzozMDE6XHR0Y2ZfYmxvY2tfcHV0X2V4dChxLVx1MDAzZWluZ3Jlc3NfYmxvY2ssIHNjaCwgXHUwMDI2cS1cdTAwM2VpbmdyZXNzX2Jsb2NrX2luZm8pO1xubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM6MzAyOlx0dGNmX2Jsb2NrX3B1dF9leHQocS1cdTAwM2VlZ3Jlc3NfYmxvY2ssIHNjaCwgXHUwMDI2cS1cdTAwM2VlZ3Jlc3NfYmxvY2tfaW5mbyk7XG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0zMDMtXG4tLVxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYz0xNTk9bXVsdGlxX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy0xNjMtXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jOjE2NDpcdHRjZl9ibG9ja19wdXQocS1cdTAwM2VibG9jayk7XG5uZXQvc2NoZWQvc2NoX211bHRpcS5jLTE2NS1cdGZvciAoYmFuZCA9IDA7IGJhbmQgXHUwMDNjIHEtXHUwMDNlYmFuZHM7IGJhbmQmIzQzOyYjNDM7KVxuLS1cbm5ldC9zY2hlZC9zY2hfcHJpby5jPTE2NT1wcmlvX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9wcmlvLmMtMTY5LVxubmV0L3NjaGVkL3NjaF9wcmlvLmM6MTcwOlx0dGNmX2Jsb2NrX3B1dChxLVx1MDAzZWJsb2NrKTtcbm5ldC9zY2hlZC9zY2hfcHJpby5jLTE3MS1cdHByaW9fb2ZmbG9hZChzY2gsIE5VTEwpO1xuLS1cbm5ldC9zY2hlZC9zY2hfcWZxLmM9MTQ5ND1zdGF0aWMgdm9pZCBxZnFfZGVzdHJveV9xZGlzYyhzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX3FmcS5jLTE1MDAtXG5uZXQvc2NoZWQvc2NoX3FmcS5jOjE1MDE6XHR0Y2ZfYmxvY2tfcHV0KHEtXHUwMDNlYmxvY2spO1xubmV0L3NjaGVkL3NjaF9xZnEuYy0xNTAyLVxuLS1cbm5ldC9zY2hlZC9zY2hfc2ZiLmM9NDc4PXN0YXRpYyB2b2lkIHNmYl9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfc2ZiLmMtNDgxLVxubmV0L3NjaGVkL3NjaF9zZmIuYzo0ODI6XHR0Y2ZfYmxvY2tfcHV0KHEtXHUwMDNlYmxvY2spO1xubmV0L3NjaGVkL3NjaF9zZmIuYy00ODMtXHRxZGlzY19wdXQocS1cdTAwM2VxZGlzYyk7XG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYz03NjU9c3RhdGljIHZvaWQgc2ZxX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYy03NjgtXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjc2OTpcdHRjZl9ibG9ja19wdXQocS1cdTAwM2VibG9jayk7XG5uZXQvc2NoZWQvc2NoX3NmcS5jLTc3MC1cdFdSSVRFX09OQ0UocS1cdTAwM2VwZXJ0dXJiX3BlcmlvZCwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM4NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDk0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHRjZl9ibG9ja19wdXQgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBfX3RjZl9ibG9ja19wdXRgIGluIGBuZXQvc2NoZWQvY2xzX2FwaS5jYC4gSXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24sIGNhbGxlZCBieSBib3RoIGB0Y2ZfYmxvY2tfcHV0YCBhbmQgYHRjZl9ibG9ja19wdXRfZXh0YCwgc28gd2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2FyZWZ1bGx5LiBUaGUgY3J1Y2lhbCBjaGFuZ2UgaGVyZSBpcyB0aGUgbW92ZW1lbnQgb2YgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChibG9jaywgcSwgZWkpYCB0byB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uLCByaWdodCBiZWZvcmUgYW55dGhpbmcgZWxzZS4KCkluaXRpYWxseSwgaXQgd2FzIGluc2lkZSBhIGNvbmRpdGlvbmFsIGJsb2NrIGNvbnRyb2xsZWQgYnkgYHJlZmNvdW50X2RlY19hbmRfbXV0ZXhfbG9jaygmYW1wO2Jsb2NrLSZndDtyZWZjbnQsICZhbXA7YmxvY2stJmd0O2xvY2spYC4gSXQgd2FzIGFsc28gaW5zaWRlIGFuIGBlbHNlIGlmIChxKWAgYmxvY2suIE5vdywgaXQmIzM5O3MgdW5jb25kaXRpb25hbGx5IGNhbGxlZCBpZiBgcWAgaXMgbm90IE5VTEwuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhpcyBzZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcmVvcmRlcmluZywgYnV0IEkmIzM5O20gdHJ5aW5nIHRvIHNlZSBpZiB0aGVyZSBpcyBtb3JlIHRvIGl0LiBCZWZvcmUsIHRoZSB1bmJpbmRpbmcgaGFwcGVuZWQgZWl0aGVyIHdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCB3ZW50IHRvIHplcm8gKGluc2lkZSB0aGUgYGlmYCkgKm9yKiB3aGVuIGBxYCB3YXMgcHJlc2VudCBidXQgdGhlIHJlZmNvdW50IGRpZG4mIzM5O3QgZHJvcCB0byB6ZXJvLiBUaGUgZGlmZiBzaG93cyBpdCB3YXMgYWx3YXlzIGRvaW5nIHRoZSB1bmJpbmQgaWYgYHFgIHdhcyBub3QgTlVMTC4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zLiBgcmVmY291bnRfZGVjX2FuZF9tdXRleF9sb2NrYCBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IG9ubHkgKmFjcXVpcmVzKiB0aGUgbG9jayBpZiB0aGUgcmVmY291bnQgKmRyb3BzKiB0byB6ZXJvLiBPdGhlcndpc2UsIGl0IGp1c3QgZGVjcmVtZW50cy4KClNvIGJlZm9yZSwgd2hlbiB0aGUgcmVmY291bnQgKmRpZCogZ28gdG8gemVybywgd2UmIzM5O2QgYWNxdWlyZSB0aGUgbG9jaywgdGhlbiBjYWxsIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRgLCBhbmQgdGhlbiBwcm9jZWVkIHdpdGggZGVzdHJ1Y3Rpb24gb3IgZmx1c2hpbmcuIE5vdywgd2UmIzM5O3JlIHVuYmluZGluZyAqYmVmb3JlKiB0aGUgcmVmY291bnQgaXMgZGVjcmVtZW50ZWQsIGFuZCBjcnVjaWFsbHksICpiZWZvcmUqIHdlIHBvdGVudGlhbGx5IGFjcXVpcmUgdGhlIGxvY2suIFRoaXMgc2VlbXMgbGlrZSBhIGNoYW5nZSBpbiBzeW5jaHJvbml6YXRpb24gc3RyYXRlZ3kuIFdlJiMzOTtyZSBkZWNvdXBsaW5nIHRoZSBvZmZsb2FkIHVuYmluZGluZyBmcm9tIHRoZSBsb2NrIGFjcXVpc2l0aW9uLgoKVGhpcyBpcyBsaWtlbHkgYSBzYWZldHkgaW1wcm92ZW1lbnQuIEl0IGxpa2VseSBhdm9pZHMgYSBwb3RlbnRpYWwgZGVhZGxvY2ssIG9yIHBvdGVudGlhbGx5IGVsaW1pbmF0ZXMgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhpcyBpcyBiZWNhdXNlIHdlIGNvdWxkIGJlIGZyZWVpbmcgc29tZXRoaW5nIGJlZm9yZSBpdCBpcyB1bmJvdW5kLiBPciBpdCBqdXN0IGNoYW5nZXMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMuIEkgbmVlZCB0byBkaWcgaW50byBgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kYCB0byB1bmRlcnN0YW5kIHRoZSBkZXRhaWxzLiBJdCYjMzk7cyBwcm9iYWJseSByZWxhdGVkIHRvIGVuc3VyaW5nIHRoYXQgdGhlIG9mZmxvYWQgb3BlcmF0aW9ucyBhcmUgY29tcGxldGVkICpiZWZvcmUqIHdlIHBvdGVudGlhbGx5IHN0YXJ0IGZyZWVpbmcgcmVzb3VyY2VzIG9yIG1vZGlmeWluZyB0aGUgYmxvY2smIzM5O3Mgc3RhdGUgaW4gYSB3YXkgdGhhdCB0aGUgb2ZmbG9hZCBtZWNoYW5pc20gbWlnaHQgcmVseSBvbi4gVGhpcyBpcyBsaWtlbHkgdGhlIGNydWNpYWwgcG9pbnQuIExldCYjMzk7cyBzZWUgaWYgdGhlIGNvZGUgY29tbWVudCBleHBsYWlucyBhbnl0aGluZyBhYm91dCB0aGUgcmVhc29uIGZvciB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmM9ODU1PXN0YXRpYyBpbnQgdGNmX2Jsb2NrX29mZmxvYWRfYmluZChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtODk0LVxubmV0L3NjaGVkL2Nsc19hcGkuYzo4OTU6c3RhdGljIHZvaWQgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTg5Ni1cdFx0XHRcdCAgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWkpXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0xMzEyPXN0YXRpYyB2b2lkIF9fdGNmX2Jsb2NrX3B1dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTMxNS1cdGlmIChxKVxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMzE2Olx0XHR0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTMxNy1cbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE0NjI9aW50IHRjZl9ibG9ja19nZXRfZXh0KHN0cnVjdCB0Y2ZfYmxvY2sgKipwX2Jsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTExLWVycl9kZXZfaW5zZXJ0OlxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTEyOlx0dGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKGJsb2NrLCBxLCBlaSk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1MTMtZXJyX2Jsb2NrX29mZmxvYWRfYmluZDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI5MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHVuYmluZGluZyBwcm9jZXNzIHdvcmtzIHdpdGhpbiB0aGUgbGFyZ2VyIGZyYW1ld29yay4gSSBrbm93IHRoZSBjb3JlIGNvbmNlcHQgaXMgdGhlIHJlbW92YWwgb2YgdGhlIHNwZWNpZmljIG9mZmxvYWQgYXNzb2NpYXRpb24sIGJ1dCB0aGUgbnVhbmNlcyBhcmUgd2hhdCBJJiMzOTttIGFmdGVyLiBXaGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQ/IEhvdyBkb2VzIGl0IGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIGlmIGF0IGFsbD8gSSBuZWVkIHRvIHRoaW5rIGFib3V0IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgYW5kIGxvY2tpbmcgc3RyYXRlZ2llcyBoZXJlLCBlc3BlY2lhbGx5IGluIGEgbXVsdGktdGhyZWFkZWQgb3IgY29uY3VycmVudCBlbnZpcm9ubWVudC4gQW55IHBvdGVudGlhbCByZXNvdXJjZSBsZWFrcz8gVGhpcyBmdW5jdGlvbiBpcyBjcml0aWNhbCBmb3IgbWFpbnRhaW5pbmcgc3lzdGVtIHN0YWJpbGl0eS4gSSBuZWVkIHRvIGZ1bGx5IGdyYXNwIGl0cyByb2xlIGluIHRlYXJpbmcgZG93biB0aGUgb2ZmbG9hZCBzZXR1cC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgc3VidGxlIGRldGFpbHMsIHRoZSBlcnJvciBoYW5kbGluZywgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyB1bmJpbmQgb3BlcmF0aW9uIG9uIG90aGVyIHBhcnRzIG9mIHRoZSB0cmFmZmljIGNvbnRyb2wgc3RhY2suIFVsdGltYXRlbHksIEkgd2FudCB0byBjb25maXJtIGl0JiMzOTtzIGltcGxlbWVudGVkIGNvcnJlY3RseSBhbmQgZWZmaWNpZW50bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc19hcGkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg5NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODk1Olx0c3RhdGljIHZvaWQgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG4gODk2Olx0XHRcdFx0XHQgICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpKVxuIDg5NzpcdHtcbiA4OTg6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxLVx1MDAzZWRldl9xdWV1ZS1cdTAwM2VkZXY7XG4gODk5Olx0XHRpbnQgZXJyO1xuIDkwMDpcdFxuIDkwMTpcdFx0ZG93bl93cml0ZShcdTAwMjZibG9jay1cdTAwM2VjYl9sb2NrKTtcbiA5MDI6XHRcdGVyciA9IHRjZl9ibG9ja19vZmZsb2FkX2NtZChibG9jaywgZGV2LCBxLCBlaSwgRkxPV19CTE9DS19VTkJJTkQsIE5VTEwpO1xuIDkwMzpcdFx0aWYgKGVyciA9PSAtRU9QTk9UU1VQUClcbiA5MDQ6XHRcdFx0Z290byBub19vZmZsb2FkX2Rldl9kZWM7XG4gOTA1Olx0XHR1cF93cml0ZShcdTAwMjZibG9jay1cdTAwM2VjYl9sb2NrKTtcbiA5MDY6XHRcdHJldHVybjtcbiA5MDc6XHRcbiA5MDg6XHRub19vZmZsb2FkX2Rldl9kZWM6XG4gOTA5Olx0XHRXQVJOX09OKGJsb2NrLVx1MDAzZW5vb2ZmbG9hZGRldmNudC0tID09IDApO1xuIDkxMDpcdFx0dXBfd3JpdGUoXHUwMDI2YmxvY2stXHUwMDNlY2JfbG9jayk7XG4gOTExOlx0fVxuIDkxMjpcdFxuIDkxMzpcdHN0YXRpYyBpbnRcbiA5MTQ6XHR0Y2ZfY2hhaW4wX2hlYWRfY2hhbmdlX2NiX2FkZChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jayxcbiA5MTU6XHRcdFx0XHQgICAgICBzdHJ1Y3QgdGNmX2Jsb2NrX2V4dF9pbmZvICplaSxcbiA5MTY6XHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4gOTE3Olx0e1xuIDkxODpcdFx0c3RydWN0IHRjZl9maWx0ZXJfY2hhaW5fbGlzdF9pdGVtICppdGVtO1xuIDkxOTpcdFx0c3RydWN0IHRjZl9jaGFpbiAqY2hhaW4wO1xuIDkyMDpcdFxuIDkyMTpcdFx0aXRlbSA9IGttYWxsb2Nfb2JqKCppdGVtKTtcbiA5MjI6XHRcdGlmICghaXRlbSkge1xuIDkyMzpcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O01lbW9yeSBhbGxvY2F0aW9uIGZvciBoZWFkIGNoYW5nZSBjYWxsYmFjayBpdGVtIGZhaWxlZFwmIzM0Oyk7XG4gOTI0Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDAyNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDYwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgTmV0d29yayBTY2hlZHVsZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCBpdCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG5ldC9zY2hlZC9jbHNfYXBpLmNgIGNvZGUuIEl0IGFwcGVhcnMgdGhlIGNoYW5nZSBpbnZvbHZlcyBob3cgdGhlIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRgIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHR3byBsb2NrczogYGJsb2NrLSZndDtsb2NrYCAoYSBtdXRleCkgYW5kIGBibG9jay0mZ3Q7Y2JfbG9ja2AgKGEgcmVhZC13cml0ZSBzZW1hcGhvcmUsIG9yIHJ3c2VtKS4KCkJlZm9yZSB0aGlzIHBhdGNoLCB0aGVyZSB3YXMgYSBjb25kaXRpb25hbCBwYXRoLiBUaGUgY29kZSB1c2VkIGByZWZjb3VudF9kZWNfYW5kX211dGV4X2xvY2soJmFtcDtibG9jay0mZ3Q7cmVmY250LCAmYW1wO2Jsb2NrLSZndDtsb2NrKWAuIElmIHRoYXQgZnVuY3Rpb24gcmV0dXJuZWQgdHJ1ZSwgbWVhbmluZyBpdCBzdWNjZXNzZnVsbHkgZGVjcmVtZW50ZWQgdGhlIHJlZmVyZW5jZSBjb3VudCBhbmQgYWNxdWlyZWQgdGhlIGBibG9jay0mZ3Q7bG9ja2AgbXV0ZXgsIGl0IHdvdWxkICp0aGVuKiBjYWxsIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRgLiBUaGlzIGNyZWF0ZXMgYSBwb3RlbnRpYWwgbG9jayBvcmRlcmluZyBpc3N1ZSBiZWNhdXNlIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRgIHRha2VzIHRoZSBgYmxvY2stJmd0O2NiX2xvY2tgLiBJZiBgcmVmY291bnRfZGVjX2FuZF9tdXRleF9sb2NrYCByZXR1cm5lZCBmYWxzZSwgaXQgb25seSBjYWxscyBgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kYC4gTm93LCBpdCAqYWx3YXlzKiBjYWxscyBgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kYCBiZWZvcmUgYXR0ZW1wdGluZyB0byBhY3F1aXJlIHRoZSBgYmxvY2stJmd0O2xvY2tgLiBUaGlzIGNoYW5nZSBsb29rcyBsaWtlIGEgZGVsaWJlcmF0ZSBhdm9pZGFuY2Ugb2YgYSBsb2NrIGludmVyc2lvbiwgb3IgaXQgbWF5IGp1c3QgYmUgdG8gZW5zdXJlIHRoYXQgdW5iaW5kaW5nIGhhcHBlbnMgYmVmb3JlIHNvbWV0aGluZyBlbHNlIHRoYXQgbWlnaHQgbmVlZCB0aGUgYGJsb2NrLSZndDtsb2NrYC4gVGhlIGNvZGUgZG9lc24mIzM5O3QgZXhwbGljaXRseSBzdGF0ZSB0aGUgKndoeSosIGJ1dCB0aGF0JiMzOTtzIG15IHdvcmtpbmcgaHlwb3RoZXNpcy4KCkkgdGhpbmsgdGhlIGltcG9ydGFudCB0aGluZyBpcyB0aGF0IGByZWZjb3VudF9kZWNfYW5kX211dGV4X2xvY2tgIGNhbiAqZHJvcCogdGhlIHJlZmVyZW5jZSBjb3VudCB0byB6ZXJvLiBUaGF0JiMzOTtzIGEgY3JpdGljYWwgbW9tZW50LiBJZiB0aGUgcmVmZXJlbmNlIGNvdW50IGRyb3BzIHRvIHplcm8sIHRoZSBibG9jayBpcyBiZWluZyBkZXN0cm95ZWQuIFRoZSBwYXRjaCBlZmZlY3RpdmVseSBtYWtlcyBpdCB1bmJpbmQgdGhlIG9mZmxvYWQgKmJlZm9yZSogdGhlIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byB6ZXJvLiBUaGF0IGVuc3VyZXMgdGhlIGJsb2NrIGlzIHZhbGlkIHdoaWxlIGl0JiMzOTtzIGJlaW5nIHVuYm91bmQuIERvaW5nIGl0IHRoZSAqb3RoZXIqIHdheSAtIGFmdGVyIGRyb3BwaW5nIHRoZSByZWZjb3VudCB0byB6ZXJvIC0gY291bGQgbGVhZCB0byBwcm9ibGVtcyBpZiBgdGNmX2Jsb2NrX29mZmxvYWRfY21kYCAob3IgYSBmdW5jdGlvbiBpdCBjYWxscykgdHJpZXMgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgYmxvY2sgb3IgcmVsaWVzIG9uIGl0cyByZWZjb3VudCBiZWluZyBhYm92ZSB6ZXJvLCB3aGljaCBpcyBsaWtlbHkuIEl0ICp3b3VsZCogY2F1c2UgYSBjcmFzaC4KCkl0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGluZy9jbGFzc2lmaWNhdGlvbiBBUEksIHNvIGl0JiMzOTtzIGFic29sdXRlbHkgd29ydGggZnV6emluZyB0byBjb25maXJtIHRoZSBmaXguCgpPa2F5LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBmb2N1cyBzeW1ib2xzLiBUaGUgY2hhbmdlIGlzIGNlbnRlcmVkIGFyb3VuZCB0aGUgc3RhdGljIGZ1bmN0aW9uIGBfX3RjZl9ibG9ja19wdXRgLiBUaGUgZGlyZWN0IGNhbGxlcnMgYXJlIGB0Y2ZfYmxvY2tfcHV0YCBhbmQgYHRjZl9ibG9ja19wdXRfZXh0YC4gYHRjZl9ibG9ja19yZWZjbnRfcHV0YCBhbHNvIGNhbGxzIGl0LCBidXQgd2l0aCBgcWAgYXMgTlVMTCwgc28gYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAgaXNuJiMzOTt0IGNhbGxlZCB0aGVyZS4gU28sIGB0Y2ZfYmxvY2tfcHV0YCBhbmQgYHRjZl9ibG9ja19wdXRfZXh0YCBhcmUgdGhlIGludGVyZXN0aW5nIGNhbGxlcnMgaGVyZS4gTGV0IG1lIGRvdWJsZSBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIGdvb2QgZm9jdXMgc3ltYm9scy4gTG9va3MgbGlrZSBgdGNmX2Jsb2NrX3B1dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0X2V4dGAgYXJlIGdvb2QgY2FuZGlkYXRlcy4gQW5kIHRoZXkgYXJlICpleHBvcnRlZCosIG5vdCBzdGF0aWMhIExldCYjMzk7cyBjaGVjayB0aG9zZSBpbiBgbmV0L3NjaGVkL2Nsc19hcGkuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZvaWQgdGNmX2Jsb2NrX3B1dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc19hcGkuYz0xNTQzPUVYUE9SVF9TWU1CT0wodGNmX2Jsb2NrX2dldCk7XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTQ3LSAqL1xubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTQ4OnZvaWQgdGNmX2Jsb2NrX3B1dF9leHQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU0OS1cdFx0ICAgICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTU2Mj1FWFBPUlRfU1lNQk9MKHRjZl9ibG9ja19wdXRfZXh0KTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU2My1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU2NDp2b2lkIHRjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2spXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU3MwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIEV4cG9ydGVkIFN5bWJvbHMgYW5kIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBjb25maXJtaW5nIHRoYXQgdGhlc2Ugc3ltYm9scyBhcmUsIGluIGZhY3QsIGV4cG9ydGVkLiBOb3csIHRvIGJlIHRob3JvdWdoLCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBDT05GSUcgb3B0aW9ucyB0aGF0IGFyZSBwcmVyZXF1aXNpdGVzIG9yIGluZmx1ZW5jZSB0aGUgY29tcGlsYXRpb24gb2YgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZS4gTG9va2luZyBpbnRvIGl0LCB0aGUgZmlsZSBgbmV0L3NjaGVkL2Nsc19hcGkuY2Agc2VlbXMgdG8gY29tZSBpbnRvIHBsYXkgd2hlbiBgQ09ORklHX05FVF9TQ0hFRGAgb3IgcmVsYXRlZCBuZXR3b3JraW5nIHNjaGVkdWxlciBvcHRpb25zIGFyZSBlbmFibGVkLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdyBhbmQgaGVscHMgdG8gY2xhcmlmeSB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjbHNfYXBpLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX05FVF9TQ0hFRClcdFx0JiM0Mzs9IHNjaF9hcGkubyBzY2hfYmxhY2tob2xlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkVUX0NMUylcdFx0JiM0Mzs9IGNsc19hcGkub1xubmV0L3NjaGVkL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19ORVRfQ0xTX0FDVClcdCYjNDM7PSBhY3RfYXBpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4NTgKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIENsYXNzaWZpZXIgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyBJIHNlZSB3ZSBuZWVkIGBDT05GSUdfTkVUX0NMU2AuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRoZSBtb3JlIGludGVyZXN0aW5nIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgYWxzbyByZXF1aXJlIGBDT05GSUdfTkVUX1NDSEVEYC4gSW4gbXkgZXhwZXJpZW5jZSwgYW5kIGJhc2VkIG9uIHRoZSB0eXBpY2FsIGRlcGVuZGVuY2llcyBJJiMzOTt2ZSBzZWVuIGluIHRoZXNlIGtpbmRzIG9mIG5ldHdvcmsgY29uZmlndXJhdGlvbnMsIGBORVRfQ0xTYCBvZnRlbiwgaWYgbm90ICp1c3VhbGx5KiwgbGVhbnMgb24gYE5FVF9TQ0hFRGAuIEl0JiMzOTtzIGEgc3RhbmRhcmQgcGF0dGVybi4gVGltZSB0byBjb25maXJtIHRoYXQgcmVsYXRpb25zaGlwIGFuZCBlbnN1cmUgZXZlcnl0aGluZyBpcyBwcm9wZXJseSBzZXQgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQ0xTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9NDc5PWNvbW1lbnQgXCYjMzQ7Q2xhc3NpZmljYXRpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnLTQ4MC1cbm5ldC9zY2hlZC9LY29uZmlnOjQ4MTpjb25maWcgTkVUX0NMU1xubmV0L3NjaGVkL0tjb25maWctNDgyLVx0Ym9vbFxubmV0L3NjaGVkL0tjb25maWctNDgzLVxubmV0L3NjaGVkL0tjb25maWc6NDg0OmNvbmZpZyBORVRfQ0xTX0JBU0lDXG5uZXQvc2NoZWQvS2NvbmZpZy00ODUtXHR0cmlzdGF0ZSBcJiMzNDtFbGVtZW50YXJ5IGNsYXNzaWZpY2F0aW9uIChCQVNJQylcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy00OTMtXG5uZXQvc2NoZWQvS2NvbmZpZzo0OTQ6Y29uZmlnIE5FVF9DTFNfUk9VVEU0XG5uZXQvc2NoZWQvS2NvbmZpZy00OTUtXHR0cmlzdGF0ZSBcJiMzNDtSb3V0aW5nIGRlY2lzaW9uIChST1VURSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01MDUtXG5uZXQvc2NoZWQvS2NvbmZpZzo1MDY6Y29uZmlnIE5FVF9DTFNfRldcbm5ldC9zY2hlZC9LY29uZmlnLTUwNy1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBtYXJrIChGVylcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01MTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo1MTY6Y29uZmlnIE5FVF9DTFNfVTMyXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXHR0cmlzdGF0ZSBcJiMzNDtVbml2ZXJzYWwgMzJiaXQgY29tcGFyaXNvbnMgdy8gaGFzaGluZyAoVTMyKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTUzMz1jb25maWcgQ0xTX1UzMl9NQVJLXG4tLVxubmV0L3NjaGVkL0tjb25maWctNTM4LVxubmV0L3NjaGVkL0tjb25maWc6NTM5OmNvbmZpZyBORVRfQ0xTX0ZMT1dcbm5ldC9zY2hlZC9LY29uZmlnLTU0MC1cdHRyaXN0YXRlIFwmIzM0O0Zsb3cgY2xhc3NpZmllclwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTU0OS1cbm5ldC9zY2hlZC9LY29uZmlnOjU1MDpjb25maWcgTkVUX0NMU19DR1JPVVBcbm5ldC9zY2hlZC9LY29uZmlnLTU1MS1cdHRyaXN0YXRlIFwmIzM0O0NvbnRyb2wgR3JvdXAgQ2xhc3NpZmllclwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTU2MS1cbm5ldC9zY2hlZC9LY29uZmlnOjU2Mjpjb25maWcgTkVUX0NMU19CUEZcbm5ldC9zY2hlZC9LY29uZmlnLTU2My1cdHRyaXN0YXRlIFwmIzM0O0JQRi1iYXNlZCBjbGFzc2lmaWVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNTcxLVxubmV0L3NjaGVkL0tjb25maWc6NTcyOmNvbmZpZyBORVRfQ0xTX0ZMT1dFUlxubmV0L3NjaGVkL0tjb25maWctNTczLVx0dHJpc3RhdGUgXCYjMzQ7Rmxvd2VyIGNsYXNzaWZpZXJcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01ODEtXG5uZXQvc2NoZWQvS2NvbmZpZzo1ODI6Y29uZmlnIE5FVF9DTFNfTUFUQ0hBTExcbm5ldC9zY2hlZC9LY29uZmlnLTU4My1cdHRyaXN0YXRlIFwmIzM0O01hdGNoLWFsbCBjbGFzc2lmaWVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTcwMS1cbm5ldC9zY2hlZC9LY29uZmlnOjcwMjpjb25maWcgTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcwMy1cdGJvb2wgXCYjMzQ7QWN0aW9uc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjcyMwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgTkVUX0NMU2AgVmFyaWFibGUqKgoKT2theSwgc28gYE5FVF9DTFNgIGlzIGEgQm9vbGVhbiB2YWx1ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCBzbyBzb21ldGhpbmcgZWxzZSBpcyBmbGlwcGluZyB0aGlzIHN3aXRjaC4mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpkcml2aW5nKiB0aGF0IEJvb2xlYW4gc3RhdGUuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjb2RlYmFzZSBvciBjb25maWd1cmF0aW9uIHRvIHNlZSB3aGVyZSBgTkVUX0NMU2AgaXMgYmVpbmcgYXNzaWduZWQsIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIHNlbGVjdGlvbiBjcml0ZXJpYSBpcyBjcml0aWNhbCBoZXJlLiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbiBpdCYjMzk7cyBkZXRlcm1pbmVkIGJ5IGEgc2V0IG9mIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgb3IgYSBsb29rdXAgdGFibGUsIGFuZCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhvc2UgdHJpZ2dlcnMuIEtub3dpbmcgdGhlIHVwc3RyZWFtIGxvZ2ljIHdpbGwgcHJvdmlkZSBpbnNpZ2h0IGludG8gaG93IHRoZSBuZXR3b3JrIGJlaGF2aW9yIGlzIGJlaW5nIGNvbnRyb2xsZWQuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoZSBwb2ludCB3aGVyZSBgTkVUX0NMU2AgaXMgdXNlZCB0byBpdHMgcG9pbnQgb2YgZGVmaW5pdGlvbi4gTGV0JiMzOTtzIGdldCB0byB3b3JrIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTkVUX0NMUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTQ4ND1jb25maWcgTkVUX0NMU19CQVNJQ1xubmV0L3NjaGVkL0tjb25maWctNDg1LVx0dHJpc3RhdGUgXCYjMzQ7RWxlbWVudGFyeSBjbGFzc2lmaWNhdGlvbiAoQkFTSUMpXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo0ODY6XHRzZWxlY3QgTkVUX0NMU1xubmV0L3NjaGVkL0tjb25maWctNDg3LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTQ5ND1jb25maWcgTkVUX0NMU19ST1VURTRcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy00OTctXHRzZWxlY3QgSVBfUk9VVEVfQ0xBU1NJRFxubmV0L3NjaGVkL0tjb25maWc6NDk4Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTQ5OS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01MDY9Y29uZmlnIE5FVF9DTFNfRldcbm5ldC9zY2hlZC9LY29uZmlnLTUwNy1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBtYXJrIChGVylcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjUwODpcdHNlbGVjdCBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy01MDktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTE2PWNvbmZpZyBORVRfQ0xTX1UzMlxubmV0L3NjaGVkL0tjb25maWctNTE3LVx0dHJpc3RhdGUgXCYjMzQ7VW5pdmVyc2FsIDMyYml0IGNvbXBhcmlzb25zIHcvIGhhc2hpbmcgKFUzMilcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjUxODpcdHNlbGVjdCBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy01MTktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTM5PWNvbmZpZyBORVRfQ0xTX0ZMT1dcbm5ldC9zY2hlZC9LY29uZmlnLTU0MC1cdHRyaXN0YXRlIFwmIzM0O0Zsb3cgY2xhc3NpZmllclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTQxOlx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTU0Mi1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01NTA9Y29uZmlnIE5FVF9DTFNfQ0dST1VQXG5uZXQvc2NoZWQvS2NvbmZpZy01NTEtXHR0cmlzdGF0ZSBcJiMzNDtDb250cm9sIEdyb3VwIENsYXNzaWZpZXJcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjU1MjpcdHNlbGVjdCBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy01NTMtXHRzZWxlY3QgQ0dST1VQX05FVF9DTEFTU0lEXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTYyPWNvbmZpZyBORVRfQ0xTX0JQRlxubmV0L3NjaGVkL0tjb25maWctNTYzLVx0dHJpc3RhdGUgXCYjMzQ7QlBGLWJhc2VkIGNsYXNzaWZpZXJcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjU2NDpcdHNlbGVjdCBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy01NjUtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTcyPWNvbmZpZyBORVRfQ0xTX0ZMT1dFUlxubmV0L3NjaGVkL0tjb25maWctNTczLVx0dHJpc3RhdGUgXCYjMzQ7Rmxvd2VyIGNsYXNzaWZpZXJcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjU3NDpcdHNlbGVjdCBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy01NzUtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTgyPWNvbmZpZyBORVRfQ0xTX01BVENIQUxMXG5uZXQvc2NoZWQvS2NvbmZpZy01ODMtXHR0cmlzdGF0ZSBcJiMzNDtNYXRjaC1hbGwgY2xhc3NpZmllclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTg0Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTU4NS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01OTI9Y29uZmlnIE5FVF9FTUFUQ0hcbm5ldC9zY2hlZC9LY29uZmlnLTU5My1cdGJvb2wgXCYjMzQ7RXh0ZW5kZWQgTWF0Y2hlc1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTk0Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTU5NS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03MDI9Y29uZmlnIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXHRib29sIFwmIzM0O0FjdGlvbnNcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjcwNDpcdHNlbGVjdCBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy03MDUtXHRzZWxlY3QgTkVUX1hHUkVTU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzc5NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQ29uZmlndXJhdGlvbiBRdWFuZGFyeSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRvIGVuYWJsZSBgTkVUX0NMU2AsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGRpcmVjdCBhcHByb2FjaCBpbnZvbHZlcyBlbmFibGluZyBlaXRoZXIgYE5FVF9DTFNfQkFTSUNgLCBgTkVUX0NMU19CUEZgLCBgTkVUX0NMU19GTE9XRVJgLCBvciBgTkVUX0NMU19BQ1RgLiBUbyBrZWVwIHRoaW5ncyBzaW1wbGUgYW5kIGVuc3VyZSB3ZSBoYXZlIG1heGltdW0gY292ZXJhZ2UsIEkmIzM5O20ganVzdCBnb2luZyB0byBnbyBhaGVhZCBhbmQgc3BlY2lmeSBhbGwgb2YgdGhlbTogYE5FVF9DTFNfQkFTSUNgLCBgTkVUX0NMU19BQ1RgLCBgTkVUX0NMU19CUEZgLCBgTkVUX0NMU19GTE9XRVJgLCBhbmQgYE5FVF9DTFNfVTMyYC4gVGhlIHBhcmVudCBtZW51IGZvciBhbGwgb2YgdGhpcyBpcyBgTkVUX1NDSEVEYCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5LCBhbmQgdGhlIGJ1aWxkIHN5c3RlbSBzaG91bGQgcmVzb2x2ZSBhbnkgZGVwZW5kZW5jaWVzLiBUaGF0JiMzOTtzIHRoZSBtb3N0IHJvYnVzdCB3YXkgdG8gaGFuZGxlIGl0LCBtYWtpbmcgc3VyZSBhbGwgdGhlIGNsYXNzaWZpZXIgY29tcG9uZW50cyBhcmUgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZy01LVxubmV0L3NjaGVkL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctNy1cdGJvb2wgXCYjMzQ7UW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTczCgkJCQkJCQlvdXRwdXQ6IDE2MAoJCQkJCQkJdGhvdWdodHM6IDMyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBUaGlzIE5ldHdvcmsgU2NoZWR1bGVyIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBgTkVUX1NDSEVEYCwgd2hpY2ggaXMga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2UsIHdoaWNoIGFwcGVhcnMgdG8gaW52b2x2ZSB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyB3aXRoaW4gdGhlIG5ldHdvcmsgc2NoZWR1bGVyJiMzOTtzIGNvbnRyb2wgZmxvdy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgYHRjZl9ibG9ja19wdXRgIGFuZCBgdGNmX2Jsb2NrX3B1dF9leHRgLCBzaW5jZSB0aGV5IGFyZSBleHBvcnRlZCBhbmQgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIGFuZCBhcmUgbGlrZWx5IHRvIGJlIGVudHJ5IHBvaW50cyBmb3IgdGhpcyBsb2dpYy4KCkFyZSB0aGV5IGhvdC1wYXRoLCB0aG91Z2g/IExldCYjMzk7cyBzZWUuLi4gYHRjZl9ibG9ja19wdXRgIGdldHMgY2FsbGVkIGR1cmluZyBxZGlzYyBvciBjbGFzcyBkZXN0cnVjdGlvbi4gYHRjZl9ibG9ja19wdXRfZXh0YCBpcyBjYWxsZWQgd2hlbiBhIGJsb2NrIGlzIHB1dC4gVGhhdCBtZWFucyB0aGVzZSBhcmUgKmNvbnRyb2wgcGF0aCogb3BlcmF0aW9ucyByZWxhdGVkIHRvIHNldHVwIGFuZCB0ZWFyZG93biwgbm90IHRoZSBkYXRhIHBhdGggaGFuZGxpbmcgdGhlIGFjdHVhbCBwYWNrZXQgcHJvY2Vzc2luZy4gR29vZCwgdGhleSYjMzk7cmUgbm90IHBlcmZvcm1hbmNlLWNyaXRpY2FsLCBhbmQgYXJlIGxpa2VseSB0aGUgcmlnaHQgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLgoKVGhlcmVmb3JlLCBoZXJlJiMzOTtzIG15IHN1bW1hcnkgc28gZmFyOiBXZSBzaG91bGQgY29uc2lkZXIgdGhpcyBwYXRjaCBXb3J0aEZ1enppbmcuIFRoZSBGb2N1c1N5bWJvbHMgYXJlIGRlZmluaXRpdmVseSBgdGNmX2Jsb2NrX3B1dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0X2V4dGAuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGZvbGxvd2luZyBFbmFibGVDb25maWdzIGFyZSBlbmFibGVkIGR1cmluZyB0ZXN0aW5nOiBgTkVUX1NDSEVEYCwgYE5FVF9DTFNgLCBgTkVUX0NMU19CQVNJQ2AsIGBORVRfQ0xTX0FDVGAsIGBORVRfQ0xTX0JQRmAsIGBORVRfQ0xTX0ZMT1dFUmAsIGFuZCBgTkVUX0NMU19VMzJgLiBUaGUgcmF0aW9uYWxlIGlzIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGBfX3RjZl9ibG9ja19wdXRgLCBzcGVjaWZpY2FsbHkgYWx0ZXJpbmcgdGhlIHNlcXVlbmNlIG9mIG9mZmxvYWQgdW5iaW5kaW5nIHJlbGF0aXZlIHRvIGxvY2sgYWNxdWlzaXRpb24gYW5kIHJlZmNvdW50IGRlY3JlbWVudGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBhbmQgY2xhc3NpZmllciBBUEkgdGhhdCBhZmZlY3RzIGNvbnRyb2wgcGF0aCB0ZWFyZG93biwgc28gaXQgaXMgaW1wb3J0YW50IHRvIHRlc3QgdGhpcy4KCkxldCBtZSBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBUaGUgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAgZnVuY3Rpb24gaXMgc3RhdGljLiBPa2F5LCB0aGF0IGNvbmZpcm1zIHRoYXQgYHRjZl9ibG9ja19wdXRgIGFuZCBgdGNmX2Jsb2NrX3B1dF9leHRgIGFyZSB0aGUgcHJvcGVyIGVudHJ5IHBvaW50cyBmb3IgYW5hbHlzaXMgYW5kIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX0NMUyYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0JBU0lDJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQlBGJiMzNDssCiAgICAmIzM0O05FVF9DTFNfRkxPV0VSJiMzNDssCiAgICAmIzM0O05FVF9DTFNfVTMyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNmX2Jsb2NrX3B1dCYjMzQ7LAogICAgJiMzNDt0Y2ZfYmxvY2tfcHV0X2V4dCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGluIGBfX3RjZl9ibG9ja19wdXRgLCB1bmJpbmRpbmcgdGhlIG9mZmxvYWQgYmVmb3JlIHRha2luZyB0aGUgYmxvY2sgbG9jayBhbmQgZGVjcmVtZW50aW5nIHRoZSByZWZjb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZy9jbGFzc2lmaWVyIEFQSSBhbmQgYWZmZWN0cyBjb250cm9sIHBhdGggdGVhcmRvd24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQkFTSUMmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkVUX0NMU19CUEYmIzM0OywKICAgICYjMzQ7TkVUX0NMU19GTE9XRVImIzM0OywKICAgICYjMzQ7TkVUX0NMU19VMzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfYmxvY2tfcHV0JiMzNDssCiAgICAmIzM0O3RjZl9ibG9ja19wdXRfZXh0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgaW4gYF9fdGNmX2Jsb2NrX3B1dGAsIHVuYmluZGluZyB0aGUgb2ZmbG9hZCBiZWZvcmUgdGFraW5nIHRoZSBibG9jayBsb2NrIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nL2NsYXNzaWZpZXIgQVBJIGFuZCBhZmZlY3RzIGNvbnRyb2wgcGF0aCB0ZWFyZG93bi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE0OjQzLjU4NTY3NjkzNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzOTYzNzk1MjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU1wiLFxuICAgIFwiTkVUX0NMU19CQVNJQ1wiLFxuICAgIFwiTkVUX0NMU19BQ1RcIixcbiAgICBcIk5FVF9DTFNfQlBGXCIsXG4gICAgXCJORVRfQ0xTX0ZMT1dFUlwiLFxuICAgIFwiTkVUX0NMU19VMzJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfYmxvY2tfcHV0XCIsXG4gICAgXCJ0Y2ZfYmxvY2tfcHV0X2V4dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgaW4gYF9fdGNmX2Jsb2NrX3B1dGAsIHVuYmluZGluZyB0aGUgb2ZmbG9hZCBiZWZvcmUgdGFraW5nIHRoZSBibG9jayBsb2NrIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nL2NsYXNzaWZpZXIgQVBJIGFuZCBhZmZlY3RzIGNvbnRyb2wgcGF0aCB0ZWFyZG93bi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTQ6NDMuNTg1NjgzMjc1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODQ2OTA1ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkOTgxNzNmNzFhOTE4YmJiYjRhNDJmNzY4MjdjNTVmZDQyNDRiMWE2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMDA6MTQ6NDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc19hcGkuYyBiL25ldC9zY2hlZC9jbHNfYXBpLmNcXG5pbmRleCBmZWU0NTI0YWRjOThlLi5kM2IyNTA2ZDg3Y2Y0IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9jbHNfYXBpLmNcXG4rKysgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXFxuQEAgLTEzMTIsNiArMTMxMiw5IEBAIHN0YXRpYyBzdHJ1Y3QgdGNmX2Jsb2NrICpfX3RjZl9ibG9ja19maW5kKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IFFkaXNjICpxLFxcbiBzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG4gXFx0XFx0XFx0ICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpLCBib29sIHJ0bmxfaGVsZClcXG4ge1xcbitcXHRpZiAocSlcXG4rXFx0XFx0dGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKGJsb2NrLCBxLCBlaSk7XFxuK1xcbiBcXHRpZiAocmVmY291bnRfZGVjX2FuZF9tdXRleF9sb2NrKFxcdTAwMjZibG9jay1cXHUwMDNlcmVmY250LCBcXHUwMDI2YmxvY2stXFx1MDAzZWxvY2spKSB7XFxuIFxcdFxcdC8qIEZsdXNoaW5nL3B1dHRpbmcgYWxsIGNoYWlucyB3aWxsIGNhdXNlIHRoZSBibG9jayB0byBiZVxcbiBcXHRcXHQgKiBkZWFsbG9jYXRlZCB3aGVuIGxhc3QgY2hhaW4gaXMgZnJlZWQuIEhvd2V2ZXIsIGlmIGNoYWluX2xpc3RcXG5AQCAtMTMyNSwxNSArMTMyOCwxMCBAQCBzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG4gXFx0XFx0aWYgKHRjZl9ibG9ja19zaGFyZWQoYmxvY2spKVxcbiBcXHRcXHRcXHR0Y2ZfYmxvY2tfcmVtb3ZlKGJsb2NrLCBibG9jay1cXHUwMDNlbmV0KTtcXG4gXFxuLVxcdFxcdGlmIChxKVxcbi1cXHRcXHRcXHR0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKTtcXG4tXFxuIFxcdFxcdGlmIChmcmVlX2Jsb2NrKVxcbiBcXHRcXHRcXHR0Y2ZfYmxvY2tfZGVzdHJveShibG9jayk7XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0dGNmX2Jsb2NrX2ZsdXNoX2FsbF9jaGFpbnMoYmxvY2ssIHJ0bmxfaGVsZCk7XFxuLVxcdH0gZWxzZSBpZiAocSkge1xcbi1cXHRcXHR0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKTtcXG4gXFx0fVxcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMDoxNDo0My45NzExMDExOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUzNTc4MzYzMTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU1wiLFxuICAgIFwiTkVUX0NMU19CQVNJQ1wiLFxuICAgIFwiTkVUX0NMU19BQ1RcIixcbiAgICBcIk5FVF9DTFNfQlBGXCIsXG4gICAgXCJORVRfQ0xTX0ZMT1dFUlwiLFxuICAgIFwiTkVUX0NMU19VMzJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfYmxvY2tfcHV0XCIsXG4gICAgXCJ0Y2ZfYmxvY2tfcHV0X2V4dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgaW4gYF9fdGNmX2Jsb2NrX3B1dGAsIHVuYmluZGluZyB0aGUgb2ZmbG9hZCBiZWZvcmUgdGFraW5nIHRoZSBibG9jayBsb2NrIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nL2NsYXNzaWZpZXIgQVBJIGFuZCBhZmZlY3RzIGNvbnRyb2wgcGF0aCB0ZWFyZG93bi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDk4MTczZjcxYTkxOGJiYmI0YTQyZjc2ODI3YzU1ZmQ0MjQ0YjFhNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMDA6MTQ6NDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvY2xzX2FwaS5jIGIvbmV0L3NjaGVkL2Nsc19hcGkuY1xuaW5kZXggZmVlNDUyNGFkYzk4ZS4uZDNiMjUwNmQ4N2NmNCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9jbHNfYXBpLmNcbisrKyBiL25ldC9zY2hlZC9jbHNfYXBpLmNcbkBAIC0xMzEyLDYgKzEzMTIsOSBAQCBzdGF0aWMgc3RydWN0IHRjZl9ibG9jayAqX190Y2ZfYmxvY2tfZmluZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBRZGlzYyAqcSxcbiBzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcbiBcdFx0XHQgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWksIGJvb2wgcnRubF9oZWxkKVxuIHtcbitcdGlmIChxKVxuK1x0XHR0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKTtcbitcbiBcdGlmIChyZWZjb3VudF9kZWNfYW5kX211dGV4X2xvY2soXHUwMDI2YmxvY2stXHUwMDNlcmVmY250LCBcdTAwMjZibG9jay1cdTAwM2Vsb2NrKSkge1xuIFx0XHQvKiBGbHVzaGluZy9wdXR0aW5nIGFsbCBjaGFpbnMgd2lsbCBjYXVzZSB0aGUgYmxvY2sgdG8gYmVcbiBcdFx0ICogZGVhbGxvY2F0ZWQgd2hlbiBsYXN0IGNoYWluIGlzIGZyZWVkLiBIb3dldmVyLCBpZiBjaGFpbl9saXN0XG5AQCAtMTMyNSwxNSArMTMyOCwxMCBAQCBzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcbiBcdFx0aWYgKHRjZl9ibG9ja19zaGFyZWQoYmxvY2spKVxuIFx0XHRcdHRjZl9ibG9ja19yZW1vdmUoYmxvY2ssIGJsb2NrLVx1MDAzZW5ldCk7XG4gXG4tXHRcdGlmIChxKVxuLVx0XHRcdHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChibG9jaywgcSwgZWkpO1xuLVxuIFx0XHRpZiAoZnJlZV9ibG9jaylcbiBcdFx0XHR0Y2ZfYmxvY2tfZGVzdHJveShibG9jayk7XG4gXHRcdGVsc2VcbiBcdFx0XHR0Y2ZfYmxvY2tfZmx1c2hfYWxsX2NoYWlucyhibG9jaywgcnRubF9oZWxkKTtcbi1cdH0gZWxzZSBpZiAocSkge1xuLVx0XHR0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKTtcbiBcdH1cbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMDoxNDo0My45NzExMDI4ODlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTk0Nzg3NjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIENsYXNzaWZpZXIgQVBJIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L3NjaGVkL2Nsc19hcGkuY2AuIEl0IHNlZW1zIHRoZXkndmUgbWFkZSBhIGNoYW5nZSB0byB0aGUgYF9fdGNmX2Jsb2NrX3B1dGAgZnVuY3Rpb24sIGFuZCB0aGUgY29yZSBvZiB0aGUgYWx0ZXJhdGlvbiBpcyBtb3ZpbmcgdGhlIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKWAgY2FsbC4gUmlnaHQgbm93LCBpdCdzICppbnNpZGUqIHRoZSBgcmVmY291bnRfZGVjX2FuZF9tdXRleF9sb2NrYCBibG9jaywgYnV0IHRoZSBwYXRjaCBzaGlmdHMgaXQgdG8gdGhlICpiZWdpbm5pbmcqIG9mIHRoZSBmdW5jdGlvbiwgcHV0dGluZyBpdCBiZWZvcmUgdGhhdCByZWZjb3VudCBkZWNyZW1lbnQgYW5kIG11dGV4IG9wZXJhdGlvbi4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgX190Y2ZfYmxvY2tfcHV0YCBpdHNlbGYgd2l0aGluIGBuZXQvc2NoZWQvY2xzX2FwaS5jYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgY2hhbmdlIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9uIGhvdyB0aGUgY2xhc3NpZmllciBibG9ja3MgYXJlIGhhbmRsZWQgZHVyaW5nIHRoZWlyIHJlbGVhc2UuIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgKndoeSogdGhleSdyZSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhbmQgdGhlIGltcGFjdCBvbiBjb25jdXJyZW5jeSBvciByZXNvdXJjZSBtYW5hZ2VtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjk0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTQ6NDcuMTY1ODkzMTU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjYxNzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fdGNmX2Jsb2NrX3B1dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9jbHNfYXBpLmM9MTI3NT1zdGF0aWMgc3RydWN0IHRjZl9ibG9jayAqX190Y2ZfYmxvY2tfZmluZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTMxMS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjEzMTI6c3RhdGljIHZvaWQgX190Y2ZfYmxvY2tfcHV0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMzEzLVxcdFxcdFxcdCAgICBzdHJ1Y3QgdGNmX2Jsb2NrX2V4dF9pbmZvICplaSwgYm9vbCBydG5sX2hlbGQpXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTEzMzg9c3RhdGljIHZvaWQgdGNmX2Jsb2NrX3JlZmNudF9wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIGJvb2wgcnRubF9oZWxkKVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTMzOS17XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMzQwOlxcdF9fdGNmX2Jsb2NrX3B1dChibG9jaywgTlVMTCwgTlVMTCwgcnRubF9oZWxkKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTEzNDEtfVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0xNTQ4PXZvaWQgdGNmX2Jsb2NrX3B1dF9leHQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU1OS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE1NjA6XFx0X190Y2ZfYmxvY2tfcHV0KGJsb2NrLCBxLCBlaSwgdHJ1ZSk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTYxLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTQ6NDcuMjA4NTU5MDk0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyMTUzMjkwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYTpcblxuKipEZWNvbnN0cnVjdGluZyBhIEZ1bmN0aW9uIENhbGwgRmxvdyoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBfX3RjZl9ibG9ja19wdXRgLiBUaGF0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0J3MgbGlrZWx5IGFuIGludGVybmFsIHV0aWxpdHkuIFRoZSBmYWN0IHRoYXQgaXQncyBjYWxsZWQgYnkgYHRjZl9ibG9ja19yZWZjbnRfcHV0YCBhbmQgYHRjZl9ibG9ja19wdXRfZXh0YCBpcyB0aGUga2V5LiBJIGtub3cgdGhlc2UgZnVuY3Rpb25zIGFyZSByZWxhdGVkIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCBkYXRhIGZsb3cuIGB0Y2ZfYmxvY2tfcHV0X2V4dGAgYmVpbmcgZWl0aGVyIGV4cG9ydGVkIG9yIG5vbi1zdGF0aWMgaXMgaW50ZXJlc3RpbmcgYXMgdGhpcyBpbXBsaWVzIGl0IGhhcyBicm9hZGVyIHZpc2liaWxpdHkuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHNob3VsZCBmb2N1cyBteSBhdHRlbnRpb24gb24gdW5kZXJzdGFuZGluZyB0aGUgYmVoYXZpb3IgYW5kIGltcGFjdCBvZiBgdGNmX2Jsb2NrX3B1dF9leHRgIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSB1bmRlcmx5aW5nIGBfX3RjZl9ibG9ja19wdXRgIGZ1bmN0aW9uLiBMZXQncyBkaWcgaW50byBgdGNmX2Jsb2NrX3B1dF9leHRgIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDEyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTQ6NTAuNTMwMDkzOTQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjY3MTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjZl9ibG9ja19wdXRfZXh0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9jbHNfYXBpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL2Nsc19hcGkuYz0xNTQzPUVYUE9SVF9TWU1CT0wodGNmX2Jsb2NrX2dldCk7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NDctICovXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTQ4OnZvaWQgdGNmX2Jsb2NrX3B1dF9leHQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NDktXFx0XFx0ICAgICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTYxLX1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE1NjI6RVhQT1JUX1NZTUJPTCh0Y2ZfYmxvY2tfcHV0X2V4dCk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTYzLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTU2ND12b2lkIHRjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2spXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjktXFx0XFx0cmV0dXJuO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU3MDpcXHR0Y2ZfYmxvY2tfcHV0X2V4dChibG9jaywgYmxvY2stXFx1MDAzZXEsIFxcdTAwMjZlaSk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTcxLX1cXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9NDAwNT12b2lkIHRjZl9xZXZlbnRfZGVzdHJveShzdHJ1Y3QgdGNmX3FldmVudCAqcWUsIHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy00MDA3LVxcdGlmIChxZS1cXHUwMDNlaW5mby5ibG9ja19pbmRleClcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjQwMDg6XFx0XFx0dGNmX2Jsb2NrX3B1dF9leHQocWUtXFx1MDAzZWJsb2NrLCBzY2gsIFxcdTAwMjZxZS1cXHUwMDNlaW5mbyk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy00MDA5LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTQ6NTAuNTcyNzY2NTc3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc5MzA4MTY4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqRXhhbWluaW5nIEJsb2NrIFBsYWNlbWVudCBSb3V0aW5lcyoqXG5cbkFscmlnaHQsIHNvIGB0Y2ZfYmxvY2tfcHV0X2V4dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0YCBhcmUgYm90aCBleHBsaWNpdGx5IGV4cG9ydGVkLiBHb29kLCB0aGF0IG1lYW5zIHRoZXkncmUgaW50ZW5kZWQgZm9yIHVzZSBvdXRzaWRlIHRoZWlyIG1vZHVsZS4gTm93LCBnaXZlbiB0aGF0LCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGVsdmUgaW50byB0aGVpciB1c2FnZSBwYXR0ZXJucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoZXJlKiBhbmQgKmhvdyogdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyBlbXBsb3llZC4gTGV0J3Mgc2VlIGhvdyB0aGV5J3JlIGJlaW5nIHV0aWxpemVkLiBJIG5lZWQgdG8gZmluZCBvdXQgd2hlcmUgdGhleSdyZSBiZWluZyBjYWxsZWQgZnJvbSBhbmQgdGhlIGNvbnRleHRzIHN1cnJvdW5kaW5nIHRob3NlIGNhbGxzLiBBcmUgdGhlcmUgYW55IHN1YnRsZXRpZXMgaW4gdGhlaXIgYXBwbGljYXRpb24gdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZj8gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NTYsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMDoxNDo1My4zNjU4NTA0NzhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU0NzAwODcwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfYmxvY2tfcHV0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9wa3RfY2xzLmg9NTg9aW50IHRjZl9ibG9ja19nZXRfZXh0KHN0cnVjdCB0Y2ZfYmxvY2sgKipwX2Jsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXFxuLS1cXG5pbmNsdWRlL25ldC9wa3RfY2xzLmgtNjAtXFx0XFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5pbmNsdWRlL25ldC9wa3RfY2xzLmg6NjE6dm9pZCB0Y2ZfYmxvY2tfcHV0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrKTtcXG5pbmNsdWRlL25ldC9wa3RfY2xzLmg6NjI6dm9pZCB0Y2ZfYmxvY2tfcHV0X2V4dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxcbmluY2x1ZGUvbmV0L3BrdF9jbHMuaC02My1cXHRcXHQgICAgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWkpO1xcbi0tXFxuaW5jbHVkZS9uZXQvcGt0X2Nscy5oPTEzMD1pbnQgdGNmX2Jsb2NrX2dldF9leHQoc3RydWN0IHRjZl9ibG9jayAqKnBfYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbmluY2x1ZGUvbmV0L3BrdF9jbHMuaC0xMzYtXFxuaW5jbHVkZS9uZXQvcGt0X2Nscy5oOjEzNzpzdGF0aWMgaW5saW5lIHZvaWQgdGNmX2Jsb2NrX3B1dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaylcXG5pbmNsdWRlL25ldC9wa3RfY2xzLmgtMTM4LXtcXG4tLVxcbmluY2x1ZGUvbmV0L3BrdF9jbHMuaD0xNDE9c3RhdGljIGlubGluZVxcbmluY2x1ZGUvbmV0L3BrdF9jbHMuaDoxNDI6dm9pZCB0Y2ZfYmxvY2tfcHV0X2V4dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxcbmluY2x1ZGUvbmV0L3BrdF9jbHMuaC0xNDMtXFx0XFx0ICAgICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0xMjc1PXN0YXRpYyBzdHJ1Y3QgdGNmX2Jsb2NrICpfX3RjZl9ibG9ja19maW5kKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IFFkaXNjICpxLFxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMzExLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTMxMjpzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTEzMTMtXFx0XFx0XFx0ICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpLCBib29sIHJ0bmxfaGVsZClcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTMzOD1zdGF0aWMgdm9pZCB0Y2ZfYmxvY2tfcmVmY250X3B1dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgYm9vbCBydG5sX2hlbGQpXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMzM5LXtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjEzNDA6XFx0X190Y2ZfYmxvY2tfcHV0KGJsb2NrLCBOVUxMLCBOVUxMLCBydG5sX2hlbGQpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTM0MS19XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE1NDM9RVhQT1JUX1NZTUJPTCh0Y2ZfYmxvY2tfZ2V0KTtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU0Ny0gKi9cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE1NDg6dm9pZCB0Y2ZfYmxvY2tfcHV0X2V4dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU0OS1cXHRcXHQgICAgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWkpXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NTktXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTYwOlxcdF9fdGNmX2Jsb2NrX3B1dChibG9jaywgcSwgZWksIHRydWUpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU2MS19XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTYyOkVYUE9SVF9TWU1CT0wodGNmX2Jsb2NrX3B1dF9leHQpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU2My1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE1NjQ6dm9pZCB0Y2ZfYmxvY2tfcHV0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrKVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU2NS17XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjktXFx0XFx0cmV0dXJuO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU3MDpcXHR0Y2ZfYmxvY2tfcHV0X2V4dChibG9jaywgYmxvY2stXFx1MDAzZXEsIFxcdTAwMjZlaSk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTcxLX1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NzItXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTczOkVYUE9SVF9TWU1CT0wodGNmX2Jsb2NrX3B1dCk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTc0LVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz00MDA1PXZvaWQgdGNmX3FldmVudF9kZXN0cm95KHN0cnVjdCB0Y2ZfcWV2ZW50ICpxZSwgc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQwMDctXFx0aWYgKHFlLVxcdTAwM2VpbmZvLmJsb2NrX2luZGV4KVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6NDAwODpcXHRcXHR0Y2ZfYmxvY2tfcHV0X2V4dChxZS1cXHUwMDNlYmxvY2ssIHNjaCwgXFx1MDAyNnFlLVxcdTAwM2VpbmZvKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQwMDktfVxcbi0tXFxubmV0L3NjaGVkL3NjaF9jYWtlLmM9MjgwNz1zdGF0aWMgdm9pZCBjYWtlX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Nha2UuYy0yODExLVxcdHFkaXNjX3dhdGNoZG9nX2NhbmNlbChcXHUwMDI2cS1cXHUwMDNld2F0Y2hkb2cpO1xcbm5ldC9zY2hlZC9zY2hfY2FrZS5jOjI4MTI6XFx0dGNmX2Jsb2NrX3B1dChxLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9jYWtlLmMtMjgxMy1cXHRrdmZyZWUocS1cXHUwMDNldGlucyk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jPTQ0Mj1zdGF0aWMgdm9pZCBkcnJfZGVzdHJveV9xZGlzYyhzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDQ4LVxcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDQ5OlxcdHRjZl9ibG9ja19wdXQocS1cXHUwMDNlYmxvY2spO1xcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDUwLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MTEyNj1zdGF0aWMgdm9pZCBkdWFscGkyX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTMzLVxcdFxcdHFkaXNjX3B1dChxLVxcdTAwM2VsX3F1ZXVlKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTM0OlxcdHRjZl9ibG9ja19wdXQocS1cXHUwMDNldGNmX2Jsb2NrKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTM1LX1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZXRzLmM9NzMyPXN0YXRpYyB2b2lkIGV0c19xZGlzY19kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9ldHMuYy03MzctXFx0ZXRzX29mZmxvYWRfZGVzdHJveShzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZXRzLmM6NzM4OlxcdHRjZl9ibG9ja19wdXQocS1cXHUwMDNlYmxvY2spO1xcbm5ldC9zY2hlZC9zY2hfZXRzLmMtNzM5LVxcdGZvciAoYmFuZCA9IDA7IGJhbmQgXFx1MDAzYyBxLVxcdTAwM2VuYmFuZHM7IGJhbmQrKylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYz00OTk9c3RhdGljIHZvaWQgZnFfY29kZWxfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYy01MDItXFxubmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jOjUwMzpcXHR0Y2ZfYmxvY2tfcHV0KHEtXFx1MDAzZWJsb2NrKTtcXG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmMtNTA0LVxcdGt2ZnJlZShxLVxcdTAwM2ViYWNrbG9ncyk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jPTU1ND1zdGF0aWMgdm9pZCBmcV9waWVfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNTU3LVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6NTU4OlxcdHRjZl9ibG9ja19wdXQocS1cXHUwMDNlYmxvY2spO1xcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNTU5LVxcdHEtXFx1MDAzZXBfcGFyYW1zLnR1cGRhdGUgPSAwO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9oZnNjLmM9OTEyPWhmc2NfY2hhbmdlX2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgY2xhc3NpZCwgdTMyIHBhcmVudGlkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTA0My1cXHRcXHRpZiAoZXJyKSB7XFxubmV0L3NjaGVkL3NjaF9oZnNjLmM6MTA0NDpcXHRcXHRcXHR0Y2ZfYmxvY2tfcHV0KGNsLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTA0NS1cXHRcXHRcXHRrZnJlZShjbCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2hmc2MuYz0xMDkxPWhmc2NfZGVzdHJveV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGhmc2NfY2xhc3MgKmNsKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTA5NC1cXG5uZXQvc2NoZWQvc2NoX2hmc2MuYzoxMDk1OlxcdHRjZl9ibG9ja19wdXQoY2wtXFx1MDAzZWJsb2NrKTtcXG5uZXQvc2NoZWQvc2NoX2hmc2MuYy0xMDk2LVxcdHFkaXNjX3B1dChjbC1cXHUwMDNlcWRpc2MpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9oZnNjLmM9MTQ5OD1oZnNjX2Rlc3Ryb3lfcWRpc2Moc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2hmc2MuYy0xNTA2LVxcdFxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KGNsLCBcXHUwMDI2cS1cXHUwMDNlY2xoYXNoLmhhc2hbaV0sIGNsX2NvbW1vbi5obm9kZSkge1xcbm5ldC9zY2hlZC9zY2hfaGZzYy5jOjE1MDc6XFx0XFx0XFx0dGNmX2Jsb2NrX3B1dChjbC1cXHUwMDNlYmxvY2spO1xcbm5ldC9zY2hlZC9zY2hfaGZzYy5jLTE1MDgtXFx0XFx0XFx0Y2wtXFx1MDAzZWJsb2NrID0gTlVMTDtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaHRiLmM9MTYwNz1zdGF0aWMgdm9pZCBodGJfZGVzdHJveV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGh0Yl9jbGFzcyAqY2wpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTE2MTMtXFx0Z2VuX2tpbGxfZXN0aW1hdG9yKFxcdTAwMjZjbC1cXHUwMDNlcmF0ZV9lc3QpO1xcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MTYxNDpcXHR0Y2ZfYmxvY2tfcHV0KGNsLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9odGIuYy0xNjE1LVxcdGtmcmVlKGNsKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaHRiLmM9MTYxOD1zdGF0aWMgdm9pZCBodGJfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaHRiLmMtMTYzNC1cXHQgKi9cXG5uZXQvc2NoZWQvc2NoX2h0Yi5jOjE2MzU6XFx0dGNmX2Jsb2NrX3B1dChxLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9odGIuYy0xNjM2LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9odGIuYy0xNjM4LVxcdFxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KGNsLCBcXHUwMDI2cS1cXHUwMDNlY2xoYXNoLmhhc2hbaV0sIGNvbW1vbi5obm9kZSkge1xcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MTYzOTpcXHRcXHRcXHR0Y2ZfYmxvY2tfcHV0KGNsLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9odGIuYy0xNjQwLVxcdFxcdFxcdGNsLVxcdTAwM2VibG9jayA9IE5VTEw7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTE3NjI9c3RhdGljIGludCBodGJfY2hhbmdlX2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgY2xhc3NpZCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaHRiLmMtMjA2OC1lcnJfYmxvY2tfcHV0Olxcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MjA2OTpcXHR0Y2ZfYmxvY2tfcHV0KGNsLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9odGIuYy0yMDcwLVxcdGtmcmVlKGNsKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaW5ncmVzcy5jPTExMj1zdGF0aWMgdm9pZCBpbmdyZXNzX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0xMjAtXFxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM6MTIxOlxcdHRjZl9ibG9ja19wdXRfZXh0KHEtXFx1MDAzZWJsb2NrLCBzY2gsIFxcdTAwMjZxLVxcdTAwM2VibG9ja19pbmZvKTtcXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0xMjItXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYz0yOTI9c3RhdGljIHZvaWQgY2xzYWN0X2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0zMDAtXFxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM6MzAxOlxcdHRjZl9ibG9ja19wdXRfZXh0KHEtXFx1MDAzZWluZ3Jlc3NfYmxvY2ssIHNjaCwgXFx1MDAyNnEtXFx1MDAzZWluZ3Jlc3NfYmxvY2tfaW5mbyk7XFxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM6MzAyOlxcdHRjZl9ibG9ja19wdXRfZXh0KHEtXFx1MDAzZWVncmVzc19ibG9jaywgc2NoLCBcXHUwMDI2cS1cXHUwMDNlZWdyZXNzX2Jsb2NrX2luZm8pO1xcbm5ldC9zY2hlZC9zY2hfaW5ncmVzcy5jLTMwMy1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXVsdGlxLmM9MTU5PW11bHRpcV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy0xNjMtXFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYzoxNjQ6XFx0dGNmX2Jsb2NrX3B1dChxLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy0xNjUtXFx0Zm9yIChiYW5kID0gMDsgYmFuZCBcXHUwMDNjIHEtXFx1MDAzZWJhbmRzOyBiYW5kKyspXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3ByaW8uYz0xNjU9cHJpb19kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9wcmlvLmMtMTY5LVxcbm5ldC9zY2hlZC9zY2hfcHJpby5jOjE3MDpcXHR0Y2ZfYmxvY2tfcHV0KHEtXFx1MDAzZWJsb2NrKTtcXG5uZXQvc2NoZWQvc2NoX3ByaW8uYy0xNzEtXFx0cHJpb19vZmZsb2FkKHNjaCwgTlVMTCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3FmcS5jPTE0OTQ9c3RhdGljIHZvaWQgcWZxX2Rlc3Ryb3lfcWRpc2Moc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3FmcS5jLTE1MDAtXFxubmV0L3NjaGVkL3NjaF9xZnEuYzoxNTAxOlxcdHRjZl9ibG9ja19wdXQocS1cXHUwMDNlYmxvY2spO1xcbm5ldC9zY2hlZC9zY2hfcWZxLmMtMTUwMi1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ZiLmM9NDc4PXN0YXRpYyB2b2lkIHNmYl9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9zZmIuYy00ODEtXFxubmV0L3NjaGVkL3NjaF9zZmIuYzo0ODI6XFx0dGNmX2Jsb2NrX3B1dChxLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9zZmIuYy00ODMtXFx0cWRpc2NfcHV0KHEtXFx1MDAzZXFkaXNjKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ZxLmM9NzY1PXN0YXRpYyB2b2lkIHNmcV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9zZnEuYy03NjgtXFxubmV0L3NjaGVkL3NjaF9zZnEuYzo3Njk6XFx0dGNmX2Jsb2NrX3B1dChxLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9zZnEuYy03NzAtXFx0V1JJVEVfT05DRShxLVxcdTAwM2VwZXJ0dXJiX3BlcmlvZCwgMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE0OjU1LjkxMjg2MzIxM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4ODU0NTU4MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB0Y2ZfYmxvY2tfcHV0IE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBfX3RjZl9ibG9ja19wdXRgIGluIGBuZXQvc2NoZWQvY2xzX2FwaS5jYC4gSXQncyBhIGtleSBmdW5jdGlvbiwgY2FsbGVkIGJ5IGJvdGggYHRjZl9ibG9ja19wdXRgIGFuZCBgdGNmX2Jsb2NrX3B1dF9leHRgLCBzbyB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjYXJlZnVsbHkuIFRoZSBjcnVjaWFsIGNoYW5nZSBoZXJlIGlzIHRoZSBtb3ZlbWVudCBvZiBgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKGJsb2NrLCBxLCBlaSlgIHRvIHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24sIHJpZ2h0IGJlZm9yZSBhbnl0aGluZyBlbHNlLlxuXG5Jbml0aWFsbHksIGl0IHdhcyBpbnNpZGUgYSBjb25kaXRpb25hbCBibG9jayBjb250cm9sbGVkIGJ5IGByZWZjb3VudF9kZWNfYW5kX211dGV4X2xvY2soXHUwMDI2YmxvY2stXHUwMDNlcmVmY250LCBcdTAwMjZibG9jay1cdTAwM2Vsb2NrKWAuIEl0IHdhcyBhbHNvIGluc2lkZSBhbiBgZWxzZSBpZiAocSlgIGJsb2NrLiBOb3csIGl0J3MgdW5jb25kaXRpb25hbGx5IGNhbGxlZCBpZiBgcWAgaXMgbm90IE5VTEwuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCB0aGlzIHNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSByZW9yZGVyaW5nLCBidXQgSSdtIHRyeWluZyB0byBzZWUgaWYgdGhlcmUgaXMgbW9yZSB0byBpdC4gQmVmb3JlLCB0aGUgdW5iaW5kaW5nIGhhcHBlbmVkIGVpdGhlciB3aGVuIHRoZSByZWZlcmVuY2UgY291bnQgd2VudCB0byB6ZXJvIChpbnNpZGUgdGhlIGBpZmApICpvciogd2hlbiBgcWAgd2FzIHByZXNlbnQgYnV0IHRoZSByZWZjb3VudCBkaWRuJ3QgZHJvcCB0byB6ZXJvLiBUaGUgZGlmZiBzaG93cyBpdCB3YXMgYWx3YXlzIGRvaW5nIHRoZSB1bmJpbmQgaWYgYHFgIHdhcyBub3QgTlVMTC5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucy4gYHJlZmNvdW50X2RlY19hbmRfbXV0ZXhfbG9ja2AgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBvbmx5ICphY3F1aXJlcyogdGhlIGxvY2sgaWYgdGhlIHJlZmNvdW50ICpkcm9wcyogdG8gemVyby4gT3RoZXJ3aXNlLCBpdCBqdXN0IGRlY3JlbWVudHMuXG5cblNvIGJlZm9yZSwgd2hlbiB0aGUgcmVmY291bnQgKmRpZCogZ28gdG8gemVybywgd2UnZCBhY3F1aXJlIHRoZSBsb2NrLCB0aGVuIGNhbGwgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAsIGFuZCB0aGVuIHByb2NlZWQgd2l0aCBkZXN0cnVjdGlvbiBvciBmbHVzaGluZy4gTm93LCB3ZSdyZSB1bmJpbmRpbmcgKmJlZm9yZSogdGhlIHJlZmNvdW50IGlzIGRlY3JlbWVudGVkLCBhbmQgY3J1Y2lhbGx5LCAqYmVmb3JlKiB3ZSBwb3RlbnRpYWxseSBhY3F1aXJlIHRoZSBsb2NrLiBUaGlzIHNlZW1zIGxpa2UgYSBjaGFuZ2UgaW4gc3luY2hyb25pemF0aW9uIHN0cmF0ZWd5LiBXZSdyZSBkZWNvdXBsaW5nIHRoZSBvZmZsb2FkIHVuYmluZGluZyBmcm9tIHRoZSBsb2NrIGFjcXVpc2l0aW9uLlxuXG5UaGlzIGlzIGxpa2VseSBhIHNhZmV0eSBpbXByb3ZlbWVudC4gSXQgbGlrZWx5IGF2b2lkcyBhIHBvdGVudGlhbCBkZWFkbG9jaywgb3IgcG90ZW50aWFsbHkgZWxpbWluYXRlcyBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLiBUaGlzIGlzIGJlY2F1c2Ugd2UgY291bGQgYmUgZnJlZWluZyBzb21ldGhpbmcgYmVmb3JlIGl0IGlzIHVuYm91bmQuIE9yIGl0IGp1c3QgY2hhbmdlcyB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucy4gSSBuZWVkIHRvIGRpZyBpbnRvIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRgIHRvIHVuZGVyc3RhbmQgdGhlIGRldGFpbHMuIEl0J3MgcHJvYmFibHkgcmVsYXRlZCB0byBlbnN1cmluZyB0aGF0IHRoZSBvZmZsb2FkIG9wZXJhdGlvbnMgYXJlIGNvbXBsZXRlZCAqYmVmb3JlKiB3ZSBwb3RlbnRpYWxseSBzdGFydCBmcmVlaW5nIHJlc291cmNlcyBvciBtb2RpZnlpbmcgdGhlIGJsb2NrJ3Mgc3RhdGUgaW4gYSB3YXkgdGhhdCB0aGUgb2ZmbG9hZCBtZWNoYW5pc20gbWlnaHQgcmVseSBvbi4gVGhpcyBpcyBsaWtlbHkgdGhlIGNydWNpYWwgcG9pbnQuIExldCdzIHNlZSBpZiB0aGUgY29kZSBjb21tZW50IGV4cGxhaW5zIGFueXRoaW5nIGFib3V0IHRoZSByZWFzb24gZm9yIHRoZSBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczODUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTU6MDUuNzk4MzIxODU1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY0NzYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2Nsc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jPTg1NT1zdGF0aWMgaW50IHRjZl9ibG9ja19vZmZsb2FkX2JpbmQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtODk0LVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6ODk1OnN0YXRpYyB2b2lkIHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtODk2LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWkpXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTEzMTI9c3RhdGljIHZvaWQgX190Y2ZfYmxvY2tfcHV0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTEzMTUtXFx0aWYgKHEpXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMzE2OlxcdFxcdHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChibG9jaywgcSwgZWkpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTMxNy1cXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTQ2Mj1pbnQgdGNmX2Jsb2NrX2dldF9leHQoc3RydWN0IHRjZl9ibG9jayAqKnBfYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTUxMS1lcnJfZGV2X2luc2VydDpcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE1MTI6XFx0dGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKGJsb2NrLCBxLCBlaSk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTEzLWVycl9ibG9ja19vZmZsb2FkX2JpbmQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE1OjA1Ljg0Mjk3Njk5NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjg5MzAzODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kYCBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgdW5iaW5kaW5nIHByb2Nlc3Mgd29ya3Mgd2l0aGluIHRoZSBsYXJnZXIgZnJhbWV3b3JrLiBJIGtub3cgdGhlIGNvcmUgY29uY2VwdCBpcyB0aGUgcmVtb3ZhbCBvZiB0aGUgc3BlY2lmaWMgb2ZmbG9hZCBhc3NvY2lhdGlvbiwgYnV0IHRoZSBudWFuY2VzIGFyZSB3aGF0IEknbSBhZnRlci4gV2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkPyBIb3cgZG9lcyBpdCBpbnRlcmFjdCB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBpZiBhdCBhbGw/IEkgbmVlZCB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGFuZCBsb2NraW5nIHN0cmF0ZWdpZXMgaGVyZSwgZXNwZWNpYWxseSBpbiBhIG11bHRpLXRocmVhZGVkIG9yIGNvbmN1cnJlbnQgZW52aXJvbm1lbnQuIEFueSBwb3RlbnRpYWwgcmVzb3VyY2UgbGVha3M/IFRoaXMgZnVuY3Rpb24gaXMgY3JpdGljYWwgZm9yIG1haW50YWluaW5nIHN5c3RlbSBzdGFiaWxpdHkuIEkgbmVlZCB0byBmdWxseSBncmFzcCBpdHMgcm9sZSBpbiB0ZWFyaW5nIGRvd24gdGhlIG9mZmxvYWQgc2V0dXAuIEknbSBsb29raW5nIGZvciB0aGUgc3VidGxlIGRldGFpbHMsIHRoZSBlcnJvciBoYW5kbGluZywgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyB1bmJpbmQgb3BlcmF0aW9uIG9uIG90aGVyIHBhcnRzIG9mIHRoZSB0cmFmZmljIGNvbnRyb2wgc3RhY2suIFVsdGltYXRlbHksIEkgd2FudCB0byBjb25maXJtIGl0J3MgaW1wbGVtZW50ZWQgY29ycmVjdGx5IGFuZCBlZmZpY2llbnRseS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI5MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE1OjA5LjEzMjI4Mzc4OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzYwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NjaGVkL2Nsc19hcGkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4OTUsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4OTU6XFx0c3RhdGljIHZvaWQgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXFxuIDg5NjpcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpKVxcbiA4OTc6XFx0e1xcbiA4OTg6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHEtXFx1MDAzZWRldl9xdWV1ZS1cXHUwMDNlZGV2O1xcbiA4OTk6XFx0XFx0aW50IGVycjtcXG4gOTAwOlxcdFxcbiA5MDE6XFx0XFx0ZG93bl93cml0ZShcXHUwMDI2YmxvY2stXFx1MDAzZWNiX2xvY2spO1xcbiA5MDI6XFx0XFx0ZXJyID0gdGNmX2Jsb2NrX29mZmxvYWRfY21kKGJsb2NrLCBkZXYsIHEsIGVpLCBGTE9XX0JMT0NLX1VOQklORCwgTlVMTCk7XFxuIDkwMzpcXHRcXHRpZiAoZXJyID09IC1FT1BOT1RTVVBQKVxcbiA5MDQ6XFx0XFx0XFx0Z290byBub19vZmZsb2FkX2Rldl9kZWM7XFxuIDkwNTpcXHRcXHR1cF93cml0ZShcXHUwMDI2YmxvY2stXFx1MDAzZWNiX2xvY2spO1xcbiA5MDY6XFx0XFx0cmV0dXJuO1xcbiA5MDc6XFx0XFxuIDkwODpcXHRub19vZmZsb2FkX2Rldl9kZWM6XFxuIDkwOTpcXHRcXHRXQVJOX09OKGJsb2NrLVxcdTAwM2Vub29mZmxvYWRkZXZjbnQtLSA9PSAwKTtcXG4gOTEwOlxcdFxcdHVwX3dyaXRlKFxcdTAwMjZibG9jay1cXHUwMDNlY2JfbG9jayk7XFxuIDkxMTpcXHR9XFxuIDkxMjpcXHRcXG4gOTEzOlxcdHN0YXRpYyBpbnRcXG4gOTE0OlxcdHRjZl9jaGFpbjBfaGVhZF9jaGFuZ2VfY2JfYWRkKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLFxcbiA5MTU6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWksXFxuIDkxNjpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIDkxNzpcXHR7XFxuIDkxODpcXHRcXHRzdHJ1Y3QgdGNmX2ZpbHRlcl9jaGFpbl9saXN0X2l0ZW0gKml0ZW07XFxuIDkxOTpcXHRcXHRzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbjA7XFxuIDkyMDpcXHRcXG4gOTIxOlxcdFxcdGl0ZW0gPSBrbWFsbG9jX29iaigqaXRlbSk7XFxuIDkyMjpcXHRcXHRpZiAoIWl0ZW0pIHtcXG4gOTIzOlxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIk1lbW9yeSBhbGxvY2F0aW9uIGZvciBoZWFkIGNoYW5nZSBjYWxsYmFjayBpdGVtIGZhaWxlZFxcXCIpO1xcbiA5MjQ6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE1OjA5LjEzMjQ2MjUyOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDkzMjU1NDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBOZXR3b3JrIFNjaGVkdWxlciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCBpdCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG5ldC9zY2hlZC9jbHNfYXBpLmNgIGNvZGUuIEl0IGFwcGVhcnMgdGhlIGNoYW5nZSBpbnZvbHZlcyBob3cgdGhlIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRgIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHR3byBsb2NrczogYGJsb2NrLVx1MDAzZWxvY2tgIChhIG11dGV4KSBhbmQgYGJsb2NrLVx1MDAzZWNiX2xvY2tgIChhIHJlYWQtd3JpdGUgc2VtYXBob3JlLCBvciByd3NlbSkuXG5cbkJlZm9yZSB0aGlzIHBhdGNoLCB0aGVyZSB3YXMgYSBjb25kaXRpb25hbCBwYXRoLiBUaGUgY29kZSB1c2VkIGByZWZjb3VudF9kZWNfYW5kX211dGV4X2xvY2soXHUwMDI2YmxvY2stXHUwMDNlcmVmY250LCBcdTAwMjZibG9jay1cdTAwM2Vsb2NrKWAuIElmIHRoYXQgZnVuY3Rpb24gcmV0dXJuZWQgdHJ1ZSwgbWVhbmluZyBpdCBzdWNjZXNzZnVsbHkgZGVjcmVtZW50ZWQgdGhlIHJlZmVyZW5jZSBjb3VudCBhbmQgYWNxdWlyZWQgdGhlIGBibG9jay1cdTAwM2Vsb2NrYCBtdXRleCwgaXQgd291bGQgKnRoZW4qIGNhbGwgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAuIFRoaXMgY3JlYXRlcyBhIHBvdGVudGlhbCBsb2NrIG9yZGVyaW5nIGlzc3VlIGJlY2F1c2UgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAgdGFrZXMgdGhlIGBibG9jay1cdTAwM2VjYl9sb2NrYC4gSWYgYHJlZmNvdW50X2RlY19hbmRfbXV0ZXhfbG9ja2AgcmV0dXJuZWQgZmFsc2UsIGl0IG9ubHkgY2FsbHMgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAuIE5vdywgaXQgKmFsd2F5cyogY2FsbHMgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAgYmVmb3JlIGF0dGVtcHRpbmcgdG8gYWNxdWlyZSB0aGUgYGJsb2NrLVx1MDAzZWxvY2tgLiBUaGlzIGNoYW5nZSBsb29rcyBsaWtlIGEgZGVsaWJlcmF0ZSBhdm9pZGFuY2Ugb2YgYSBsb2NrIGludmVyc2lvbiwgb3IgaXQgbWF5IGp1c3QgYmUgdG8gZW5zdXJlIHRoYXQgdW5iaW5kaW5nIGhhcHBlbnMgYmVmb3JlIHNvbWV0aGluZyBlbHNlIHRoYXQgbWlnaHQgbmVlZCB0aGUgYGJsb2NrLVx1MDAzZWxvY2tgLiBUaGUgY29kZSBkb2Vzbid0IGV4cGxpY2l0bHkgc3RhdGUgdGhlICp3aHkqLCBidXQgdGhhdCdzIG15IHdvcmtpbmcgaHlwb3RoZXNpcy5cblxuSSB0aGluayB0aGUgaW1wb3J0YW50IHRoaW5nIGlzIHRoYXQgYHJlZmNvdW50X2RlY19hbmRfbXV0ZXhfbG9ja2AgY2FuICpkcm9wKiB0aGUgcmVmZXJlbmNlIGNvdW50IHRvIHplcm8uIFRoYXQncyBhIGNyaXRpY2FsIG1vbWVudC4gSWYgdGhlIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byB6ZXJvLCB0aGUgYmxvY2sgaXMgYmVpbmcgZGVzdHJveWVkLiBUaGUgcGF0Y2ggZWZmZWN0aXZlbHkgbWFrZXMgaXQgdW5iaW5kIHRoZSBvZmZsb2FkICpiZWZvcmUqIHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8gemVyby4gVGhhdCBlbnN1cmVzIHRoZSBibG9jayBpcyB2YWxpZCB3aGlsZSBpdCdzIGJlaW5nIHVuYm91bmQuIERvaW5nIGl0IHRoZSAqb3RoZXIqIHdheSAtIGFmdGVyIGRyb3BwaW5nIHRoZSByZWZjb3VudCB0byB6ZXJvIC0gY291bGQgbGVhZCB0byBwcm9ibGVtcyBpZiBgdGNmX2Jsb2NrX29mZmxvYWRfY21kYCAob3IgYSBmdW5jdGlvbiBpdCBjYWxscykgdHJpZXMgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgYmxvY2sgb3IgcmVsaWVzIG9uIGl0cyByZWZjb3VudCBiZWluZyBhYm92ZSB6ZXJvLCB3aGljaCBpcyBsaWtlbHkuIEl0ICp3b3VsZCogY2F1c2UgYSBjcmFzaC5cblxuSXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBuZXR3b3JraW5nIHNjaGVkdWxpbmcvY2xhc3NpZmljYXRpb24gQVBJLCBzbyBpdCdzIGFic29sdXRlbHkgd29ydGggZnV6emluZyB0byBjb25maXJtIHRoZSBmaXguXG5cbk9rYXksIGxldCdzIG5haWwgZG93biB0aGUgZm9jdXMgc3ltYm9scy4gVGhlIGNoYW5nZSBpcyBjZW50ZXJlZCBhcm91bmQgdGhlIHN0YXRpYyBmdW5jdGlvbiBgX190Y2ZfYmxvY2tfcHV0YC4gVGhlIGRpcmVjdCBjYWxsZXJzIGFyZSBgdGNmX2Jsb2NrX3B1dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0X2V4dGAuIGB0Y2ZfYmxvY2tfcmVmY250X3B1dGAgYWxzbyBjYWxscyBpdCwgYnV0IHdpdGggYHFgIGFzIE5VTEwsIHNvIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRgIGlzbid0IGNhbGxlZCB0aGVyZS4gU28sIGB0Y2ZfYmxvY2tfcHV0YCBhbmQgYHRjZl9ibG9ja19wdXRfZXh0YCBhcmUgdGhlIGludGVyZXN0aW5nIGNhbGxlcnMgaGVyZS4gTGV0IG1lIGRvdWJsZSBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIGdvb2QgZm9jdXMgc3ltYm9scy4gTG9va3MgbGlrZSBgdGNmX2Jsb2NrX3B1dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0X2V4dGAgYXJlIGdvb2QgY2FuZGlkYXRlcy4gQW5kIHRoZXkgYXJlICpleHBvcnRlZCosIG5vdCBzdGF0aWMhIExldCdzIGNoZWNrIHRob3NlIGluIGBuZXQvc2NoZWQvY2xzX2FwaS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMjUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMDoxNToxOC4yMjU3MjE1MDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNDc2MjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZvaWQgdGNmX2Jsb2NrX3B1dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9jbHNfYXBpLmM9MTU0Mz1FWFBPUlRfU1lNQk9MKHRjZl9ibG9ja19nZXQpO1xcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTQ3LSAqL1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU0ODp2b2lkIHRjZl9ibG9ja19wdXRfZXh0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTQ5LVxcdFxcdCAgICAgICBzdHJ1Y3QgdGNmX2Jsb2NrX2V4dF9pbmZvICplaSlcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTU2Mj1FWFBPUlRfU1lNQk9MKHRjZl9ibG9ja19wdXRfZXh0KTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjMtXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTY0OnZvaWQgdGNmX2Jsb2NrX3B1dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaylcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjUte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMDoxNToxOC4yNjYyMDM2ODFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyMTI2NDM0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDaGVja2luZyBFeHBvcnRlZCBTeW1ib2xzIGFuZCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGNvbmZpcm1pbmcgdGhhdCB0aGVzZSBzeW1ib2xzIGFyZSwgaW4gZmFjdCwgZXhwb3J0ZWQuIE5vdywgdG8gYmUgdGhvcm91Z2gsIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIENPTkZJRyBvcHRpb25zIHRoYXQgYXJlIHByZXJlcXVpc2l0ZXMgb3IgaW5mbHVlbmNlIHRoZSBjb21waWxhdGlvbiBvZiB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlLiBMb29raW5nIGludG8gaXQsIHRoZSBmaWxlIGBuZXQvc2NoZWQvY2xzX2FwaS5jYCBzZWVtcyB0byBjb21lIGludG8gcGxheSB3aGVuIGBDT05GSUdfTkVUX1NDSEVEYCBvciByZWxhdGVkIG5ldHdvcmtpbmcgc2NoZWR1bGVyIG9wdGlvbnMgYXJlIGVuYWJsZWQuIFRoYXQncyBnb29kIHRvIGtub3cgYW5kIGhlbHBzIHRvIGNsYXJpZnkgdGhlIGJ1aWxkIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NzMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMDoxNToyMS4xODc0Njk4OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg1Njg5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2xzX2FwaS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfTkVUX1NDSEVEKVxcdFxcdCs9IHNjaF9hcGkubyBzY2hfYmxhY2tob2xlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX05FVF9DTFMpXFx0XFx0Kz0gY2xzX2FwaS5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19ORVRfQ0xTX0FDVClcXHQrPSBhY3RfYXBpLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTU6MjEuMjI2MDQwNDA5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDA3MjczMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBDbGFzc2lmaWVyIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBJIHNlZSB3ZSBuZWVkIGBDT05GSUdfTkVUX0NMU2AuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIG1vcmUgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaXMgd2hldGhlciB3ZSBhbHNvIHJlcXVpcmUgYENPTkZJR19ORVRfU0NIRURgLiBJbiBteSBleHBlcmllbmNlLCBhbmQgYmFzZWQgb24gdGhlIHR5cGljYWwgZGVwZW5kZW5jaWVzIEkndmUgc2VlbiBpbiB0aGVzZSBraW5kcyBvZiBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zLCBgTkVUX0NMU2Agb2Z0ZW4sIGlmIG5vdCAqdXN1YWxseSosIGxlYW5zIG9uIGBORVRfU0NIRURgLiBJdCdzIGEgc3RhbmRhcmQgcGF0dGVybi4gVGltZSB0byBjb25maXJtIHRoYXQgcmVsYXRpb25zaGlwIGFuZCBlbnN1cmUgZXZlcnl0aGluZyBpcyBwcm9wZXJseSBzZXQgdXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExODU4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTU6MjQuMTY2NzcwNDY4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY2NzA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0NMU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz00Nzk9Y29tbWVudCBcXFwiQ2xhc3NpZmljYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWctNDgwLVxcbm5ldC9zY2hlZC9LY29uZmlnOjQ4MTpjb25maWcgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTQ4Mi1cXHRib29sXFxubmV0L3NjaGVkL0tjb25maWctNDgzLVxcbm5ldC9zY2hlZC9LY29uZmlnOjQ4NDpjb25maWcgTkVUX0NMU19CQVNJQ1xcbm5ldC9zY2hlZC9LY29uZmlnLTQ4NS1cXHR0cmlzdGF0ZSBcXFwiRWxlbWVudGFyeSBjbGFzc2lmaWNhdGlvbiAoQkFTSUMpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDkzLVxcbm5ldC9zY2hlZC9LY29uZmlnOjQ5NDpjb25maWcgTkVUX0NMU19ST1VURTRcXG5uZXQvc2NoZWQvS2NvbmZpZy00OTUtXFx0dHJpc3RhdGUgXFxcIlJvdXRpbmcgZGVjaXNpb24gKFJPVVRFKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTUwNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1MDY6Y29uZmlnIE5FVF9DTFNfRldcXG5uZXQvc2NoZWQvS2NvbmZpZy01MDctXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBtYXJrIChGVylcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy01MTUtXFxubmV0L3NjaGVkL0tjb25maWc6NTE2OmNvbmZpZyBORVRfQ0xTX1UzMlxcbm5ldC9zY2hlZC9LY29uZmlnLTUxNy1cXHR0cmlzdGF0ZSBcXFwiVW5pdmVyc2FsIDMyYml0IGNvbXBhcmlzb25zIHcvIGhhc2hpbmcgKFUzMilcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01MzM9Y29uZmlnIENMU19VMzJfTUFSS1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTM4LVxcbm5ldC9zY2hlZC9LY29uZmlnOjUzOTpjb25maWcgTkVUX0NMU19GTE9XXFxubmV0L3NjaGVkL0tjb25maWctNTQwLVxcdHRyaXN0YXRlIFxcXCJGbG93IGNsYXNzaWZpZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy01NDktXFxubmV0L3NjaGVkL0tjb25maWc6NTUwOmNvbmZpZyBORVRfQ0xTX0NHUk9VUFxcbm5ldC9zY2hlZC9LY29uZmlnLTU1MS1cXHR0cmlzdGF0ZSBcXFwiQ29udHJvbCBHcm91cCBDbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTYxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjU2Mjpjb25maWcgTkVUX0NMU19CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy01NjMtXFx0dHJpc3RhdGUgXFxcIkJQRi1iYXNlZCBjbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTcxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjU3Mjpjb25maWcgTkVUX0NMU19GTE9XRVJcXG5uZXQvc2NoZWQvS2NvbmZpZy01NzMtXFx0dHJpc3RhdGUgXFxcIkZsb3dlciBjbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTgxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjU4Mjpjb25maWcgTkVUX0NMU19NQVRDSEFMTFxcbm5ldC9zY2hlZC9LY29uZmlnLTU4My1cXHR0cmlzdGF0ZSBcXFwiTWF0Y2gtYWxsIGNsYXNzaWZpZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy03MDEtXFxubmV0L3NjaGVkL0tjb25maWc6NzAyOmNvbmZpZyBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTcwMy1cXHRib29sIFxcXCJBY3Rpb25zXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMDoxNToyNC4yMTE0NDQ0NThaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk0NjQzNjc5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYE5FVF9DTFNgIFZhcmlhYmxlKipcblxuT2theSwgc28gYE5FVF9DTFNgIGlzIGEgQm9vbGVhbiB2YWx1ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIlJpZ2h0LCBzbyBzb21ldGhpbmcgZWxzZSBpcyBmbGlwcGluZyB0aGlzIHN3aXRjaC5cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgKmRyaXZpbmcqIHRoYXQgQm9vbGVhbiBzdGF0ZS4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gSSdtIGdvaW5nIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZWJhc2Ugb3IgY29uZmlndXJhdGlvbiB0byBzZWUgd2hlcmUgYE5FVF9DTFNgIGlzIGJlaW5nIGFzc2lnbmVkLCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZSBzZWxlY3Rpb24gY3JpdGVyaWEgaXMgY3JpdGljYWwgaGVyZS4gSXQncyBhbG1vc3QgY2VydGFpbiBpdCdzIGRldGVybWluZWQgYnkgYSBzZXQgb2YgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBvciBhIGxvb2t1cCB0YWJsZSwgYW5kIEkgbmVlZCB0byBpZGVudGlmeSB0aG9zZSB0cmlnZ2Vycy4gS25vd2luZyB0aGUgdXBzdHJlYW0gbG9naWMgd2lsbCBwcm92aWRlIGluc2lnaHQgaW50byBob3cgdGhlIG5ldHdvcmsgYmVoYXZpb3IgaXMgYmVpbmcgY29udHJvbGxlZC4gSSdsbCBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGUgcG9pbnQgd2hlcmUgYE5FVF9DTFNgIGlzIHVzZWQgdG8gaXRzIHBvaW50IG9mIGRlZmluaXRpb24uIExldCdzIGdldCB0byB3b3JrIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjcyMywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE1OjI3LjE1Nzg4Mzg3N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE3OTExNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVF9DTFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NDg0PWNvbmZpZyBORVRfQ0xTX0JBU0lDXFxubmV0L3NjaGVkL0tjb25maWctNDg1LVxcdHRyaXN0YXRlIFxcXCJFbGVtZW50YXJ5IGNsYXNzaWZpY2F0aW9uIChCQVNJQylcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NDg2OlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNDg3LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTQ5ND1jb25maWcgTkVUX0NMU19ST1VURTRcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTQ5Ny1cXHRzZWxlY3QgSVBfUk9VVEVfQ0xBU1NJRFxcbm5ldC9zY2hlZC9LY29uZmlnOjQ5ODpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTQ5OS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01MDY9Y29uZmlnIE5FVF9DTFNfRldcXG5uZXQvc2NoZWQvS2NvbmZpZy01MDctXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBtYXJrIChGVylcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTA4OlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNTA5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTUxNj1jb25maWcgTkVUX0NMU19VMzJcXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjUxODpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTUxOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01Mzk9Y29uZmlnIE5FVF9DTFNfRkxPV1xcbm5ldC9zY2hlZC9LY29uZmlnLTU0MC1cXHR0cmlzdGF0ZSBcXFwiRmxvdyBjbGFzc2lmaWVyXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjU0MTpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTU0Mi1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01NTA9Y29uZmlnIE5FVF9DTFNfQ0dST1VQXFxubmV0L3NjaGVkL0tjb25maWctNTUxLVxcdHRyaXN0YXRlIFxcXCJDb250cm9sIEdyb3VwIENsYXNzaWZpZXJcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTUyOlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNTUzLVxcdHNlbGVjdCBDR1JPVVBfTkVUX0NMQVNTSURcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTU2Mj1jb25maWcgTkVUX0NMU19CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy01NjMtXFx0dHJpc3RhdGUgXFxcIkJQRi1iYXNlZCBjbGFzc2lmaWVyXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjU2NDpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTU2NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01NzI9Y29uZmlnIE5FVF9DTFNfRkxPV0VSXFxubmV0L3NjaGVkL0tjb25maWctNTczLVxcdHRyaXN0YXRlIFxcXCJGbG93ZXIgY2xhc3NpZmllclxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo1NzQ6XFx0c2VsZWN0IE5FVF9DTFNcXG5uZXQvc2NoZWQvS2NvbmZpZy01NzUtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTgyPWNvbmZpZyBORVRfQ0xTX01BVENIQUxMXFxubmV0L3NjaGVkL0tjb25maWctNTgzLVxcdHRyaXN0YXRlIFxcXCJNYXRjaC1hbGwgY2xhc3NpZmllclxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo1ODQ6XFx0c2VsZWN0IE5FVF9DTFNcXG5uZXQvc2NoZWQvS2NvbmZpZy01ODUtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTkyPWNvbmZpZyBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNTkzLVxcdGJvb2wgXFxcIkV4dGVuZGVkIE1hdGNoZXNcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTk0OlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNTk1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTcwMj1jb25maWcgTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXFx0Ym9vbCBcXFwiQWN0aW9uc1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3MDQ6XFx0c2VsZWN0IE5FVF9DTFNcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDUtXFx0c2VsZWN0IE5FVF9YR1JFU1NcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTU6MjcuMTk5Njc4MjU2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTY5MTA5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb24gUXVhbmRhcnkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gZW5hYmxlIGBORVRfQ0xTYCwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIG1vc3QgZGlyZWN0IGFwcHJvYWNoIGludm9sdmVzIGVuYWJsaW5nIGVpdGhlciBgTkVUX0NMU19CQVNJQ2AsIGBORVRfQ0xTX0JQRmAsIGBORVRfQ0xTX0ZMT1dFUmAsIG9yIGBORVRfQ0xTX0FDVGAuIFRvIGtlZXAgdGhpbmdzIHNpbXBsZSBhbmQgZW5zdXJlIHdlIGhhdmUgbWF4aW11bSBjb3ZlcmFnZSwgSSdtIGp1c3QgZ29pbmcgdG8gZ28gYWhlYWQgYW5kIHNwZWNpZnkgYWxsIG9mIHRoZW06IGBORVRfQ0xTX0JBU0lDYCwgYE5FVF9DTFNfQUNUYCwgYE5FVF9DTFNfQlBGYCwgYE5FVF9DTFNfRkxPV0VSYCwgYW5kIGBORVRfQ0xTX1UzMmAuIFRoZSBwYXJlbnQgbWVudSBmb3IgYWxsIG9mIHRoaXMgaXMgYE5FVF9TQ0hFRGAsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBpcyBjb25maWd1cmVkIGNvcnJlY3RseSwgYW5kIHRoZSBidWlsZCBzeXN0ZW0gc2hvdWxkIHJlc29sdmUgYW55IGRlcGVuZGVuY2llcy4gVGhhdCdzIHRoZSBtb3N0IHJvYnVzdCB3YXkgdG8gaGFuZGxlIGl0LCBtYWtpbmcgc3VyZSBhbGwgdGhlIGNsYXNzaWZpZXIgY29tcG9uZW50cyBhcmUgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzk1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE1OjMwLjU5NjU5MTM4OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIyOTg4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZy01LVxcbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTU6MzAuNjM4OTAwMDA4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MzkyOTA0NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVGhpcyBOZXR3b3JrIFNjaGVkdWxlciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBgTkVUX1NDSEVEYCwgd2hpY2ggaXMga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2UsIHdoaWNoIGFwcGVhcnMgdG8gaW52b2x2ZSB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyB3aXRoaW4gdGhlIG5ldHdvcmsgc2NoZWR1bGVyJ3MgY29udHJvbCBmbG93LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSBgdGNmX2Jsb2NrX3B1dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0X2V4dGAsIHNpbmNlIHRoZXkgYXJlIGV4cG9ydGVkIGFuZCBub24tc3RhdGljIGZ1bmN0aW9ucywgYW5kIGFyZSBsaWtlbHkgdG8gYmUgZW50cnkgcG9pbnRzIGZvciB0aGlzIGxvZ2ljLlxuXG5BcmUgdGhleSBob3QtcGF0aCwgdGhvdWdoPyBMZXQncyBzZWUuLi4gYHRjZl9ibG9ja19wdXRgIGdldHMgY2FsbGVkIGR1cmluZyBxZGlzYyBvciBjbGFzcyBkZXN0cnVjdGlvbi4gYHRjZl9ibG9ja19wdXRfZXh0YCBpcyBjYWxsZWQgd2hlbiBhIGJsb2NrIGlzIHB1dC4gVGhhdCBtZWFucyB0aGVzZSBhcmUgKmNvbnRyb2wgcGF0aCogb3BlcmF0aW9ucyByZWxhdGVkIHRvIHNldHVwIGFuZCB0ZWFyZG93biwgbm90IHRoZSBkYXRhIHBhdGggaGFuZGxpbmcgdGhlIGFjdHVhbCBwYWNrZXQgcHJvY2Vzc2luZy4gR29vZCwgdGhleSdyZSBub3QgcGVyZm9ybWFuY2UtY3JpdGljYWwsIGFuZCBhcmUgbGlrZWx5IHRoZSByaWdodCBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcuXG5cblRoZXJlZm9yZSwgaGVyZSdzIG15IHN1bW1hcnkgc28gZmFyOiBXZSBzaG91bGQgY29uc2lkZXIgdGhpcyBwYXRjaCBXb3J0aEZ1enppbmcuIFRoZSBGb2N1c1N5bWJvbHMgYXJlIGRlZmluaXRpdmVseSBgdGNmX2Jsb2NrX3B1dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0X2V4dGAuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGZvbGxvd2luZyBFbmFibGVDb25maWdzIGFyZSBlbmFibGVkIGR1cmluZyB0ZXN0aW5nOiBgTkVUX1NDSEVEYCwgYE5FVF9DTFNgLCBgTkVUX0NMU19CQVNJQ2AsIGBORVRfQ0xTX0FDVGAsIGBORVRfQ0xTX0JQRmAsIGBORVRfQ0xTX0ZMT1dFUmAsIGFuZCBgTkVUX0NMU19VMzJgLiBUaGUgcmF0aW9uYWxlIGlzIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGBfX3RjZl9ibG9ja19wdXRgLCBzcGVjaWZpY2FsbHkgYWx0ZXJpbmcgdGhlIHNlcXVlbmNlIG9mIG9mZmxvYWQgdW5iaW5kaW5nIHJlbGF0aXZlIHRvIGxvY2sgYWNxdWlzaXRpb24gYW5kIHJlZmNvdW50IGRlY3JlbWVudGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBhbmQgY2xhc3NpZmllciBBUEkgdGhhdCBhZmZlY3RzIGNvbnRyb2wgcGF0aCB0ZWFyZG93biwgc28gaXQgaXMgaW1wb3J0YW50IHRvIHRlc3QgdGhpcy5cblxuTGV0IG1lIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIFRoZSBgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kYCBmdW5jdGlvbiBpcyBzdGF0aWMuIE9rYXksIHRoYXQgY29uZmlybXMgdGhhdCBgdGNmX2Jsb2NrX3B1dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0X2V4dGAgYXJlIHRoZSBwcm9wZXIgZW50cnkgcG9pbnRzIGZvciBhbmFseXNpcyBhbmQgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQxNzMsIk91dHB1dFRva2VucyI6MTYwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE1OjM3LjQ3ODE5NDAzM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMjY3Njk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNcIixcbiAgICBcIk5FVF9DTFNfQkFTSUNcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORVRfQ0xTX0JQRlwiLFxuICAgIFwiTkVUX0NMU19GTE9XRVJcIixcbiAgICBcIk5FVF9DTFNfVTMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNmX2Jsb2NrX3B1dFwiLFxuICAgIFwidGNmX2Jsb2NrX3B1dF9leHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGluIGBfX3RjZl9ibG9ja19wdXRgLCB1bmJpbmRpbmcgdGhlIG9mZmxvYWQgYmVmb3JlIHRha2luZyB0aGUgYmxvY2sgbG9jayBhbmQgZGVjcmVtZW50aW5nIHRoZSByZWZjb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZy9jbGFzc2lmaWVyIEFQSSBhbmQgYWZmZWN0cyBjb250cm9sIHBhdGggdGVhcmRvd24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfQ0xTXCIsXG4gICAgXCJORVRfQ0xTX0JBU0lDXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkVUX0NMU19CUEZcIixcbiAgICBcIk5FVF9DTFNfRkxPV0VSXCIsXG4gICAgXCJORVRfQ0xTX1UzMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjZl9ibG9ja19wdXRcIixcbiAgICBcInRjZl9ibG9ja19wdXRfZXh0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBpbiBgX190Y2ZfYmxvY2tfcHV0YCwgdW5iaW5kaW5nIHRoZSBvZmZsb2FkIGJlZm9yZSB0YWtpbmcgdGhlIGJsb2NrIGxvY2sgYW5kIGRlY3JlbWVudGluZyB0aGUgcmVmY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIHNjaGVkdWxpbmcvY2xhc3NpZmllciBBUEkgYW5kIGFmZmVjdHMgY29udHJvbCBwYXRoIHRlYXJkb3duLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowjngrq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 23:59:36 +0000 UTC FinishedAt: 2026-08-02 00:15:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS", "NET_CLS_BASIC", "NET_CLS_ACT", "NET_CLS_BPF", "NET_CLS_FLOWER", "NET_CLS_U32" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS", "NET_CLS_BASIC", "NET_CLS_ACT", "NET_CLS_BPF", "NET_CLS_FLOWER", "NET_CLS_U32" ], "series_id": "09a51ac6-68ec-40e2-a6c2-103b5c409a33" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcf_block_put", "tcf_block_put_ext" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQkFTSUMmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkVUX0NMU19CUEYmIzM0OywKICAgICYjMzQ7TkVUX0NMU19GTE9XRVImIzM0OywKICAgICYjMzQ7TkVUX0NMU19VMzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfYmxvY2tfcHV0JiMzNDssCiAgICAmIzM0O3RjZl9ibG9ja19wdXRfZXh0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgaW4gYF9fdGNmX2Jsb2NrX3B1dGAsIHVuYmluZGluZyB0aGUgb2ZmbG9hZCBiZWZvcmUgdGFraW5nIHRoZSBibG9jayBsb2NrIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nL2NsYXNzaWZpZXIgQVBJIGFuZCBhZmZlY3RzIGNvbnRyb2wgcGF0aCB0ZWFyZG93bi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ5ODE3M2Y3MWE5MThiYmJiNGE0MmY3NjgyN2M1NWZkNDI0NGIxYTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDAwOjE0OjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfYXBpLmMgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXG5pbmRleCBmZWU0NTI0YWRjOThlLi5kM2IyNTA2ZDg3Y2Y0IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2Nsc19hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2Nsc19hcGkuY1xuQEAgLTEzMTIsNiAmIzQzOzEzMTIsOSBAQCBzdGF0aWMgc3RydWN0IHRjZl9ibG9jayAqX190Y2ZfYmxvY2tfZmluZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBRZGlzYyAqcSxcbiBzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcbiBcdFx0XHQgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWksIGJvb2wgcnRubF9oZWxkKVxuIHtcbiYjNDM7XHRpZiAocSlcbiYjNDM7XHRcdHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChibG9jaywgcSwgZWkpO1xuJiM0MztcbiBcdGlmIChyZWZjb3VudF9kZWNfYW5kX211dGV4X2xvY2soXHUwMDI2YmxvY2stXHUwMDNlcmVmY250LCBcdTAwMjZibG9jay1cdTAwM2Vsb2NrKSkge1xuIFx0XHQvKiBGbHVzaGluZy9wdXR0aW5nIGFsbCBjaGFpbnMgd2lsbCBjYXVzZSB0aGUgYmxvY2sgdG8gYmVcbiBcdFx0ICogZGVhbGxvY2F0ZWQgd2hlbiBsYXN0IGNoYWluIGlzIGZyZWVkLiBIb3dldmVyLCBpZiBjaGFpbl9saXN0XG5AQCAtMTMyNSwxNSAmIzQzOzEzMjgsMTAgQEAgc3RhdGljIHZvaWQgX190Y2ZfYmxvY2tfcHV0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG4gXHRcdGlmICh0Y2ZfYmxvY2tfc2hhcmVkKGJsb2NrKSlcbiBcdFx0XHR0Y2ZfYmxvY2tfcmVtb3ZlKGJsb2NrLCBibG9jay1cdTAwM2VuZXQpO1xuIFxuLVx0XHRpZiAocSlcbi1cdFx0XHR0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKTtcbi1cbiBcdFx0aWYgKGZyZWVfYmxvY2spXG4gXHRcdFx0dGNmX2Jsb2NrX2Rlc3Ryb3koYmxvY2spO1xuIFx0XHRlbHNlXG4gXHRcdFx0dGNmX2Jsb2NrX2ZsdXNoX2FsbF9jaGFpbnMoYmxvY2ssIHJ0bmxfaGVsZCk7XG4tXHR9IGVsc2UgaWYgKHEpIHtcbi1cdFx0dGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKGJsb2NrLCBxLCBlaSk7XG4gXHR9XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX0NMUyYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0JBU0lDJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQlBGJiMzNDssCiAgICAmIzM0O05FVF9DTFNfRkxPV0VSJiMzNDssCiAgICAmIzM0O05FVF9DTFNfVTMyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNmX2Jsb2NrX3B1dCYjMzQ7LAogICAgJiMzNDt0Y2ZfYmxvY2tfcHV0X2V4dCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGluIGBfX3RjZl9ibG9ja19wdXRgLCB1bmJpbmRpbmcgdGhlIG9mZmxvYWQgYmVmb3JlIHRha2luZyB0aGUgYmxvY2sgbG9jayBhbmQgZGVjcmVtZW50aW5nIHRoZSByZWZjb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZy9jbGFzc2lmaWVyIEFQSSBhbmQgYWZmZWN0cyBjb250cm9sIHBhdGggdGVhcmRvd24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkOTgxNzNmNzFhOTE4YmJiYjRhNDJmNzY4MjdjNTVmZDQyNDRiMWE2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAwMDoxNDo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfYXBpLmMgYi9uZXQvc2NoZWQvY2xzX2FwaS5jCmluZGV4IGZlZTQ1MjRhZGM5OGUuLmQzYjI1MDZkODdjZjQgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9jbHNfYXBpLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2Nsc19hcGkuYwpAQCAtMTMxMiw2ICYjNDM7MTMxMiw5IEBAIHN0YXRpYyBzdHJ1Y3QgdGNmX2Jsb2NrICpfX3RjZl9ibG9ja19maW5kKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IFFkaXNjICpxLAogc3RhdGljIHZvaWQgX190Y2ZfYmxvY2tfcHV0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsCiAJCQkgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWksIGJvb2wgcnRubF9oZWxkKQogewomIzQzOwlpZiAocSkKJiM0MzsJCXRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChibG9jaywgcSwgZWkpOwomIzQzOwogCWlmIChyZWZjb3VudF9kZWNfYW5kX211dGV4X2xvY2soJmFtcDtibG9jay0mZ3Q7cmVmY250LCAmYW1wO2Jsb2NrLSZndDtsb2NrKSkgewogCQkvKiBGbHVzaGluZy9wdXR0aW5nIGFsbCBjaGFpbnMgd2lsbCBjYXVzZSB0aGUgYmxvY2sgdG8gYmUKIAkJICogZGVhbGxvY2F0ZWQgd2hlbiBsYXN0IGNoYWluIGlzIGZyZWVkLiBIb3dldmVyLCBpZiBjaGFpbl9saXN0CkBAIC0xMzI1LDE1ICYjNDM7MTMyOCwxMCBAQCBzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSwKIAkJaWYgKHRjZl9ibG9ja19zaGFyZWQoYmxvY2spKQogCQkJdGNmX2Jsb2NrX3JlbW92ZShibG9jaywgYmxvY2stJmd0O25ldCk7CiAKLQkJaWYgKHEpCi0JCQl0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKTsKLQogCQlpZiAoZnJlZV9ibG9jaykKIAkJCXRjZl9ibG9ja19kZXN0cm95KGJsb2NrKTsKIAkJZWxzZQogCQkJdGNmX2Jsb2NrX2ZsdXNoX2FsbF9jaGFpbnMoYmxvY2ssIHJ0bmxfaGVsZCk7Ci0JfSBlbHNlIGlmIChxKSB7Ci0JCXRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChibG9jaywgcSwgZWkpOwogCX0KIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjk0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIENsYXNzaWZpZXIgQVBJIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvc2NoZWQvY2xzX2FwaS5jYC4gSXQgc2VlbXMgdGhleSYjMzk7dmUgbWFkZSBhIGNoYW5nZSB0byB0aGUgYF9fdGNmX2Jsb2NrX3B1dGAgZnVuY3Rpb24sIGFuZCB0aGUgY29yZSBvZiB0aGUgYWx0ZXJhdGlvbiBpcyBtb3ZpbmcgdGhlIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKWAgY2FsbC4gUmlnaHQgbm93LCBpdCYjMzk7cyAqaW5zaWRlKiB0aGUgYHJlZmNvdW50X2RlY19hbmRfbXV0ZXhfbG9ja2AgYmxvY2ssIGJ1dCB0aGUgcGF0Y2ggc2hpZnRzIGl0IHRvIHRoZSAqYmVnaW5uaW5nKiBvZiB0aGUgZnVuY3Rpb24sIHB1dHRpbmcgaXQgYmVmb3JlIHRoYXQgcmVmY291bnQgZGVjcmVtZW50IGFuZCBtdXRleCBvcGVyYXRpb24uIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYF9fdGNmX2Jsb2NrX3B1dGAgaXRzZWxmIHdpdGhpbiBgbmV0L3NjaGVkL2Nsc19hcGkuY2AgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGNoYW5nZSBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvbiBob3cgdGhlIGNsYXNzaWZpZXIgYmxvY2tzIGFyZSBoYW5kbGVkIGR1cmluZyB0aGVpciByZWxlYXNlLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGV5JiMzOTtyZSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhbmQgdGhlIGltcGFjdCBvbiBjb25jdXJyZW5jeSBvciByZXNvdXJjZSBtYW5hZ2VtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fdGNmX2Jsb2NrX3B1dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc19hcGkuYz0xMjc1PXN0YXRpYyBzdHJ1Y3QgdGNmX2Jsb2NrICpfX3RjZl9ibG9ja19maW5kKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IFFkaXNjICpxLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTMxMS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTMxMjpzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTMxMy1cdFx0XHQgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWksIGJvb2wgcnRubF9oZWxkKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTMzOD1zdGF0aWMgdm9pZCB0Y2ZfYmxvY2tfcmVmY250X3B1dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgYm9vbCBydG5sX2hlbGQpXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTEzMzkte1xubmV0L3NjaGVkL2Nsc19hcGkuYzoxMzQwOlx0X190Y2ZfYmxvY2tfcHV0KGJsb2NrLCBOVUxMLCBOVUxMLCBydG5sX2hlbGQpO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0xMzQxLX1cbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE1NDg9dm9pZCB0Y2ZfYmxvY2tfcHV0X2V4dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU1OS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU2MDpcdF9fdGNmX2Jsb2NrX3B1dChibG9jaywgcSwgZWksIHRydWUpO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTYxLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDEyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYToKCioqRGVjb25zdHJ1Y3RpbmcgYSBGdW5jdGlvbiBDYWxsIEZsb3cqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBfX3RjZl9ibG9ja19wdXRgLiBUaGF0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyBsaWtlbHkgYW4gaW50ZXJuYWwgdXRpbGl0eS4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBjYWxsZWQgYnkgYHRjZl9ibG9ja19yZWZjbnRfcHV0YCBhbmQgYHRjZl9ibG9ja19wdXRfZXh0YCBpcyB0aGUga2V5LiBJIGtub3cgdGhlc2UgZnVuY3Rpb25zIGFyZSByZWxhdGVkIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCBkYXRhIGZsb3cuIGB0Y2ZfYmxvY2tfcHV0X2V4dGAgYmVpbmcgZWl0aGVyIGV4cG9ydGVkIG9yIG5vbi1zdGF0aWMgaXMgaW50ZXJlc3RpbmcgYXMgdGhpcyBpbXBsaWVzIGl0IGhhcyBicm9hZGVyIHZpc2liaWxpdHkuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHNob3VsZCBmb2N1cyBteSBhdHRlbnRpb24gb24gdW5kZXJzdGFuZGluZyB0aGUgYmVoYXZpb3IgYW5kIGltcGFjdCBvZiBgdGNmX2Jsb2NrX3B1dF9leHRgIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSB1bmRlcmx5aW5nIGBfX3RjZl9ibG9ja19wdXRgIGZ1bmN0aW9uLiBMZXQmIzM5O3MgZGlnIGludG8gYHRjZl9ibG9ja19wdXRfZXh0YCBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNmX2Jsb2NrX3B1dF9leHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmM9MTU0Mz1FWFBPUlRfU1lNQk9MKHRjZl9ibG9ja19nZXQpO1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU0Ny0gKi9cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU0ODp2b2lkIHRjZl9ibG9ja19wdXRfZXh0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NDktXHRcdCAgICAgICBzdHJ1Y3QgdGNmX2Jsb2NrX2V4dF9pbmZvICplaSlcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjEtfVxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTYyOkVYUE9SVF9TWU1CT0wodGNmX2Jsb2NrX3B1dF9leHQpO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTYzLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0xNTY0PXZvaWQgdGNmX2Jsb2NrX3B1dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaylcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjktXHRcdHJldHVybjtcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU3MDpcdHRjZl9ibG9ja19wdXRfZXh0KGJsb2NrLCBibG9jay1cdTAwM2VxLCBcdTAwMjZlaSk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NzEtfVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9NDAwNT12b2lkIHRjZl9xZXZlbnRfZGVzdHJveShzdHJ1Y3QgdGNmX3FldmVudCAqcWUsIHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDAwNy1cdGlmIChxZS1cdTAwM2VpbmZvLmJsb2NrX2luZGV4KVxubmV0L3NjaGVkL2Nsc19hcGkuYzo0MDA4Olx0XHR0Y2ZfYmxvY2tfcHV0X2V4dChxZS1cdTAwM2VibG9jaywgc2NoLCBcdTAwMjZxZS1cdTAwM2VpbmZvKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDAwOS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc1NgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkV4YW1pbmluZyBCbG9jayBQbGFjZW1lbnQgUm91dGluZXMqKgoKQWxyaWdodCwgc28gYHRjZl9ibG9ja19wdXRfZXh0YCBhbmQgYHRjZl9ibG9ja19wdXRgIGFyZSBib3RoIGV4cGxpY2l0bHkgZXhwb3J0ZWQuIEdvb2QsIHRoYXQgbWVhbnMgdGhleSYjMzk7cmUgaW50ZW5kZWQgZm9yIHVzZSBvdXRzaWRlIHRoZWlyIG1vZHVsZS4gTm93LCBnaXZlbiB0aGF0LCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGVsdmUgaW50byB0aGVpciB1c2FnZSBwYXR0ZXJucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoZXJlKiBhbmQgKmhvdyogdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyBlbXBsb3llZC4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSYjMzk7cmUgYmVpbmcgdXRpbGl6ZWQuIEkgbmVlZCB0byBmaW5kIG91dCB3aGVyZSB0aGV5JiMzOTtyZSBiZWluZyBjYWxsZWQgZnJvbSBhbmQgdGhlIGNvbnRleHRzIHN1cnJvdW5kaW5nIHRob3NlIGNhbGxzLiBBcmUgdGhlcmUgYW55IHN1YnRsZXRpZXMgaW4gdGhlaXIgYXBwbGljYXRpb24gdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZj8gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNmX2Jsb2NrX3B1dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9wa3RfY2xzLmg9NTg9aW50IHRjZl9ibG9ja19nZXRfZXh0KHN0cnVjdCB0Y2ZfYmxvY2sgKipwX2Jsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxuaW5jbHVkZS9uZXQvcGt0X2Nscy5oLTYwLVx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuaW5jbHVkZS9uZXQvcGt0X2Nscy5oOjYxOnZvaWQgdGNmX2Jsb2NrX3B1dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jayk7XG5pbmNsdWRlL25ldC9wa3RfY2xzLmg6NjI6dm9pZCB0Y2ZfYmxvY2tfcHV0X2V4dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxuaW5jbHVkZS9uZXQvcGt0X2Nscy5oLTYzLVx0XHQgICAgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWkpO1xuLS1cbmluY2x1ZGUvbmV0L3BrdF9jbHMuaD0xMzA9aW50IHRjZl9ibG9ja19nZXRfZXh0KHN0cnVjdCB0Y2ZfYmxvY2sgKipwX2Jsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxuaW5jbHVkZS9uZXQvcGt0X2Nscy5oLTEzNi1cbmluY2x1ZGUvbmV0L3BrdF9jbHMuaDoxMzc6c3RhdGljIGlubGluZSB2b2lkIHRjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2spXG5pbmNsdWRlL25ldC9wa3RfY2xzLmgtMTM4LXtcbi0tXG5pbmNsdWRlL25ldC9wa3RfY2xzLmg9MTQxPXN0YXRpYyBpbmxpbmVcbmluY2x1ZGUvbmV0L3BrdF9jbHMuaDoxNDI6dm9pZCB0Y2ZfYmxvY2tfcHV0X2V4dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxuaW5jbHVkZS9uZXQvcGt0X2Nscy5oLTE0My1cdFx0ICAgICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTI3NT1zdGF0aWMgc3RydWN0IHRjZl9ibG9jayAqX190Y2ZfYmxvY2tfZmluZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBRZGlzYyAqcSxcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTEzMTEtXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjEzMTI6c3RhdGljIHZvaWQgX190Y2ZfYmxvY2tfcHV0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTEzMTMtXHRcdFx0ICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpLCBib29sIHJ0bmxfaGVsZClcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTEzMzg9c3RhdGljIHZvaWQgdGNmX2Jsb2NrX3JlZmNudF9wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIGJvb2wgcnRubF9oZWxkKVxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMzM5LXtcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTM0MDpcdF9fdGNmX2Jsb2NrX3B1dChibG9jaywgTlVMTCwgTlVMTCwgcnRubF9oZWxkKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTM0MS19XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0xNTQzPUVYUE9SVF9TWU1CT0wodGNmX2Jsb2NrX2dldCk7XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTQ3LSAqL1xubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTQ4OnZvaWQgdGNmX2Jsb2NrX3B1dF9leHQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU0OS1cdFx0ICAgICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU1OS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU2MDpcdF9fdGNmX2Jsb2NrX3B1dChibG9jaywgcSwgZWksIHRydWUpO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTYxLX1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU2MjpFWFBPUlRfU1lNQk9MKHRjZl9ibG9ja19wdXRfZXh0KTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU2My1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU2NDp2b2lkIHRjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2spXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjUte1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU2OS1cdFx0cmV0dXJuO1xubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTcwOlx0dGNmX2Jsb2NrX3B1dF9leHQoYmxvY2ssIGJsb2NrLVx1MDAzZXEsIFx1MDAyNmVpKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU3MS19XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NzItXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE1NzM6RVhQT1JUX1NZTUJPTCh0Y2ZfYmxvY2tfcHV0KTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU3NC1cbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTQwMDU9dm9pZCB0Y2ZfcWV2ZW50X2Rlc3Ryb3koc3RydWN0IHRjZl9xZXZlbnQgKnFlLCBzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQwMDctXHRpZiAocWUtXHUwMDNlaW5mby5ibG9ja19pbmRleClcbm5ldC9zY2hlZC9jbHNfYXBpLmM6NDAwODpcdFx0dGNmX2Jsb2NrX3B1dF9leHQocWUtXHUwMDNlYmxvY2ssIHNjaCwgXHUwMDI2cWUtXHUwMDNlaW5mbyk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQwMDktfVxuLS1cbm5ldC9zY2hlZC9zY2hfY2FrZS5jPTI4MDc9c3RhdGljIHZvaWQgY2FrZV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTI4MTEtXHRxZGlzY193YXRjaGRvZ19jYW5jZWwoXHUwMDI2cS1cdTAwM2V3YXRjaGRvZyk7XG5uZXQvc2NoZWQvc2NoX2Nha2UuYzoyODEyOlx0dGNmX2Jsb2NrX3B1dChxLVx1MDAzZWJsb2NrKTtcbm5ldC9zY2hlZC9zY2hfY2FrZS5jLTI4MTMtXHRrdmZyZWUocS1cdTAwM2V0aW5zKTtcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jPTQ0Mj1zdGF0aWMgdm9pZCBkcnJfZGVzdHJveV9xZGlzYyhzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2Ryci5jLTQ0OC1cbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDQ5Olx0dGNmX2Jsb2NrX3B1dChxLVx1MDAzZWJsb2NrKTtcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDUwLVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jPTExMjY9c3RhdGljIHZvaWQgZHVhbHBpMl9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfZHVhbHBpMi5jLTExMzMtXHRcdHFkaXNjX3B1dChxLVx1MDAzZWxfcXVldWUpO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM6MTEzNDpcdHRjZl9ibG9ja19wdXQocS1cdTAwM2V0Y2ZfYmxvY2spO1xubmV0L3NjaGVkL3NjaF9kdWFscGkyLmMtMTEzNS19XG4tLVxubmV0L3NjaGVkL3NjaF9ldHMuYz03MzI9c3RhdGljIHZvaWQgZXRzX3FkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9ldHMuYy03MzctXHRldHNfb2ZmbG9hZF9kZXN0cm95KHNjaCk7XG5uZXQvc2NoZWQvc2NoX2V0cy5jOjczODpcdHRjZl9ibG9ja19wdXQocS1cdTAwM2VibG9jayk7XG5uZXQvc2NoZWQvc2NoX2V0cy5jLTczOS1cdGZvciAoYmFuZCA9IDA7IGJhbmQgXHUwMDNjIHEtXHUwMDNlbmJhbmRzOyBiYW5kJiM0MzsmIzQzOylcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmM9NDk5PXN0YXRpYyB2b2lkIGZxX2NvZGVsX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jLTUwMi1cbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYzo1MDM6XHR0Y2ZfYmxvY2tfcHV0KHEtXHUwMDNlYmxvY2spO1xubmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jLTUwNC1cdGt2ZnJlZShxLVx1MDAzZWJhY2tsb2dzKTtcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jPTU1ND1zdGF0aWMgdm9pZCBmcV9waWVfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jLTU1Ny1cbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6NTU4Olx0dGNmX2Jsb2NrX3B1dChxLVx1MDAzZWJsb2NrKTtcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNTU5LVx0cS1cdTAwM2VwX3BhcmFtcy50dXBkYXRlID0gMDtcbi0tXG5uZXQvc2NoZWQvc2NoX2hmc2MuYz05MTI9aGZzY19jaGFuZ2VfY2xhc3Moc3RydWN0IFFkaXNjICpzY2gsIHUzMiBjbGFzc2lkLCB1MzIgcGFyZW50aWQsXG4tLVxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTA0My1cdFx0aWYgKGVycikge1xubmV0L3NjaGVkL3NjaF9oZnNjLmM6MTA0NDpcdFx0XHR0Y2ZfYmxvY2tfcHV0KGNsLVx1MDAzZWJsb2NrKTtcbm5ldC9zY2hlZC9zY2hfaGZzYy5jLTEwNDUtXHRcdFx0a2ZyZWUoY2wpO1xuLS1cbm5ldC9zY2hlZC9zY2hfaGZzYy5jPTEwOTE9aGZzY19kZXN0cm95X2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgaGZzY19jbGFzcyAqY2wpXG4tLVxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTA5NC1cbm5ldC9zY2hlZC9zY2hfaGZzYy5jOjEwOTU6XHR0Y2ZfYmxvY2tfcHV0KGNsLVx1MDAzZWJsb2NrKTtcbm5ldC9zY2hlZC9zY2hfaGZzYy5jLTEwOTYtXHRxZGlzY19wdXQoY2wtXHUwMDNlcWRpc2MpO1xuLS1cbm5ldC9zY2hlZC9zY2hfaGZzYy5jPTE0OTg9aGZzY19kZXN0cm95X3FkaXNjKHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfaGZzYy5jLTE1MDYtXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KGNsLCBcdTAwMjZxLVx1MDAzZWNsaGFzaC5oYXNoW2ldLCBjbF9jb21tb24uaG5vZGUpIHtcbm5ldC9zY2hlZC9zY2hfaGZzYy5jOjE1MDc6XHRcdFx0dGNmX2Jsb2NrX3B1dChjbC1cdTAwM2VibG9jayk7XG5uZXQvc2NoZWQvc2NoX2hmc2MuYy0xNTA4LVx0XHRcdGNsLVx1MDAzZWJsb2NrID0gTlVMTDtcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTE2MDc9c3RhdGljIHZvaWQgaHRiX2Rlc3Ryb3lfY2xhc3Moc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBodGJfY2xhc3MgKmNsKVxuLS1cbm5ldC9zY2hlZC9zY2hfaHRiLmMtMTYxMy1cdGdlbl9raWxsX2VzdGltYXRvcihcdTAwMjZjbC1cdTAwM2VyYXRlX2VzdCk7XG5uZXQvc2NoZWQvc2NoX2h0Yi5jOjE2MTQ6XHR0Y2ZfYmxvY2tfcHV0KGNsLVx1MDAzZWJsb2NrKTtcbm5ldC9zY2hlZC9zY2hfaHRiLmMtMTYxNS1cdGtmcmVlKGNsKTtcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTE2MTg9c3RhdGljIHZvaWQgaHRiX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9odGIuYy0xNjM0LVx0ICovXG5uZXQvc2NoZWQvc2NoX2h0Yi5jOjE2MzU6XHR0Y2ZfYmxvY2tfcHV0KHEtXHUwMDNlYmxvY2spO1xubmV0L3NjaGVkL3NjaF9odGIuYy0xNjM2LVxuLS1cbm5ldC9zY2hlZC9zY2hfaHRiLmMtMTYzOC1cdFx0aGxpc3RfZm9yX2VhY2hfZW50cnkoY2wsIFx1MDAyNnEtXHUwMDNlY2xoYXNoLmhhc2hbaV0sIGNvbW1vbi5obm9kZSkge1xubmV0L3NjaGVkL3NjaF9odGIuYzoxNjM5Olx0XHRcdHRjZl9ibG9ja19wdXQoY2wtXHUwMDNlYmxvY2spO1xubmV0L3NjaGVkL3NjaF9odGIuYy0xNjQwLVx0XHRcdGNsLVx1MDAzZWJsb2NrID0gTlVMTDtcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTE3NjI9c3RhdGljIGludCBodGJfY2hhbmdlX2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgY2xhc3NpZCxcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTIwNjgtZXJyX2Jsb2NrX3B1dDpcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MjA2OTpcdHRjZl9ibG9ja19wdXQoY2wtXHUwMDNlYmxvY2spO1xubmV0L3NjaGVkL3NjaF9odGIuYy0yMDcwLVx0a2ZyZWUoY2wpO1xuLS1cbm5ldC9zY2hlZC9zY2hfaW5ncmVzcy5jPTExMj1zdGF0aWMgdm9pZCBpbmdyZXNzX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmMtMTIwLVxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM6MTIxOlx0dGNmX2Jsb2NrX3B1dF9leHQocS1cdTAwM2VibG9jaywgc2NoLCBcdTAwMjZxLVx1MDAzZWJsb2NrX2luZm8pO1xubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmMtMTIyLVxuLS1cbm5ldC9zY2hlZC9zY2hfaW5ncmVzcy5jPTI5Mj1zdGF0aWMgdm9pZCBjbHNhY3RfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0zMDAtXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYzozMDE6XHR0Y2ZfYmxvY2tfcHV0X2V4dChxLVx1MDAzZWluZ3Jlc3NfYmxvY2ssIHNjaCwgXHUwMDI2cS1cdTAwM2VpbmdyZXNzX2Jsb2NrX2luZm8pO1xubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM6MzAyOlx0dGNmX2Jsb2NrX3B1dF9leHQocS1cdTAwM2VlZ3Jlc3NfYmxvY2ssIHNjaCwgXHUwMDI2cS1cdTAwM2VlZ3Jlc3NfYmxvY2tfaW5mbyk7XG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0zMDMtXG4tLVxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYz0xNTk9bXVsdGlxX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy0xNjMtXG5uZXQvc2NoZWQvc2NoX211bHRpcS5jOjE2NDpcdHRjZl9ibG9ja19wdXQocS1cdTAwM2VibG9jayk7XG5uZXQvc2NoZWQvc2NoX211bHRpcS5jLTE2NS1cdGZvciAoYmFuZCA9IDA7IGJhbmQgXHUwMDNjIHEtXHUwMDNlYmFuZHM7IGJhbmQmIzQzOyYjNDM7KVxuLS1cbm5ldC9zY2hlZC9zY2hfcHJpby5jPTE2NT1wcmlvX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9wcmlvLmMtMTY5LVxubmV0L3NjaGVkL3NjaF9wcmlvLmM6MTcwOlx0dGNmX2Jsb2NrX3B1dChxLVx1MDAzZWJsb2NrKTtcbm5ldC9zY2hlZC9zY2hfcHJpby5jLTE3MS1cdHByaW9fb2ZmbG9hZChzY2gsIE5VTEwpO1xuLS1cbm5ldC9zY2hlZC9zY2hfcWZxLmM9MTQ5ND1zdGF0aWMgdm9pZCBxZnFfZGVzdHJveV9xZGlzYyhzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX3FmcS5jLTE1MDAtXG5uZXQvc2NoZWQvc2NoX3FmcS5jOjE1MDE6XHR0Y2ZfYmxvY2tfcHV0KHEtXHUwMDNlYmxvY2spO1xubmV0L3NjaGVkL3NjaF9xZnEuYy0xNTAyLVxuLS1cbm5ldC9zY2hlZC9zY2hfc2ZiLmM9NDc4PXN0YXRpYyB2b2lkIHNmYl9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfc2ZiLmMtNDgxLVxubmV0L3NjaGVkL3NjaF9zZmIuYzo0ODI6XHR0Y2ZfYmxvY2tfcHV0KHEtXHUwMDNlYmxvY2spO1xubmV0L3NjaGVkL3NjaF9zZmIuYy00ODMtXHRxZGlzY19wdXQocS1cdTAwM2VxZGlzYyk7XG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYz03NjU9c3RhdGljIHZvaWQgc2ZxX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9zZnEuYy03NjgtXG5uZXQvc2NoZWQvc2NoX3NmcS5jOjc2OTpcdHRjZl9ibG9ja19wdXQocS1cdTAwM2VibG9jayk7XG5uZXQvc2NoZWQvc2NoX3NmcS5jLTc3MC1cdFdSSVRFX09OQ0UocS1cdTAwM2VwZXJ0dXJiX3BlcmlvZCwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDA6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM4NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDk0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHRjZl9ibG9ja19wdXQgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBfX3RjZl9ibG9ja19wdXRgIGluIGBuZXQvc2NoZWQvY2xzX2FwaS5jYC4gSXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24sIGNhbGxlZCBieSBib3RoIGB0Y2ZfYmxvY2tfcHV0YCBhbmQgYHRjZl9ibG9ja19wdXRfZXh0YCwgc28gd2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2FyZWZ1bGx5LiBUaGUgY3J1Y2lhbCBjaGFuZ2UgaGVyZSBpcyB0aGUgbW92ZW1lbnQgb2YgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChibG9jaywgcSwgZWkpYCB0byB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uLCByaWdodCBiZWZvcmUgYW55dGhpbmcgZWxzZS4KCkluaXRpYWxseSwgaXQgd2FzIGluc2lkZSBhIGNvbmRpdGlvbmFsIGJsb2NrIGNvbnRyb2xsZWQgYnkgYHJlZmNvdW50X2RlY19hbmRfbXV0ZXhfbG9jaygmYW1wO2Jsb2NrLSZndDtyZWZjbnQsICZhbXA7YmxvY2stJmd0O2xvY2spYC4gSXQgd2FzIGFsc28gaW5zaWRlIGFuIGBlbHNlIGlmIChxKWAgYmxvY2suIE5vdywgaXQmIzM5O3MgdW5jb25kaXRpb25hbGx5IGNhbGxlZCBpZiBgcWAgaXMgbm90IE5VTEwuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhpcyBzZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcmVvcmRlcmluZywgYnV0IEkmIzM5O20gdHJ5aW5nIHRvIHNlZSBpZiB0aGVyZSBpcyBtb3JlIHRvIGl0LiBCZWZvcmUsIHRoZSB1bmJpbmRpbmcgaGFwcGVuZWQgZWl0aGVyIHdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCB3ZW50IHRvIHplcm8gKGluc2lkZSB0aGUgYGlmYCkgKm9yKiB3aGVuIGBxYCB3YXMgcHJlc2VudCBidXQgdGhlIHJlZmNvdW50IGRpZG4mIzM5O3QgZHJvcCB0byB6ZXJvLiBUaGUgZGlmZiBzaG93cyBpdCB3YXMgYWx3YXlzIGRvaW5nIHRoZSB1bmJpbmQgaWYgYHFgIHdhcyBub3QgTlVMTC4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zLiBgcmVmY291bnRfZGVjX2FuZF9tdXRleF9sb2NrYCBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IG9ubHkgKmFjcXVpcmVzKiB0aGUgbG9jayBpZiB0aGUgcmVmY291bnQgKmRyb3BzKiB0byB6ZXJvLiBPdGhlcndpc2UsIGl0IGp1c3QgZGVjcmVtZW50cy4KClNvIGJlZm9yZSwgd2hlbiB0aGUgcmVmY291bnQgKmRpZCogZ28gdG8gemVybywgd2UmIzM5O2QgYWNxdWlyZSB0aGUgbG9jaywgdGhlbiBjYWxsIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRgLCBhbmQgdGhlbiBwcm9jZWVkIHdpdGggZGVzdHJ1Y3Rpb24gb3IgZmx1c2hpbmcuIE5vdywgd2UmIzM5O3JlIHVuYmluZGluZyAqYmVmb3JlKiB0aGUgcmVmY291bnQgaXMgZGVjcmVtZW50ZWQsIGFuZCBjcnVjaWFsbHksICpiZWZvcmUqIHdlIHBvdGVudGlhbGx5IGFjcXVpcmUgdGhlIGxvY2suIFRoaXMgc2VlbXMgbGlrZSBhIGNoYW5nZSBpbiBzeW5jaHJvbml6YXRpb24gc3RyYXRlZ3kuIFdlJiMzOTtyZSBkZWNvdXBsaW5nIHRoZSBvZmZsb2FkIHVuYmluZGluZyBmcm9tIHRoZSBsb2NrIGFjcXVpc2l0aW9uLgoKVGhpcyBpcyBsaWtlbHkgYSBzYWZldHkgaW1wcm92ZW1lbnQuIEl0IGxpa2VseSBhdm9pZHMgYSBwb3RlbnRpYWwgZGVhZGxvY2ssIG9yIHBvdGVudGlhbGx5IGVsaW1pbmF0ZXMgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhpcyBpcyBiZWNhdXNlIHdlIGNvdWxkIGJlIGZyZWVpbmcgc29tZXRoaW5nIGJlZm9yZSBpdCBpcyB1bmJvdW5kLiBPciBpdCBqdXN0IGNoYW5nZXMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMuIEkgbmVlZCB0byBkaWcgaW50byBgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kYCB0byB1bmRlcnN0YW5kIHRoZSBkZXRhaWxzLiBJdCYjMzk7cyBwcm9iYWJseSByZWxhdGVkIHRvIGVuc3VyaW5nIHRoYXQgdGhlIG9mZmxvYWQgb3BlcmF0aW9ucyBhcmUgY29tcGxldGVkICpiZWZvcmUqIHdlIHBvdGVudGlhbGx5IHN0YXJ0IGZyZWVpbmcgcmVzb3VyY2VzIG9yIG1vZGlmeWluZyB0aGUgYmxvY2smIzM5O3Mgc3RhdGUgaW4gYSB3YXkgdGhhdCB0aGUgb2ZmbG9hZCBtZWNoYW5pc20gbWlnaHQgcmVseSBvbi4gVGhpcyBpcyBsaWtlbHkgdGhlIGNydWNpYWwgcG9pbnQuIExldCYjMzk7cyBzZWUgaWYgdGhlIGNvZGUgY29tbWVudCBleHBsYWlucyBhbnl0aGluZyBhYm91dCB0aGUgcmVhc29uIGZvciB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmM9ODU1PXN0YXRpYyBpbnQgdGNmX2Jsb2NrX29mZmxvYWRfYmluZChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtODk0LVxubmV0L3NjaGVkL2Nsc19hcGkuYzo4OTU6c3RhdGljIHZvaWQgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTg5Ni1cdFx0XHRcdCAgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWkpXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0xMzEyPXN0YXRpYyB2b2lkIF9fdGNmX2Jsb2NrX3B1dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTMxNS1cdGlmIChxKVxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMzE2Olx0XHR0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTMxNy1cbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE0NjI9aW50IHRjZl9ibG9ja19nZXRfZXh0KHN0cnVjdCB0Y2ZfYmxvY2sgKipwX2Jsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTExLWVycl9kZXZfaW5zZXJ0OlxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTEyOlx0dGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKGJsb2NrLCBxLCBlaSk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1MTMtZXJyX2Jsb2NrX29mZmxvYWRfYmluZDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI5MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHVuYmluZGluZyBwcm9jZXNzIHdvcmtzIHdpdGhpbiB0aGUgbGFyZ2VyIGZyYW1ld29yay4gSSBrbm93IHRoZSBjb3JlIGNvbmNlcHQgaXMgdGhlIHJlbW92YWwgb2YgdGhlIHNwZWNpZmljIG9mZmxvYWQgYXNzb2NpYXRpb24sIGJ1dCB0aGUgbnVhbmNlcyBhcmUgd2hhdCBJJiMzOTttIGFmdGVyLiBXaGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQ/IEhvdyBkb2VzIGl0IGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIGlmIGF0IGFsbD8gSSBuZWVkIHRvIHRoaW5rIGFib3V0IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgYW5kIGxvY2tpbmcgc3RyYXRlZ2llcyBoZXJlLCBlc3BlY2lhbGx5IGluIGEgbXVsdGktdGhyZWFkZWQgb3IgY29uY3VycmVudCBlbnZpcm9ubWVudC4gQW55IHBvdGVudGlhbCByZXNvdXJjZSBsZWFrcz8gVGhpcyBmdW5jdGlvbiBpcyBjcml0aWNhbCBmb3IgbWFpbnRhaW5pbmcgc3lzdGVtIHN0YWJpbGl0eS4gSSBuZWVkIHRvIGZ1bGx5IGdyYXNwIGl0cyByb2xlIGluIHRlYXJpbmcgZG93biB0aGUgb2ZmbG9hZCBzZXR1cC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgc3VidGxlIGRldGFpbHMsIHRoZSBlcnJvciBoYW5kbGluZywgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyB1bmJpbmQgb3BlcmF0aW9uIG9uIG90aGVyIHBhcnRzIG9mIHRoZSB0cmFmZmljIGNvbnRyb2wgc3RhY2suIFVsdGltYXRlbHksIEkgd2FudCB0byBjb25maXJtIGl0JiMzOTtzIGltcGxlbWVudGVkIGNvcnJlY3RseSBhbmQgZWZmaWNpZW50bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc19hcGkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg5NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODk1Olx0c3RhdGljIHZvaWQgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXG4gODk2Olx0XHRcdFx0XHQgICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpKVxuIDg5NzpcdHtcbiA4OTg6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxLVx1MDAzZWRldl9xdWV1ZS1cdTAwM2VkZXY7XG4gODk5Olx0XHRpbnQgZXJyO1xuIDkwMDpcdFxuIDkwMTpcdFx0ZG93bl93cml0ZShcdTAwMjZibG9jay1cdTAwM2VjYl9sb2NrKTtcbiA5MDI6XHRcdGVyciA9IHRjZl9ibG9ja19vZmZsb2FkX2NtZChibG9jaywgZGV2LCBxLCBlaSwgRkxPV19CTE9DS19VTkJJTkQsIE5VTEwpO1xuIDkwMzpcdFx0aWYgKGVyciA9PSAtRU9QTk9UU1VQUClcbiA5MDQ6XHRcdFx0Z290byBub19vZmZsb2FkX2Rldl9kZWM7XG4gOTA1Olx0XHR1cF93cml0ZShcdTAwMjZibG9jay1cdTAwM2VjYl9sb2NrKTtcbiA5MDY6XHRcdHJldHVybjtcbiA5MDc6XHRcbiA5MDg6XHRub19vZmZsb2FkX2Rldl9kZWM6XG4gOTA5Olx0XHRXQVJOX09OKGJsb2NrLVx1MDAzZW5vb2ZmbG9hZGRldmNudC0tID09IDApO1xuIDkxMDpcdFx0dXBfd3JpdGUoXHUwMDI2YmxvY2stXHUwMDNlY2JfbG9jayk7XG4gOTExOlx0fVxuIDkxMjpcdFxuIDkxMzpcdHN0YXRpYyBpbnRcbiA5MTQ6XHR0Y2ZfY2hhaW4wX2hlYWRfY2hhbmdlX2NiX2FkZChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jayxcbiA5MTU6XHRcdFx0XHQgICAgICBzdHJ1Y3QgdGNmX2Jsb2NrX2V4dF9pbmZvICplaSxcbiA5MTY6XHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4gOTE3Olx0e1xuIDkxODpcdFx0c3RydWN0IHRjZl9maWx0ZXJfY2hhaW5fbGlzdF9pdGVtICppdGVtO1xuIDkxOTpcdFx0c3RydWN0IHRjZl9jaGFpbiAqY2hhaW4wO1xuIDkyMDpcdFxuIDkyMTpcdFx0aXRlbSA9IGttYWxsb2Nfb2JqKCppdGVtKTtcbiA5MjI6XHRcdGlmICghaXRlbSkge1xuIDkyMzpcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O01lbW9yeSBhbGxvY2F0aW9uIGZvciBoZWFkIGNoYW5nZSBjYWxsYmFjayBpdGVtIGZhaWxlZFwmIzM0Oyk7XG4gOTI0Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDAyNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDYwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgTmV0d29yayBTY2hlZHVsZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCBpdCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG5ldC9zY2hlZC9jbHNfYXBpLmNgIGNvZGUuIEl0IGFwcGVhcnMgdGhlIGNoYW5nZSBpbnZvbHZlcyBob3cgdGhlIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRgIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHR3byBsb2NrczogYGJsb2NrLSZndDtsb2NrYCAoYSBtdXRleCkgYW5kIGBibG9jay0mZ3Q7Y2JfbG9ja2AgKGEgcmVhZC13cml0ZSBzZW1hcGhvcmUsIG9yIHJ3c2VtKS4KCkJlZm9yZSB0aGlzIHBhdGNoLCB0aGVyZSB3YXMgYSBjb25kaXRpb25hbCBwYXRoLiBUaGUgY29kZSB1c2VkIGByZWZjb3VudF9kZWNfYW5kX211dGV4X2xvY2soJmFtcDtibG9jay0mZ3Q7cmVmY250LCAmYW1wO2Jsb2NrLSZndDtsb2NrKWAuIElmIHRoYXQgZnVuY3Rpb24gcmV0dXJuZWQgdHJ1ZSwgbWVhbmluZyBpdCBzdWNjZXNzZnVsbHkgZGVjcmVtZW50ZWQgdGhlIHJlZmVyZW5jZSBjb3VudCBhbmQgYWNxdWlyZWQgdGhlIGBibG9jay0mZ3Q7bG9ja2AgbXV0ZXgsIGl0IHdvdWxkICp0aGVuKiBjYWxsIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRgLiBUaGlzIGNyZWF0ZXMgYSBwb3RlbnRpYWwgbG9jayBvcmRlcmluZyBpc3N1ZSBiZWNhdXNlIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRgIHRha2VzIHRoZSBgYmxvY2stJmd0O2NiX2xvY2tgLiBJZiBgcmVmY291bnRfZGVjX2FuZF9tdXRleF9sb2NrYCByZXR1cm5lZCBmYWxzZSwgaXQgb25seSBjYWxscyBgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kYC4gTm93LCBpdCAqYWx3YXlzKiBjYWxscyBgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kYCBiZWZvcmUgYXR0ZW1wdGluZyB0byBhY3F1aXJlIHRoZSBgYmxvY2stJmd0O2xvY2tgLiBUaGlzIGNoYW5nZSBsb29rcyBsaWtlIGEgZGVsaWJlcmF0ZSBhdm9pZGFuY2Ugb2YgYSBsb2NrIGludmVyc2lvbiwgb3IgaXQgbWF5IGp1c3QgYmUgdG8gZW5zdXJlIHRoYXQgdW5iaW5kaW5nIGhhcHBlbnMgYmVmb3JlIHNvbWV0aGluZyBlbHNlIHRoYXQgbWlnaHQgbmVlZCB0aGUgYGJsb2NrLSZndDtsb2NrYC4gVGhlIGNvZGUgZG9lc24mIzM5O3QgZXhwbGljaXRseSBzdGF0ZSB0aGUgKndoeSosIGJ1dCB0aGF0JiMzOTtzIG15IHdvcmtpbmcgaHlwb3RoZXNpcy4KCkkgdGhpbmsgdGhlIGltcG9ydGFudCB0aGluZyBpcyB0aGF0IGByZWZjb3VudF9kZWNfYW5kX211dGV4X2xvY2tgIGNhbiAqZHJvcCogdGhlIHJlZmVyZW5jZSBjb3VudCB0byB6ZXJvLiBUaGF0JiMzOTtzIGEgY3JpdGljYWwgbW9tZW50LiBJZiB0aGUgcmVmZXJlbmNlIGNvdW50IGRyb3BzIHRvIHplcm8sIHRoZSBibG9jayBpcyBiZWluZyBkZXN0cm95ZWQuIFRoZSBwYXRjaCBlZmZlY3RpdmVseSBtYWtlcyBpdCB1bmJpbmQgdGhlIG9mZmxvYWQgKmJlZm9yZSogdGhlIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byB6ZXJvLiBUaGF0IGVuc3VyZXMgdGhlIGJsb2NrIGlzIHZhbGlkIHdoaWxlIGl0JiMzOTtzIGJlaW5nIHVuYm91bmQuIERvaW5nIGl0IHRoZSAqb3RoZXIqIHdheSAtIGFmdGVyIGRyb3BwaW5nIHRoZSByZWZjb3VudCB0byB6ZXJvIC0gY291bGQgbGVhZCB0byBwcm9ibGVtcyBpZiBgdGNmX2Jsb2NrX29mZmxvYWRfY21kYCAob3IgYSBmdW5jdGlvbiBpdCBjYWxscykgdHJpZXMgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgYmxvY2sgb3IgcmVsaWVzIG9uIGl0cyByZWZjb3VudCBiZWluZyBhYm92ZSB6ZXJvLCB3aGljaCBpcyBsaWtlbHkuIEl0ICp3b3VsZCogY2F1c2UgYSBjcmFzaC4KCkl0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGluZy9jbGFzc2lmaWNhdGlvbiBBUEksIHNvIGl0JiMzOTtzIGFic29sdXRlbHkgd29ydGggZnV6emluZyB0byBjb25maXJtIHRoZSBmaXguCgpPa2F5LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBmb2N1cyBzeW1ib2xzLiBUaGUgY2hhbmdlIGlzIGNlbnRlcmVkIGFyb3VuZCB0aGUgc3RhdGljIGZ1bmN0aW9uIGBfX3RjZl9ibG9ja19wdXRgLiBUaGUgZGlyZWN0IGNhbGxlcnMgYXJlIGB0Y2ZfYmxvY2tfcHV0YCBhbmQgYHRjZl9ibG9ja19wdXRfZXh0YC4gYHRjZl9ibG9ja19yZWZjbnRfcHV0YCBhbHNvIGNhbGxzIGl0LCBidXQgd2l0aCBgcWAgYXMgTlVMTCwgc28gYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAgaXNuJiMzOTt0IGNhbGxlZCB0aGVyZS4gU28sIGB0Y2ZfYmxvY2tfcHV0YCBhbmQgYHRjZl9ibG9ja19wdXRfZXh0YCBhcmUgdGhlIGludGVyZXN0aW5nIGNhbGxlcnMgaGVyZS4gTGV0IG1lIGRvdWJsZSBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIGdvb2QgZm9jdXMgc3ltYm9scy4gTG9va3MgbGlrZSBgdGNmX2Jsb2NrX3B1dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0X2V4dGAgYXJlIGdvb2QgY2FuZGlkYXRlcy4gQW5kIHRoZXkgYXJlICpleHBvcnRlZCosIG5vdCBzdGF0aWMhIExldCYjMzk7cyBjaGVjayB0aG9zZSBpbiBgbmV0L3NjaGVkL2Nsc19hcGkuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZvaWQgdGNmX2Jsb2NrX3B1dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc19hcGkuYz0xNTQzPUVYUE9SVF9TWU1CT0wodGNmX2Jsb2NrX2dldCk7XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTQ3LSAqL1xubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTQ4OnZvaWQgdGNmX2Jsb2NrX3B1dF9leHQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU0OS1cdFx0ICAgICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTU2Mj1FWFBPUlRfU1lNQk9MKHRjZl9ibG9ja19wdXRfZXh0KTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU2My1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU2NDp2b2lkIHRjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2spXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU3MwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIEV4cG9ydGVkIFN5bWJvbHMgYW5kIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBjb25maXJtaW5nIHRoYXQgdGhlc2Ugc3ltYm9scyBhcmUsIGluIGZhY3QsIGV4cG9ydGVkLiBOb3csIHRvIGJlIHRob3JvdWdoLCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBDT05GSUcgb3B0aW9ucyB0aGF0IGFyZSBwcmVyZXF1aXNpdGVzIG9yIGluZmx1ZW5jZSB0aGUgY29tcGlsYXRpb24gb2YgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZS4gTG9va2luZyBpbnRvIGl0LCB0aGUgZmlsZSBgbmV0L3NjaGVkL2Nsc19hcGkuY2Agc2VlbXMgdG8gY29tZSBpbnRvIHBsYXkgd2hlbiBgQ09ORklHX05FVF9TQ0hFRGAgb3IgcmVsYXRlZCBuZXR3b3JraW5nIHNjaGVkdWxlciBvcHRpb25zIGFyZSBlbmFibGVkLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdyBhbmQgaGVscHMgdG8gY2xhcmlmeSB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjbHNfYXBpLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX05FVF9TQ0hFRClcdFx0JiM0Mzs9IHNjaF9hcGkubyBzY2hfYmxhY2tob2xlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkVUX0NMUylcdFx0JiM0Mzs9IGNsc19hcGkub1xubmV0L3NjaGVkL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19ORVRfQ0xTX0FDVClcdCYjNDM7PSBhY3RfYXBpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4NTgKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIENsYXNzaWZpZXIgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyBJIHNlZSB3ZSBuZWVkIGBDT05GSUdfTkVUX0NMU2AuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRoZSBtb3JlIGludGVyZXN0aW5nIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgYWxzbyByZXF1aXJlIGBDT05GSUdfTkVUX1NDSEVEYC4gSW4gbXkgZXhwZXJpZW5jZSwgYW5kIGJhc2VkIG9uIHRoZSB0eXBpY2FsIGRlcGVuZGVuY2llcyBJJiMzOTt2ZSBzZWVuIGluIHRoZXNlIGtpbmRzIG9mIG5ldHdvcmsgY29uZmlndXJhdGlvbnMsIGBORVRfQ0xTYCBvZnRlbiwgaWYgbm90ICp1c3VhbGx5KiwgbGVhbnMgb24gYE5FVF9TQ0hFRGAuIEl0JiMzOTtzIGEgc3RhbmRhcmQgcGF0dGVybi4gVGltZSB0byBjb25maXJtIHRoYXQgcmVsYXRpb25zaGlwIGFuZCBlbnN1cmUgZXZlcnl0aGluZyBpcyBwcm9wZXJseSBzZXQgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQ0xTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9NDc5PWNvbW1lbnQgXCYjMzQ7Q2xhc3NpZmljYXRpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnLTQ4MC1cbm5ldC9zY2hlZC9LY29uZmlnOjQ4MTpjb25maWcgTkVUX0NMU1xubmV0L3NjaGVkL0tjb25maWctNDgyLVx0Ym9vbFxubmV0L3NjaGVkL0tjb25maWctNDgzLVxubmV0L3NjaGVkL0tjb25maWc6NDg0OmNvbmZpZyBORVRfQ0xTX0JBU0lDXG5uZXQvc2NoZWQvS2NvbmZpZy00ODUtXHR0cmlzdGF0ZSBcJiMzNDtFbGVtZW50YXJ5IGNsYXNzaWZpY2F0aW9uIChCQVNJQylcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy00OTMtXG5uZXQvc2NoZWQvS2NvbmZpZzo0OTQ6Y29uZmlnIE5FVF9DTFNfUk9VVEU0XG5uZXQvc2NoZWQvS2NvbmZpZy00OTUtXHR0cmlzdGF0ZSBcJiMzNDtSb3V0aW5nIGRlY2lzaW9uIChST1VURSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01MDUtXG5uZXQvc2NoZWQvS2NvbmZpZzo1MDY6Y29uZmlnIE5FVF9DTFNfRldcbm5ldC9zY2hlZC9LY29uZmlnLTUwNy1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBtYXJrIChGVylcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01MTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo1MTY6Y29uZmlnIE5FVF9DTFNfVTMyXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXHR0cmlzdGF0ZSBcJiMzNDtVbml2ZXJzYWwgMzJiaXQgY29tcGFyaXNvbnMgdy8gaGFzaGluZyAoVTMyKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTUzMz1jb25maWcgQ0xTX1UzMl9NQVJLXG4tLVxubmV0L3NjaGVkL0tjb25maWctNTM4LVxubmV0L3NjaGVkL0tjb25maWc6NTM5OmNvbmZpZyBORVRfQ0xTX0ZMT1dcbm5ldC9zY2hlZC9LY29uZmlnLTU0MC1cdHRyaXN0YXRlIFwmIzM0O0Zsb3cgY2xhc3NpZmllclwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTU0OS1cbm5ldC9zY2hlZC9LY29uZmlnOjU1MDpjb25maWcgTkVUX0NMU19DR1JPVVBcbm5ldC9zY2hlZC9LY29uZmlnLTU1MS1cdHRyaXN0YXRlIFwmIzM0O0NvbnRyb2wgR3JvdXAgQ2xhc3NpZmllclwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTU2MS1cbm5ldC9zY2hlZC9LY29uZmlnOjU2Mjpjb25maWcgTkVUX0NMU19CUEZcbm5ldC9zY2hlZC9LY29uZmlnLTU2My1cdHRyaXN0YXRlIFwmIzM0O0JQRi1iYXNlZCBjbGFzc2lmaWVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNTcxLVxubmV0L3NjaGVkL0tjb25maWc6NTcyOmNvbmZpZyBORVRfQ0xTX0ZMT1dFUlxubmV0L3NjaGVkL0tjb25maWctNTczLVx0dHJpc3RhdGUgXCYjMzQ7Rmxvd2VyIGNsYXNzaWZpZXJcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01ODEtXG5uZXQvc2NoZWQvS2NvbmZpZzo1ODI6Y29uZmlnIE5FVF9DTFNfTUFUQ0hBTExcbm5ldC9zY2hlZC9LY29uZmlnLTU4My1cdHRyaXN0YXRlIFwmIzM0O01hdGNoLWFsbCBjbGFzc2lmaWVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTcwMS1cbm5ldC9zY2hlZC9LY29uZmlnOjcwMjpjb25maWcgTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcwMy1cdGJvb2wgXCYjMzQ7QWN0aW9uc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjcyMwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgTkVUX0NMU2AgVmFyaWFibGUqKgoKT2theSwgc28gYE5FVF9DTFNgIGlzIGEgQm9vbGVhbiB2YWx1ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCBzbyBzb21ldGhpbmcgZWxzZSBpcyBmbGlwcGluZyB0aGlzIHN3aXRjaC4mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpkcml2aW5nKiB0aGF0IEJvb2xlYW4gc3RhdGUuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjb2RlYmFzZSBvciBjb25maWd1cmF0aW9uIHRvIHNlZSB3aGVyZSBgTkVUX0NMU2AgaXMgYmVpbmcgYXNzaWduZWQsIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIHNlbGVjdGlvbiBjcml0ZXJpYSBpcyBjcml0aWNhbCBoZXJlLiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbiBpdCYjMzk7cyBkZXRlcm1pbmVkIGJ5IGEgc2V0IG9mIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgb3IgYSBsb29rdXAgdGFibGUsIGFuZCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhvc2UgdHJpZ2dlcnMuIEtub3dpbmcgdGhlIHVwc3RyZWFtIGxvZ2ljIHdpbGwgcHJvdmlkZSBpbnNpZ2h0IGludG8gaG93IHRoZSBuZXR3b3JrIGJlaGF2aW9yIGlzIGJlaW5nIGNvbnRyb2xsZWQuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoZSBwb2ludCB3aGVyZSBgTkVUX0NMU2AgaXMgdXNlZCB0byBpdHMgcG9pbnQgb2YgZGVmaW5pdGlvbi4gTGV0JiMzOTtzIGdldCB0byB3b3JrIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTkVUX0NMUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTQ4ND1jb25maWcgTkVUX0NMU19CQVNJQ1xubmV0L3NjaGVkL0tjb25maWctNDg1LVx0dHJpc3RhdGUgXCYjMzQ7RWxlbWVudGFyeSBjbGFzc2lmaWNhdGlvbiAoQkFTSUMpXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo0ODY6XHRzZWxlY3QgTkVUX0NMU1xubmV0L3NjaGVkL0tjb25maWctNDg3LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTQ5ND1jb25maWcgTkVUX0NMU19ST1VURTRcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy00OTctXHRzZWxlY3QgSVBfUk9VVEVfQ0xBU1NJRFxubmV0L3NjaGVkL0tjb25maWc6NDk4Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTQ5OS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01MDY9Y29uZmlnIE5FVF9DTFNfRldcbm5ldC9zY2hlZC9LY29uZmlnLTUwNy1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBtYXJrIChGVylcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjUwODpcdHNlbGVjdCBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy01MDktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTE2PWNvbmZpZyBORVRfQ0xTX1UzMlxubmV0L3NjaGVkL0tjb25maWctNTE3LVx0dHJpc3RhdGUgXCYjMzQ7VW5pdmVyc2FsIDMyYml0IGNvbXBhcmlzb25zIHcvIGhhc2hpbmcgKFUzMilcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjUxODpcdHNlbGVjdCBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy01MTktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTM5PWNvbmZpZyBORVRfQ0xTX0ZMT1dcbm5ldC9zY2hlZC9LY29uZmlnLTU0MC1cdHRyaXN0YXRlIFwmIzM0O0Zsb3cgY2xhc3NpZmllclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTQxOlx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTU0Mi1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01NTA9Y29uZmlnIE5FVF9DTFNfQ0dST1VQXG5uZXQvc2NoZWQvS2NvbmZpZy01NTEtXHR0cmlzdGF0ZSBcJiMzNDtDb250cm9sIEdyb3VwIENsYXNzaWZpZXJcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjU1MjpcdHNlbGVjdCBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy01NTMtXHRzZWxlY3QgQ0dST1VQX05FVF9DTEFTU0lEXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTYyPWNvbmZpZyBORVRfQ0xTX0JQRlxubmV0L3NjaGVkL0tjb25maWctNTYzLVx0dHJpc3RhdGUgXCYjMzQ7QlBGLWJhc2VkIGNsYXNzaWZpZXJcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjU2NDpcdHNlbGVjdCBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy01NjUtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTcyPWNvbmZpZyBORVRfQ0xTX0ZMT1dFUlxubmV0L3NjaGVkL0tjb25maWctNTczLVx0dHJpc3RhdGUgXCYjMzQ7Rmxvd2VyIGNsYXNzaWZpZXJcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjU3NDpcdHNlbGVjdCBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy01NzUtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTgyPWNvbmZpZyBORVRfQ0xTX01BVENIQUxMXG5uZXQvc2NoZWQvS2NvbmZpZy01ODMtXHR0cmlzdGF0ZSBcJiMzNDtNYXRjaC1hbGwgY2xhc3NpZmllclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTg0Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTU4NS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01OTI9Y29uZmlnIE5FVF9FTUFUQ0hcbm5ldC9zY2hlZC9LY29uZmlnLTU5My1cdGJvb2wgXCYjMzQ7RXh0ZW5kZWQgTWF0Y2hlc1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTk0Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTU5NS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03MDI9Y29uZmlnIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXHRib29sIFwmIzM0O0FjdGlvbnNcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjcwNDpcdHNlbGVjdCBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy03MDUtXHRzZWxlY3QgTkVUX1hHUkVTU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzc5NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQ29uZmlndXJhdGlvbiBRdWFuZGFyeSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRvIGVuYWJsZSBgTkVUX0NMU2AsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGRpcmVjdCBhcHByb2FjaCBpbnZvbHZlcyBlbmFibGluZyBlaXRoZXIgYE5FVF9DTFNfQkFTSUNgLCBgTkVUX0NMU19CUEZgLCBgTkVUX0NMU19GTE9XRVJgLCBvciBgTkVUX0NMU19BQ1RgLiBUbyBrZWVwIHRoaW5ncyBzaW1wbGUgYW5kIGVuc3VyZSB3ZSBoYXZlIG1heGltdW0gY292ZXJhZ2UsIEkmIzM5O20ganVzdCBnb2luZyB0byBnbyBhaGVhZCBhbmQgc3BlY2lmeSBhbGwgb2YgdGhlbTogYE5FVF9DTFNfQkFTSUNgLCBgTkVUX0NMU19BQ1RgLCBgTkVUX0NMU19CUEZgLCBgTkVUX0NMU19GTE9XRVJgLCBhbmQgYE5FVF9DTFNfVTMyYC4gVGhlIHBhcmVudCBtZW51IGZvciBhbGwgb2YgdGhpcyBpcyBgTkVUX1NDSEVEYCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5LCBhbmQgdGhlIGJ1aWxkIHN5c3RlbSBzaG91bGQgcmVzb2x2ZSBhbnkgZGVwZW5kZW5jaWVzLiBUaGF0JiMzOTtzIHRoZSBtb3N0IHJvYnVzdCB3YXkgdG8gaGFuZGxlIGl0LCBtYWtpbmcgc3VyZSBhbGwgdGhlIGNsYXNzaWZpZXIgY29tcG9uZW50cyBhcmUgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZy01LVxubmV0L3NjaGVkL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctNy1cdGJvb2wgXCYjMzQ7UW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTczCgkJCQkJCQlvdXRwdXQ6IDE2MAoJCQkJCQkJdGhvdWdodHM6IDMyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBUaGlzIE5ldHdvcmsgU2NoZWR1bGVyIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBgTkVUX1NDSEVEYCwgd2hpY2ggaXMga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2UsIHdoaWNoIGFwcGVhcnMgdG8gaW52b2x2ZSB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyB3aXRoaW4gdGhlIG5ldHdvcmsgc2NoZWR1bGVyJiMzOTtzIGNvbnRyb2wgZmxvdy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgYHRjZl9ibG9ja19wdXRgIGFuZCBgdGNmX2Jsb2NrX3B1dF9leHRgLCBzaW5jZSB0aGV5IGFyZSBleHBvcnRlZCBhbmQgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIGFuZCBhcmUgbGlrZWx5IHRvIGJlIGVudHJ5IHBvaW50cyBmb3IgdGhpcyBsb2dpYy4KCkFyZSB0aGV5IGhvdC1wYXRoLCB0aG91Z2g/IExldCYjMzk7cyBzZWUuLi4gYHRjZl9ibG9ja19wdXRgIGdldHMgY2FsbGVkIGR1cmluZyBxZGlzYyBvciBjbGFzcyBkZXN0cnVjdGlvbi4gYHRjZl9ibG9ja19wdXRfZXh0YCBpcyBjYWxsZWQgd2hlbiBhIGJsb2NrIGlzIHB1dC4gVGhhdCBtZWFucyB0aGVzZSBhcmUgKmNvbnRyb2wgcGF0aCogb3BlcmF0aW9ucyByZWxhdGVkIHRvIHNldHVwIGFuZCB0ZWFyZG93biwgbm90IHRoZSBkYXRhIHBhdGggaGFuZGxpbmcgdGhlIGFjdHVhbCBwYWNrZXQgcHJvY2Vzc2luZy4gR29vZCwgdGhleSYjMzk7cmUgbm90IHBlcmZvcm1hbmNlLWNyaXRpY2FsLCBhbmQgYXJlIGxpa2VseSB0aGUgcmlnaHQgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLgoKVGhlcmVmb3JlLCBoZXJlJiMzOTtzIG15IHN1bW1hcnkgc28gZmFyOiBXZSBzaG91bGQgY29uc2lkZXIgdGhpcyBwYXRjaCBXb3J0aEZ1enppbmcuIFRoZSBGb2N1c1N5bWJvbHMgYXJlIGRlZmluaXRpdmVseSBgdGNmX2Jsb2NrX3B1dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0X2V4dGAuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGZvbGxvd2luZyBFbmFibGVDb25maWdzIGFyZSBlbmFibGVkIGR1cmluZyB0ZXN0aW5nOiBgTkVUX1NDSEVEYCwgYE5FVF9DTFNgLCBgTkVUX0NMU19CQVNJQ2AsIGBORVRfQ0xTX0FDVGAsIGBORVRfQ0xTX0JQRmAsIGBORVRfQ0xTX0ZMT1dFUmAsIGFuZCBgTkVUX0NMU19VMzJgLiBUaGUgcmF0aW9uYWxlIGlzIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGBfX3RjZl9ibG9ja19wdXRgLCBzcGVjaWZpY2FsbHkgYWx0ZXJpbmcgdGhlIHNlcXVlbmNlIG9mIG9mZmxvYWQgdW5iaW5kaW5nIHJlbGF0aXZlIHRvIGxvY2sgYWNxdWlzaXRpb24gYW5kIHJlZmNvdW50IGRlY3JlbWVudGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBhbmQgY2xhc3NpZmllciBBUEkgdGhhdCBhZmZlY3RzIGNvbnRyb2wgcGF0aCB0ZWFyZG93biwgc28gaXQgaXMgaW1wb3J0YW50IHRvIHRlc3QgdGhpcy4KCkxldCBtZSBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBUaGUgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAgZnVuY3Rpb24gaXMgc3RhdGljLiBPa2F5LCB0aGF0IGNvbmZpcm1zIHRoYXQgYHRjZl9ibG9ja19wdXRgIGFuZCBgdGNmX2Jsb2NrX3B1dF9leHRgIGFyZSB0aGUgcHJvcGVyIGVudHJ5IHBvaW50cyBmb3IgYW5hbHlzaXMgYW5kIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX0NMUyYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0JBU0lDJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQlBGJiMzNDssCiAgICAmIzM0O05FVF9DTFNfRkxPV0VSJiMzNDssCiAgICAmIzM0O05FVF9DTFNfVTMyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNmX2Jsb2NrX3B1dCYjMzQ7LAogICAgJiMzNDt0Y2ZfYmxvY2tfcHV0X2V4dCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGluIGBfX3RjZl9ibG9ja19wdXRgLCB1bmJpbmRpbmcgdGhlIG9mZmxvYWQgYmVmb3JlIHRha2luZyB0aGUgYmxvY2sgbG9jayBhbmQgZGVjcmVtZW50aW5nIHRoZSByZWZjb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZy9jbGFzc2lmaWVyIEFQSSBhbmQgYWZmZWN0cyBjb250cm9sIHBhdGggdGVhcmRvd24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQkFTSUMmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkVUX0NMU19CUEYmIzM0OywKICAgICYjMzQ7TkVUX0NMU19GTE9XRVImIzM0OywKICAgICYjMzQ7TkVUX0NMU19VMzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfYmxvY2tfcHV0JiMzNDssCiAgICAmIzM0O3RjZl9ibG9ja19wdXRfZXh0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgaW4gYF9fdGNmX2Jsb2NrX3B1dGAsIHVuYmluZGluZyB0aGUgb2ZmbG9hZCBiZWZvcmUgdGFraW5nIHRoZSBibG9jayBsb2NrIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nL2NsYXNzaWZpZXIgQVBJIGFuZCBhZmZlY3RzIGNvbnRyb2wgcGF0aCB0ZWFyZG93bi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE0OjQzLjU4NTY3NjkzNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzOTYzNzk1MjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU1wiLFxuICAgIFwiTkVUX0NMU19CQVNJQ1wiLFxuICAgIFwiTkVUX0NMU19BQ1RcIixcbiAgICBcIk5FVF9DTFNfQlBGXCIsXG4gICAgXCJORVRfQ0xTX0ZMT1dFUlwiLFxuICAgIFwiTkVUX0NMU19VMzJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfYmxvY2tfcHV0XCIsXG4gICAgXCJ0Y2ZfYmxvY2tfcHV0X2V4dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgaW4gYF9fdGNmX2Jsb2NrX3B1dGAsIHVuYmluZGluZyB0aGUgb2ZmbG9hZCBiZWZvcmUgdGFraW5nIHRoZSBibG9jayBsb2NrIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nL2NsYXNzaWZpZXIgQVBJIGFuZCBhZmZlY3RzIGNvbnRyb2wgcGF0aCB0ZWFyZG93bi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTQ6NDMuNTg1NjgzMjc1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODQ2OTA1ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkOTgxNzNmNzFhOTE4YmJiYjRhNDJmNzY4MjdjNTVmZDQyNDRiMWE2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMDA6MTQ6NDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc19hcGkuYyBiL25ldC9zY2hlZC9jbHNfYXBpLmNcXG5pbmRleCBmZWU0NTI0YWRjOThlLi5kM2IyNTA2ZDg3Y2Y0IDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9jbHNfYXBpLmNcXG4rKysgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXFxuQEAgLTEzMTIsNiArMTMxMiw5IEBAIHN0YXRpYyBzdHJ1Y3QgdGNmX2Jsb2NrICpfX3RjZl9ibG9ja19maW5kKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IFFkaXNjICpxLFxcbiBzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG4gXFx0XFx0XFx0ICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpLCBib29sIHJ0bmxfaGVsZClcXG4ge1xcbitcXHRpZiAocSlcXG4rXFx0XFx0dGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKGJsb2NrLCBxLCBlaSk7XFxuK1xcbiBcXHRpZiAocmVmY291bnRfZGVjX2FuZF9tdXRleF9sb2NrKFxcdTAwMjZibG9jay1cXHUwMDNlcmVmY250LCBcXHUwMDI2YmxvY2stXFx1MDAzZWxvY2spKSB7XFxuIFxcdFxcdC8qIEZsdXNoaW5nL3B1dHRpbmcgYWxsIGNoYWlucyB3aWxsIGNhdXNlIHRoZSBibG9jayB0byBiZVxcbiBcXHRcXHQgKiBkZWFsbG9jYXRlZCB3aGVuIGxhc3QgY2hhaW4gaXMgZnJlZWQuIEhvd2V2ZXIsIGlmIGNoYWluX2xpc3RcXG5AQCAtMTMyNSwxNSArMTMyOCwxMCBAQCBzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG4gXFx0XFx0aWYgKHRjZl9ibG9ja19zaGFyZWQoYmxvY2spKVxcbiBcXHRcXHRcXHR0Y2ZfYmxvY2tfcmVtb3ZlKGJsb2NrLCBibG9jay1cXHUwMDNlbmV0KTtcXG4gXFxuLVxcdFxcdGlmIChxKVxcbi1cXHRcXHRcXHR0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKTtcXG4tXFxuIFxcdFxcdGlmIChmcmVlX2Jsb2NrKVxcbiBcXHRcXHRcXHR0Y2ZfYmxvY2tfZGVzdHJveShibG9jayk7XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0dGNmX2Jsb2NrX2ZsdXNoX2FsbF9jaGFpbnMoYmxvY2ssIHJ0bmxfaGVsZCk7XFxuLVxcdH0gZWxzZSBpZiAocSkge1xcbi1cXHRcXHR0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKTtcXG4gXFx0fVxcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMDoxNDo0My45NzExMDExOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUzNTc4MzYzMTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU1wiLFxuICAgIFwiTkVUX0NMU19CQVNJQ1wiLFxuICAgIFwiTkVUX0NMU19BQ1RcIixcbiAgICBcIk5FVF9DTFNfQlBGXCIsXG4gICAgXCJORVRfQ0xTX0ZMT1dFUlwiLFxuICAgIFwiTkVUX0NMU19VMzJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfYmxvY2tfcHV0XCIsXG4gICAgXCJ0Y2ZfYmxvY2tfcHV0X2V4dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgaW4gYF9fdGNmX2Jsb2NrX3B1dGAsIHVuYmluZGluZyB0aGUgb2ZmbG9hZCBiZWZvcmUgdGFraW5nIHRoZSBibG9jayBsb2NrIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlZmNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nL2NsYXNzaWZpZXIgQVBJIGFuZCBhZmZlY3RzIGNvbnRyb2wgcGF0aCB0ZWFyZG93bi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDk4MTczZjcxYTkxOGJiYmI0YTQyZjc2ODI3YzU1ZmQ0MjQ0YjFhNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMDA6MTQ6NDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvY2xzX2FwaS5jIGIvbmV0L3NjaGVkL2Nsc19hcGkuY1xuaW5kZXggZmVlNDUyNGFkYzk4ZS4uZDNiMjUwNmQ4N2NmNCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9jbHNfYXBpLmNcbisrKyBiL25ldC9zY2hlZC9jbHNfYXBpLmNcbkBAIC0xMzEyLDYgKzEzMTIsOSBAQCBzdGF0aWMgc3RydWN0IHRjZl9ibG9jayAqX190Y2ZfYmxvY2tfZmluZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBRZGlzYyAqcSxcbiBzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcbiBcdFx0XHQgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWksIGJvb2wgcnRubF9oZWxkKVxuIHtcbitcdGlmIChxKVxuK1x0XHR0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKTtcbitcbiBcdGlmIChyZWZjb3VudF9kZWNfYW5kX211dGV4X2xvY2soXHUwMDI2YmxvY2stXHUwMDNlcmVmY250LCBcdTAwMjZibG9jay1cdTAwM2Vsb2NrKSkge1xuIFx0XHQvKiBGbHVzaGluZy9wdXR0aW5nIGFsbCBjaGFpbnMgd2lsbCBjYXVzZSB0aGUgYmxvY2sgdG8gYmVcbiBcdFx0ICogZGVhbGxvY2F0ZWQgd2hlbiBsYXN0IGNoYWluIGlzIGZyZWVkLiBIb3dldmVyLCBpZiBjaGFpbl9saXN0XG5AQCAtMTMyNSwxNSArMTMyOCwxMCBAQCBzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcbiBcdFx0aWYgKHRjZl9ibG9ja19zaGFyZWQoYmxvY2spKVxuIFx0XHRcdHRjZl9ibG9ja19yZW1vdmUoYmxvY2ssIGJsb2NrLVx1MDAzZW5ldCk7XG4gXG4tXHRcdGlmIChxKVxuLVx0XHRcdHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChibG9jaywgcSwgZWkpO1xuLVxuIFx0XHRpZiAoZnJlZV9ibG9jaylcbiBcdFx0XHR0Y2ZfYmxvY2tfZGVzdHJveShibG9jayk7XG4gXHRcdGVsc2VcbiBcdFx0XHR0Y2ZfYmxvY2tfZmx1c2hfYWxsX2NoYWlucyhibG9jaywgcnRubF9oZWxkKTtcbi1cdH0gZWxzZSBpZiAocSkge1xuLVx0XHR0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKTtcbiBcdH1cbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMDoxNDo0My45NzExMDI4ODlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTk0Nzg3NjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIENsYXNzaWZpZXIgQVBJIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L3NjaGVkL2Nsc19hcGkuY2AuIEl0IHNlZW1zIHRoZXkndmUgbWFkZSBhIGNoYW5nZSB0byB0aGUgYF9fdGNmX2Jsb2NrX3B1dGAgZnVuY3Rpb24sIGFuZCB0aGUgY29yZSBvZiB0aGUgYWx0ZXJhdGlvbiBpcyBtb3ZpbmcgdGhlIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmQoYmxvY2ssIHEsIGVpKWAgY2FsbC4gUmlnaHQgbm93LCBpdCdzICppbnNpZGUqIHRoZSBgcmVmY291bnRfZGVjX2FuZF9tdXRleF9sb2NrYCBibG9jaywgYnV0IHRoZSBwYXRjaCBzaGlmdHMgaXQgdG8gdGhlICpiZWdpbm5pbmcqIG9mIHRoZSBmdW5jdGlvbiwgcHV0dGluZyBpdCBiZWZvcmUgdGhhdCByZWZjb3VudCBkZWNyZW1lbnQgYW5kIG11dGV4IG9wZXJhdGlvbi4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgX190Y2ZfYmxvY2tfcHV0YCBpdHNlbGYgd2l0aGluIGBuZXQvc2NoZWQvY2xzX2FwaS5jYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgY2hhbmdlIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9uIGhvdyB0aGUgY2xhc3NpZmllciBibG9ja3MgYXJlIGhhbmRsZWQgZHVyaW5nIHRoZWlyIHJlbGVhc2UuIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgKndoeSogdGhleSdyZSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhbmQgdGhlIGltcGFjdCBvbiBjb25jdXJyZW5jeSBvciByZXNvdXJjZSBtYW5hZ2VtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjk0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTQ6NDcuMTY1ODkzMTU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjYxNzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fdGNmX2Jsb2NrX3B1dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9jbHNfYXBpLmM9MTI3NT1zdGF0aWMgc3RydWN0IHRjZl9ibG9jayAqX190Y2ZfYmxvY2tfZmluZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTMxMS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjEzMTI6c3RhdGljIHZvaWQgX190Y2ZfYmxvY2tfcHV0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMzEzLVxcdFxcdFxcdCAgICBzdHJ1Y3QgdGNmX2Jsb2NrX2V4dF9pbmZvICplaSwgYm9vbCBydG5sX2hlbGQpXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTEzMzg9c3RhdGljIHZvaWQgdGNmX2Jsb2NrX3JlZmNudF9wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIGJvb2wgcnRubF9oZWxkKVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTMzOS17XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMzQwOlxcdF9fdGNmX2Jsb2NrX3B1dChibG9jaywgTlVMTCwgTlVMTCwgcnRubF9oZWxkKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTEzNDEtfVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0xNTQ4PXZvaWQgdGNmX2Jsb2NrX3B1dF9leHQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU1OS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE1NjA6XFx0X190Y2ZfYmxvY2tfcHV0KGJsb2NrLCBxLCBlaSwgdHJ1ZSk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTYxLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTQ6NDcuMjA4NTU5MDk0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyMTUzMjkwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYTpcblxuKipEZWNvbnN0cnVjdGluZyBhIEZ1bmN0aW9uIENhbGwgRmxvdyoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBfX3RjZl9ibG9ja19wdXRgLiBUaGF0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0J3MgbGlrZWx5IGFuIGludGVybmFsIHV0aWxpdHkuIFRoZSBmYWN0IHRoYXQgaXQncyBjYWxsZWQgYnkgYHRjZl9ibG9ja19yZWZjbnRfcHV0YCBhbmQgYHRjZl9ibG9ja19wdXRfZXh0YCBpcyB0aGUga2V5LiBJIGtub3cgdGhlc2UgZnVuY3Rpb25zIGFyZSByZWxhdGVkIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCBkYXRhIGZsb3cuIGB0Y2ZfYmxvY2tfcHV0X2V4dGAgYmVpbmcgZWl0aGVyIGV4cG9ydGVkIG9yIG5vbi1zdGF0aWMgaXMgaW50ZXJlc3RpbmcgYXMgdGhpcyBpbXBsaWVzIGl0IGhhcyBicm9hZGVyIHZpc2liaWxpdHkuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHNob3VsZCBmb2N1cyBteSBhdHRlbnRpb24gb24gdW5kZXJzdGFuZGluZyB0aGUgYmVoYXZpb3IgYW5kIGltcGFjdCBvZiBgdGNmX2Jsb2NrX3B1dF9leHRgIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSB1bmRlcmx5aW5nIGBfX3RjZl9ibG9ja19wdXRgIGZ1bmN0aW9uLiBMZXQncyBkaWcgaW50byBgdGNmX2Jsb2NrX3B1dF9leHRgIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDEyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTQ6NTAuNTMwMDkzOTQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjY3MTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjZl9ibG9ja19wdXRfZXh0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9jbHNfYXBpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL2Nsc19hcGkuYz0xNTQzPUVYUE9SVF9TWU1CT0wodGNmX2Jsb2NrX2dldCk7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NDctICovXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTQ4OnZvaWQgdGNmX2Jsb2NrX3B1dF9leHQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NDktXFx0XFx0ICAgICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTYxLX1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE1NjI6RVhQT1JUX1NZTUJPTCh0Y2ZfYmxvY2tfcHV0X2V4dCk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTYzLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTU2ND12b2lkIHRjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2spXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjktXFx0XFx0cmV0dXJuO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU3MDpcXHR0Y2ZfYmxvY2tfcHV0X2V4dChibG9jaywgYmxvY2stXFx1MDAzZXEsIFxcdTAwMjZlaSk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTcxLX1cXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9NDAwNT12b2lkIHRjZl9xZXZlbnRfZGVzdHJveShzdHJ1Y3QgdGNmX3FldmVudCAqcWUsIHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy00MDA3LVxcdGlmIChxZS1cXHUwMDNlaW5mby5ibG9ja19pbmRleClcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjQwMDg6XFx0XFx0dGNmX2Jsb2NrX3B1dF9leHQocWUtXFx1MDAzZWJsb2NrLCBzY2gsIFxcdTAwMjZxZS1cXHUwMDNlaW5mbyk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy00MDA5LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTQ6NTAuNTcyNzY2NTc3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc5MzA4MTY4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqRXhhbWluaW5nIEJsb2NrIFBsYWNlbWVudCBSb3V0aW5lcyoqXG5cbkFscmlnaHQsIHNvIGB0Y2ZfYmxvY2tfcHV0X2V4dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0YCBhcmUgYm90aCBleHBsaWNpdGx5IGV4cG9ydGVkLiBHb29kLCB0aGF0IG1lYW5zIHRoZXkncmUgaW50ZW5kZWQgZm9yIHVzZSBvdXRzaWRlIHRoZWlyIG1vZHVsZS4gTm93LCBnaXZlbiB0aGF0LCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGVsdmUgaW50byB0aGVpciB1c2FnZSBwYXR0ZXJucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoZXJlKiBhbmQgKmhvdyogdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyBlbXBsb3llZC4gTGV0J3Mgc2VlIGhvdyB0aGV5J3JlIGJlaW5nIHV0aWxpemVkLiBJIG5lZWQgdG8gZmluZCBvdXQgd2hlcmUgdGhleSdyZSBiZWluZyBjYWxsZWQgZnJvbSBhbmQgdGhlIGNvbnRleHRzIHN1cnJvdW5kaW5nIHRob3NlIGNhbGxzLiBBcmUgdGhlcmUgYW55IHN1YnRsZXRpZXMgaW4gdGhlaXIgYXBwbGljYXRpb24gdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZj8gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NTYsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMDoxNDo1My4zNjU4NTA0NzhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU0NzAwODcwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfYmxvY2tfcHV0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9wa3RfY2xzLmg9NTg9aW50IHRjZl9ibG9ja19nZXRfZXh0KHN0cnVjdCB0Y2ZfYmxvY2sgKipwX2Jsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXFxuLS1cXG5pbmNsdWRlL25ldC9wa3RfY2xzLmgtNjAtXFx0XFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5pbmNsdWRlL25ldC9wa3RfY2xzLmg6NjE6dm9pZCB0Y2ZfYmxvY2tfcHV0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrKTtcXG5pbmNsdWRlL25ldC9wa3RfY2xzLmg6NjI6dm9pZCB0Y2ZfYmxvY2tfcHV0X2V4dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxcbmluY2x1ZGUvbmV0L3BrdF9jbHMuaC02My1cXHRcXHQgICAgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWkpO1xcbi0tXFxuaW5jbHVkZS9uZXQvcGt0X2Nscy5oPTEzMD1pbnQgdGNmX2Jsb2NrX2dldF9leHQoc3RydWN0IHRjZl9ibG9jayAqKnBfYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbmluY2x1ZGUvbmV0L3BrdF9jbHMuaC0xMzYtXFxuaW5jbHVkZS9uZXQvcGt0X2Nscy5oOjEzNzpzdGF0aWMgaW5saW5lIHZvaWQgdGNmX2Jsb2NrX3B1dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaylcXG5pbmNsdWRlL25ldC9wa3RfY2xzLmgtMTM4LXtcXG4tLVxcbmluY2x1ZGUvbmV0L3BrdF9jbHMuaD0xNDE9c3RhdGljIGlubGluZVxcbmluY2x1ZGUvbmV0L3BrdF9jbHMuaDoxNDI6dm9pZCB0Y2ZfYmxvY2tfcHV0X2V4dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxcbmluY2x1ZGUvbmV0L3BrdF9jbHMuaC0xNDMtXFx0XFx0ICAgICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0xMjc1PXN0YXRpYyBzdHJ1Y3QgdGNmX2Jsb2NrICpfX3RjZl9ibG9ja19maW5kKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IFFkaXNjICpxLFxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMzExLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTMxMjpzdGF0aWMgdm9pZCBfX3RjZl9ibG9ja19wdXQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTEzMTMtXFx0XFx0XFx0ICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpLCBib29sIHJ0bmxfaGVsZClcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTMzOD1zdGF0aWMgdm9pZCB0Y2ZfYmxvY2tfcmVmY250X3B1dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgYm9vbCBydG5sX2hlbGQpXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMzM5LXtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjEzNDA6XFx0X190Y2ZfYmxvY2tfcHV0KGJsb2NrLCBOVUxMLCBOVUxMLCBydG5sX2hlbGQpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTM0MS19XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE1NDM9RVhQT1JUX1NZTUJPTCh0Y2ZfYmxvY2tfZ2V0KTtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU0Ny0gKi9cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE1NDg6dm9pZCB0Y2ZfYmxvY2tfcHV0X2V4dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU0OS1cXHRcXHQgICAgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWkpXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NTktXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTYwOlxcdF9fdGNmX2Jsb2NrX3B1dChibG9jaywgcSwgZWksIHRydWUpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU2MS19XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTYyOkVYUE9SVF9TWU1CT0wodGNmX2Jsb2NrX3B1dF9leHQpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU2My1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE1NjQ6dm9pZCB0Y2ZfYmxvY2tfcHV0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrKVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTU2NS17XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjktXFx0XFx0cmV0dXJuO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU3MDpcXHR0Y2ZfYmxvY2tfcHV0X2V4dChibG9jaywgYmxvY2stXFx1MDAzZXEsIFxcdTAwMjZlaSk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTcxLX1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NzItXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTczOkVYUE9SVF9TWU1CT0wodGNmX2Jsb2NrX3B1dCk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTc0LVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz00MDA1PXZvaWQgdGNmX3FldmVudF9kZXN0cm95KHN0cnVjdCB0Y2ZfcWV2ZW50ICpxZSwgc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQwMDctXFx0aWYgKHFlLVxcdTAwM2VpbmZvLmJsb2NrX2luZGV4KVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6NDAwODpcXHRcXHR0Y2ZfYmxvY2tfcHV0X2V4dChxZS1cXHUwMDNlYmxvY2ssIHNjaCwgXFx1MDAyNnFlLVxcdTAwM2VpbmZvKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQwMDktfVxcbi0tXFxubmV0L3NjaGVkL3NjaF9jYWtlLmM9MjgwNz1zdGF0aWMgdm9pZCBjYWtlX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Nha2UuYy0yODExLVxcdHFkaXNjX3dhdGNoZG9nX2NhbmNlbChcXHUwMDI2cS1cXHUwMDNld2F0Y2hkb2cpO1xcbm5ldC9zY2hlZC9zY2hfY2FrZS5jOjI4MTI6XFx0dGNmX2Jsb2NrX3B1dChxLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9jYWtlLmMtMjgxMy1cXHRrdmZyZWUocS1cXHUwMDNldGlucyk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2Ryci5jPTQ0Mj1zdGF0aWMgdm9pZCBkcnJfZGVzdHJveV9xZGlzYyhzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDQ4LVxcbm5ldC9zY2hlZC9zY2hfZHJyLmM6NDQ5OlxcdHRjZl9ibG9ja19wdXQocS1cXHUwMDNlYmxvY2spO1xcbm5ldC9zY2hlZC9zY2hfZHJyLmMtNDUwLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9kdWFscGkyLmM9MTEyNj1zdGF0aWMgdm9pZCBkdWFscGkyX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTMzLVxcdFxcdHFkaXNjX3B1dChxLVxcdTAwM2VsX3F1ZXVlKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYzoxMTM0OlxcdHRjZl9ibG9ja19wdXQocS1cXHUwMDNldGNmX2Jsb2NrKTtcXG5uZXQvc2NoZWQvc2NoX2R1YWxwaTIuYy0xMTM1LX1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZXRzLmM9NzMyPXN0YXRpYyB2b2lkIGV0c19xZGlzY19kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9ldHMuYy03MzctXFx0ZXRzX29mZmxvYWRfZGVzdHJveShzY2gpO1xcbm5ldC9zY2hlZC9zY2hfZXRzLmM6NzM4OlxcdHRjZl9ibG9ja19wdXQocS1cXHUwMDNlYmxvY2spO1xcbm5ldC9zY2hlZC9zY2hfZXRzLmMtNzM5LVxcdGZvciAoYmFuZCA9IDA7IGJhbmQgXFx1MDAzYyBxLVxcdTAwM2VuYmFuZHM7IGJhbmQrKylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYz00OTk9c3RhdGljIHZvaWQgZnFfY29kZWxfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfY29kZWwuYy01MDItXFxubmV0L3NjaGVkL3NjaF9mcV9jb2RlbC5jOjUwMzpcXHR0Y2ZfYmxvY2tfcHV0KHEtXFx1MDAzZWJsb2NrKTtcXG5uZXQvc2NoZWQvc2NoX2ZxX2NvZGVsLmMtNTA0LVxcdGt2ZnJlZShxLVxcdTAwM2ViYWNrbG9ncyk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2ZxX3BpZS5jPTU1ND1zdGF0aWMgdm9pZCBmcV9waWVfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNTU3LVxcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmM6NTU4OlxcdHRjZl9ibG9ja19wdXQocS1cXHUwMDNlYmxvY2spO1xcbm5ldC9zY2hlZC9zY2hfZnFfcGllLmMtNTU5LVxcdHEtXFx1MDAzZXBfcGFyYW1zLnR1cGRhdGUgPSAwO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9oZnNjLmM9OTEyPWhmc2NfY2hhbmdlX2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgY2xhc3NpZCwgdTMyIHBhcmVudGlkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTA0My1cXHRcXHRpZiAoZXJyKSB7XFxubmV0L3NjaGVkL3NjaF9oZnNjLmM6MTA0NDpcXHRcXHRcXHR0Y2ZfYmxvY2tfcHV0KGNsLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTA0NS1cXHRcXHRcXHRrZnJlZShjbCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2hmc2MuYz0xMDkxPWhmc2NfZGVzdHJveV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGhmc2NfY2xhc3MgKmNsKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9oZnNjLmMtMTA5NC1cXG5uZXQvc2NoZWQvc2NoX2hmc2MuYzoxMDk1OlxcdHRjZl9ibG9ja19wdXQoY2wtXFx1MDAzZWJsb2NrKTtcXG5uZXQvc2NoZWQvc2NoX2hmc2MuYy0xMDk2LVxcdHFkaXNjX3B1dChjbC1cXHUwMDNlcWRpc2MpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9oZnNjLmM9MTQ5OD1oZnNjX2Rlc3Ryb3lfcWRpc2Moc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2hmc2MuYy0xNTA2LVxcdFxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KGNsLCBcXHUwMDI2cS1cXHUwMDNlY2xoYXNoLmhhc2hbaV0sIGNsX2NvbW1vbi5obm9kZSkge1xcbm5ldC9zY2hlZC9zY2hfaGZzYy5jOjE1MDc6XFx0XFx0XFx0dGNmX2Jsb2NrX3B1dChjbC1cXHUwMDNlYmxvY2spO1xcbm5ldC9zY2hlZC9zY2hfaGZzYy5jLTE1MDgtXFx0XFx0XFx0Y2wtXFx1MDAzZWJsb2NrID0gTlVMTDtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaHRiLmM9MTYwNz1zdGF0aWMgdm9pZCBodGJfZGVzdHJveV9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGh0Yl9jbGFzcyAqY2wpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTE2MTMtXFx0Z2VuX2tpbGxfZXN0aW1hdG9yKFxcdTAwMjZjbC1cXHUwMDNlcmF0ZV9lc3QpO1xcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MTYxNDpcXHR0Y2ZfYmxvY2tfcHV0KGNsLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9odGIuYy0xNjE1LVxcdGtmcmVlKGNsKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaHRiLmM9MTYxOD1zdGF0aWMgdm9pZCBodGJfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaHRiLmMtMTYzNC1cXHQgKi9cXG5uZXQvc2NoZWQvc2NoX2h0Yi5jOjE2MzU6XFx0dGNmX2Jsb2NrX3B1dChxLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9odGIuYy0xNjM2LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9odGIuYy0xNjM4LVxcdFxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KGNsLCBcXHUwMDI2cS1cXHUwMDNlY2xoYXNoLmhhc2hbaV0sIGNvbW1vbi5obm9kZSkge1xcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MTYzOTpcXHRcXHRcXHR0Y2ZfYmxvY2tfcHV0KGNsLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9odGIuYy0xNjQwLVxcdFxcdFxcdGNsLVxcdTAwM2VibG9jayA9IE5VTEw7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTE3NjI9c3RhdGljIGludCBodGJfY2hhbmdlX2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCB1MzIgY2xhc3NpZCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaHRiLmMtMjA2OC1lcnJfYmxvY2tfcHV0Olxcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MjA2OTpcXHR0Y2ZfYmxvY2tfcHV0KGNsLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9odGIuYy0yMDcwLVxcdGtmcmVlKGNsKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfaW5ncmVzcy5jPTExMj1zdGF0aWMgdm9pZCBpbmdyZXNzX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0xMjAtXFxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM6MTIxOlxcdHRjZl9ibG9ja19wdXRfZXh0KHEtXFx1MDAzZWJsb2NrLCBzY2gsIFxcdTAwMjZxLVxcdTAwM2VibG9ja19pbmZvKTtcXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0xMjItXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYz0yOTI9c3RhdGljIHZvaWQgY2xzYWN0X2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2luZ3Jlc3MuYy0zMDAtXFxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM6MzAxOlxcdHRjZl9ibG9ja19wdXRfZXh0KHEtXFx1MDAzZWluZ3Jlc3NfYmxvY2ssIHNjaCwgXFx1MDAyNnEtXFx1MDAzZWluZ3Jlc3NfYmxvY2tfaW5mbyk7XFxubmV0L3NjaGVkL3NjaF9pbmdyZXNzLmM6MzAyOlxcdHRjZl9ibG9ja19wdXRfZXh0KHEtXFx1MDAzZWVncmVzc19ibG9jaywgc2NoLCBcXHUwMDI2cS1cXHUwMDNlZWdyZXNzX2Jsb2NrX2luZm8pO1xcbm5ldC9zY2hlZC9zY2hfaW5ncmVzcy5jLTMwMy1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXVsdGlxLmM9MTU5PW11bHRpcV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy0xNjMtXFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYzoxNjQ6XFx0dGNmX2Jsb2NrX3B1dChxLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9tdWx0aXEuYy0xNjUtXFx0Zm9yIChiYW5kID0gMDsgYmFuZCBcXHUwMDNjIHEtXFx1MDAzZWJhbmRzOyBiYW5kKyspXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3ByaW8uYz0xNjU9cHJpb19kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9wcmlvLmMtMTY5LVxcbm5ldC9zY2hlZC9zY2hfcHJpby5jOjE3MDpcXHR0Y2ZfYmxvY2tfcHV0KHEtXFx1MDAzZWJsb2NrKTtcXG5uZXQvc2NoZWQvc2NoX3ByaW8uYy0xNzEtXFx0cHJpb19vZmZsb2FkKHNjaCwgTlVMTCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3FmcS5jPTE0OTQ9c3RhdGljIHZvaWQgcWZxX2Rlc3Ryb3lfcWRpc2Moc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3FmcS5jLTE1MDAtXFxubmV0L3NjaGVkL3NjaF9xZnEuYzoxNTAxOlxcdHRjZl9ibG9ja19wdXQocS1cXHUwMDNlYmxvY2spO1xcbm5ldC9zY2hlZC9zY2hfcWZxLmMtMTUwMi1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ZiLmM9NDc4PXN0YXRpYyB2b2lkIHNmYl9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9zZmIuYy00ODEtXFxubmV0L3NjaGVkL3NjaF9zZmIuYzo0ODI6XFx0dGNmX2Jsb2NrX3B1dChxLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9zZmIuYy00ODMtXFx0cWRpc2NfcHV0KHEtXFx1MDAzZXFkaXNjKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfc2ZxLmM9NzY1PXN0YXRpYyB2b2lkIHNmcV9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9zZnEuYy03NjgtXFxubmV0L3NjaGVkL3NjaF9zZnEuYzo3Njk6XFx0dGNmX2Jsb2NrX3B1dChxLVxcdTAwM2VibG9jayk7XFxubmV0L3NjaGVkL3NjaF9zZnEuYy03NzAtXFx0V1JJVEVfT05DRShxLVxcdTAwM2VwZXJ0dXJiX3BlcmlvZCwgMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE0OjU1LjkxMjg2MzIxM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4ODU0NTU4MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB0Y2ZfYmxvY2tfcHV0IE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBfX3RjZl9ibG9ja19wdXRgIGluIGBuZXQvc2NoZWQvY2xzX2FwaS5jYC4gSXQncyBhIGtleSBmdW5jdGlvbiwgY2FsbGVkIGJ5IGJvdGggYHRjZl9ibG9ja19wdXRgIGFuZCBgdGNmX2Jsb2NrX3B1dF9leHRgLCBzbyB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjYXJlZnVsbHkuIFRoZSBjcnVjaWFsIGNoYW5nZSBoZXJlIGlzIHRoZSBtb3ZlbWVudCBvZiBgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKGJsb2NrLCBxLCBlaSlgIHRvIHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24sIHJpZ2h0IGJlZm9yZSBhbnl0aGluZyBlbHNlLlxuXG5Jbml0aWFsbHksIGl0IHdhcyBpbnNpZGUgYSBjb25kaXRpb25hbCBibG9jayBjb250cm9sbGVkIGJ5IGByZWZjb3VudF9kZWNfYW5kX211dGV4X2xvY2soXHUwMDI2YmxvY2stXHUwMDNlcmVmY250LCBcdTAwMjZibG9jay1cdTAwM2Vsb2NrKWAuIEl0IHdhcyBhbHNvIGluc2lkZSBhbiBgZWxzZSBpZiAocSlgIGJsb2NrLiBOb3csIGl0J3MgdW5jb25kaXRpb25hbGx5IGNhbGxlZCBpZiBgcWAgaXMgbm90IE5VTEwuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCB0aGlzIHNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSByZW9yZGVyaW5nLCBidXQgSSdtIHRyeWluZyB0byBzZWUgaWYgdGhlcmUgaXMgbW9yZSB0byBpdC4gQmVmb3JlLCB0aGUgdW5iaW5kaW5nIGhhcHBlbmVkIGVpdGhlciB3aGVuIHRoZSByZWZlcmVuY2UgY291bnQgd2VudCB0byB6ZXJvIChpbnNpZGUgdGhlIGBpZmApICpvciogd2hlbiBgcWAgd2FzIHByZXNlbnQgYnV0IHRoZSByZWZjb3VudCBkaWRuJ3QgZHJvcCB0byB6ZXJvLiBUaGUgZGlmZiBzaG93cyBpdCB3YXMgYWx3YXlzIGRvaW5nIHRoZSB1bmJpbmQgaWYgYHFgIHdhcyBub3QgTlVMTC5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucy4gYHJlZmNvdW50X2RlY19hbmRfbXV0ZXhfbG9ja2AgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBvbmx5ICphY3F1aXJlcyogdGhlIGxvY2sgaWYgdGhlIHJlZmNvdW50ICpkcm9wcyogdG8gemVyby4gT3RoZXJ3aXNlLCBpdCBqdXN0IGRlY3JlbWVudHMuXG5cblNvIGJlZm9yZSwgd2hlbiB0aGUgcmVmY291bnQgKmRpZCogZ28gdG8gemVybywgd2UnZCBhY3F1aXJlIHRoZSBsb2NrLCB0aGVuIGNhbGwgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAsIGFuZCB0aGVuIHByb2NlZWQgd2l0aCBkZXN0cnVjdGlvbiBvciBmbHVzaGluZy4gTm93LCB3ZSdyZSB1bmJpbmRpbmcgKmJlZm9yZSogdGhlIHJlZmNvdW50IGlzIGRlY3JlbWVudGVkLCBhbmQgY3J1Y2lhbGx5LCAqYmVmb3JlKiB3ZSBwb3RlbnRpYWxseSBhY3F1aXJlIHRoZSBsb2NrLiBUaGlzIHNlZW1zIGxpa2UgYSBjaGFuZ2UgaW4gc3luY2hyb25pemF0aW9uIHN0cmF0ZWd5LiBXZSdyZSBkZWNvdXBsaW5nIHRoZSBvZmZsb2FkIHVuYmluZGluZyBmcm9tIHRoZSBsb2NrIGFjcXVpc2l0aW9uLlxuXG5UaGlzIGlzIGxpa2VseSBhIHNhZmV0eSBpbXByb3ZlbWVudC4gSXQgbGlrZWx5IGF2b2lkcyBhIHBvdGVudGlhbCBkZWFkbG9jaywgb3IgcG90ZW50aWFsbHkgZWxpbWluYXRlcyBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLiBUaGlzIGlzIGJlY2F1c2Ugd2UgY291bGQgYmUgZnJlZWluZyBzb21ldGhpbmcgYmVmb3JlIGl0IGlzIHVuYm91bmQuIE9yIGl0IGp1c3QgY2hhbmdlcyB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucy4gSSBuZWVkIHRvIGRpZyBpbnRvIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRgIHRvIHVuZGVyc3RhbmQgdGhlIGRldGFpbHMuIEl0J3MgcHJvYmFibHkgcmVsYXRlZCB0byBlbnN1cmluZyB0aGF0IHRoZSBvZmZsb2FkIG9wZXJhdGlvbnMgYXJlIGNvbXBsZXRlZCAqYmVmb3JlKiB3ZSBwb3RlbnRpYWxseSBzdGFydCBmcmVlaW5nIHJlc291cmNlcyBvciBtb2RpZnlpbmcgdGhlIGJsb2NrJ3Mgc3RhdGUgaW4gYSB3YXkgdGhhdCB0aGUgb2ZmbG9hZCBtZWNoYW5pc20gbWlnaHQgcmVseSBvbi4gVGhpcyBpcyBsaWtlbHkgdGhlIGNydWNpYWwgcG9pbnQuIExldCdzIHNlZSBpZiB0aGUgY29kZSBjb21tZW50IGV4cGxhaW5zIGFueXRoaW5nIGFib3V0IHRoZSByZWFzb24gZm9yIHRoZSBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczODUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTU6MDUuNzk4MzIxODU1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY0NzYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2Nsc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jPTg1NT1zdGF0aWMgaW50IHRjZl9ibG9ja19vZmZsb2FkX2JpbmQoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtODk0LVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6ODk1OnN0YXRpYyB2b2lkIHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxLFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtODk2LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWkpXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTEzMTI9c3RhdGljIHZvaWQgX190Y2ZfYmxvY2tfcHV0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTEzMTUtXFx0aWYgKHEpXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMzE2OlxcdFxcdHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZChibG9jaywgcSwgZWkpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTMxNy1cXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTQ2Mj1pbnQgdGNmX2Jsb2NrX2dldF9leHQoc3RydWN0IHRjZl9ibG9jayAqKnBfYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTUxMS1lcnJfZGV2X2luc2VydDpcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE1MTI6XFx0dGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKGJsb2NrLCBxLCBlaSk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTEzLWVycl9ibG9ja19vZmZsb2FkX2JpbmQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE1OjA1Ljg0Mjk3Njk5NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjg5MzAzODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kYCBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgdW5iaW5kaW5nIHByb2Nlc3Mgd29ya3Mgd2l0aGluIHRoZSBsYXJnZXIgZnJhbWV3b3JrLiBJIGtub3cgdGhlIGNvcmUgY29uY2VwdCBpcyB0aGUgcmVtb3ZhbCBvZiB0aGUgc3BlY2lmaWMgb2ZmbG9hZCBhc3NvY2lhdGlvbiwgYnV0IHRoZSBudWFuY2VzIGFyZSB3aGF0IEknbSBhZnRlci4gV2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkPyBIb3cgZG9lcyBpdCBpbnRlcmFjdCB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBpZiBhdCBhbGw/IEkgbmVlZCB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGFuZCBsb2NraW5nIHN0cmF0ZWdpZXMgaGVyZSwgZXNwZWNpYWxseSBpbiBhIG11bHRpLXRocmVhZGVkIG9yIGNvbmN1cnJlbnQgZW52aXJvbm1lbnQuIEFueSBwb3RlbnRpYWwgcmVzb3VyY2UgbGVha3M/IFRoaXMgZnVuY3Rpb24gaXMgY3JpdGljYWwgZm9yIG1haW50YWluaW5nIHN5c3RlbSBzdGFiaWxpdHkuIEkgbmVlZCB0byBmdWxseSBncmFzcCBpdHMgcm9sZSBpbiB0ZWFyaW5nIGRvd24gdGhlIG9mZmxvYWQgc2V0dXAuIEknbSBsb29raW5nIGZvciB0aGUgc3VidGxlIGRldGFpbHMsIHRoZSBlcnJvciBoYW5kbGluZywgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyB1bmJpbmQgb3BlcmF0aW9uIG9uIG90aGVyIHBhcnRzIG9mIHRoZSB0cmFmZmljIGNvbnRyb2wgc3RhY2suIFVsdGltYXRlbHksIEkgd2FudCB0byBjb25maXJtIGl0J3MgaW1wbGVtZW50ZWQgY29ycmVjdGx5IGFuZCBlZmZpY2llbnRseS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI5MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE1OjA5LjEzMjI4Mzc4OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzYwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NjaGVkL2Nsc19hcGkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4OTUsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4OTU6XFx0c3RhdGljIHZvaWQgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXFxuIDg5NjpcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCB0Y2ZfYmxvY2tfZXh0X2luZm8gKmVpKVxcbiA4OTc6XFx0e1xcbiA4OTg6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHEtXFx1MDAzZWRldl9xdWV1ZS1cXHUwMDNlZGV2O1xcbiA4OTk6XFx0XFx0aW50IGVycjtcXG4gOTAwOlxcdFxcbiA5MDE6XFx0XFx0ZG93bl93cml0ZShcXHUwMDI2YmxvY2stXFx1MDAzZWNiX2xvY2spO1xcbiA5MDI6XFx0XFx0ZXJyID0gdGNmX2Jsb2NrX29mZmxvYWRfY21kKGJsb2NrLCBkZXYsIHEsIGVpLCBGTE9XX0JMT0NLX1VOQklORCwgTlVMTCk7XFxuIDkwMzpcXHRcXHRpZiAoZXJyID09IC1FT1BOT1RTVVBQKVxcbiA5MDQ6XFx0XFx0XFx0Z290byBub19vZmZsb2FkX2Rldl9kZWM7XFxuIDkwNTpcXHRcXHR1cF93cml0ZShcXHUwMDI2YmxvY2stXFx1MDAzZWNiX2xvY2spO1xcbiA5MDY6XFx0XFx0cmV0dXJuO1xcbiA5MDc6XFx0XFxuIDkwODpcXHRub19vZmZsb2FkX2Rldl9kZWM6XFxuIDkwOTpcXHRcXHRXQVJOX09OKGJsb2NrLVxcdTAwM2Vub29mZmxvYWRkZXZjbnQtLSA9PSAwKTtcXG4gOTEwOlxcdFxcdHVwX3dyaXRlKFxcdTAwMjZibG9jay1cXHUwMDNlY2JfbG9jayk7XFxuIDkxMTpcXHR9XFxuIDkxMjpcXHRcXG4gOTEzOlxcdHN0YXRpYyBpbnRcXG4gOTE0OlxcdHRjZl9jaGFpbjBfaGVhZF9jaGFuZ2VfY2JfYWRkKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLFxcbiA5MTU6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHRjZl9ibG9ja19leHRfaW5mbyAqZWksXFxuIDkxNjpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIDkxNzpcXHR7XFxuIDkxODpcXHRcXHRzdHJ1Y3QgdGNmX2ZpbHRlcl9jaGFpbl9saXN0X2l0ZW0gKml0ZW07XFxuIDkxOTpcXHRcXHRzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbjA7XFxuIDkyMDpcXHRcXG4gOTIxOlxcdFxcdGl0ZW0gPSBrbWFsbG9jX29iaigqaXRlbSk7XFxuIDkyMjpcXHRcXHRpZiAoIWl0ZW0pIHtcXG4gOTIzOlxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIk1lbW9yeSBhbGxvY2F0aW9uIGZvciBoZWFkIGNoYW5nZSBjYWxsYmFjayBpdGVtIGZhaWxlZFxcXCIpO1xcbiA5MjQ6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE1OjA5LjEzMjQ2MjUyOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDkzMjU1NDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBOZXR3b3JrIFNjaGVkdWxlciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCBpdCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG5ldC9zY2hlZC9jbHNfYXBpLmNgIGNvZGUuIEl0IGFwcGVhcnMgdGhlIGNoYW5nZSBpbnZvbHZlcyBob3cgdGhlIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRgIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHR3byBsb2NrczogYGJsb2NrLVx1MDAzZWxvY2tgIChhIG11dGV4KSBhbmQgYGJsb2NrLVx1MDAzZWNiX2xvY2tgIChhIHJlYWQtd3JpdGUgc2VtYXBob3JlLCBvciByd3NlbSkuXG5cbkJlZm9yZSB0aGlzIHBhdGNoLCB0aGVyZSB3YXMgYSBjb25kaXRpb25hbCBwYXRoLiBUaGUgY29kZSB1c2VkIGByZWZjb3VudF9kZWNfYW5kX211dGV4X2xvY2soXHUwMDI2YmxvY2stXHUwMDNlcmVmY250LCBcdTAwMjZibG9jay1cdTAwM2Vsb2NrKWAuIElmIHRoYXQgZnVuY3Rpb24gcmV0dXJuZWQgdHJ1ZSwgbWVhbmluZyBpdCBzdWNjZXNzZnVsbHkgZGVjcmVtZW50ZWQgdGhlIHJlZmVyZW5jZSBjb3VudCBhbmQgYWNxdWlyZWQgdGhlIGBibG9jay1cdTAwM2Vsb2NrYCBtdXRleCwgaXQgd291bGQgKnRoZW4qIGNhbGwgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAuIFRoaXMgY3JlYXRlcyBhIHBvdGVudGlhbCBsb2NrIG9yZGVyaW5nIGlzc3VlIGJlY2F1c2UgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAgdGFrZXMgdGhlIGBibG9jay1cdTAwM2VjYl9sb2NrYC4gSWYgYHJlZmNvdW50X2RlY19hbmRfbXV0ZXhfbG9ja2AgcmV0dXJuZWQgZmFsc2UsIGl0IG9ubHkgY2FsbHMgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAuIE5vdywgaXQgKmFsd2F5cyogY2FsbHMgYHRjZl9ibG9ja19vZmZsb2FkX3VuYmluZGAgYmVmb3JlIGF0dGVtcHRpbmcgdG8gYWNxdWlyZSB0aGUgYGJsb2NrLVx1MDAzZWxvY2tgLiBUaGlzIGNoYW5nZSBsb29rcyBsaWtlIGEgZGVsaWJlcmF0ZSBhdm9pZGFuY2Ugb2YgYSBsb2NrIGludmVyc2lvbiwgb3IgaXQgbWF5IGp1c3QgYmUgdG8gZW5zdXJlIHRoYXQgdW5iaW5kaW5nIGhhcHBlbnMgYmVmb3JlIHNvbWV0aGluZyBlbHNlIHRoYXQgbWlnaHQgbmVlZCB0aGUgYGJsb2NrLVx1MDAzZWxvY2tgLiBUaGUgY29kZSBkb2Vzbid0IGV4cGxpY2l0bHkgc3RhdGUgdGhlICp3aHkqLCBidXQgdGhhdCdzIG15IHdvcmtpbmcgaHlwb3RoZXNpcy5cblxuSSB0aGluayB0aGUgaW1wb3J0YW50IHRoaW5nIGlzIHRoYXQgYHJlZmNvdW50X2RlY19hbmRfbXV0ZXhfbG9ja2AgY2FuICpkcm9wKiB0aGUgcmVmZXJlbmNlIGNvdW50IHRvIHplcm8uIFRoYXQncyBhIGNyaXRpY2FsIG1vbWVudC4gSWYgdGhlIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byB6ZXJvLCB0aGUgYmxvY2sgaXMgYmVpbmcgZGVzdHJveWVkLiBUaGUgcGF0Y2ggZWZmZWN0aXZlbHkgbWFrZXMgaXQgdW5iaW5kIHRoZSBvZmZsb2FkICpiZWZvcmUqIHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8gemVyby4gVGhhdCBlbnN1cmVzIHRoZSBibG9jayBpcyB2YWxpZCB3aGlsZSBpdCdzIGJlaW5nIHVuYm91bmQuIERvaW5nIGl0IHRoZSAqb3RoZXIqIHdheSAtIGFmdGVyIGRyb3BwaW5nIHRoZSByZWZjb3VudCB0byB6ZXJvIC0gY291bGQgbGVhZCB0byBwcm9ibGVtcyBpZiBgdGNmX2Jsb2NrX29mZmxvYWRfY21kYCAob3IgYSBmdW5jdGlvbiBpdCBjYWxscykgdHJpZXMgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgYmxvY2sgb3IgcmVsaWVzIG9uIGl0cyByZWZjb3VudCBiZWluZyBhYm92ZSB6ZXJvLCB3aGljaCBpcyBsaWtlbHkuIEl0ICp3b3VsZCogY2F1c2UgYSBjcmFzaC5cblxuSXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBuZXR3b3JraW5nIHNjaGVkdWxpbmcvY2xhc3NpZmljYXRpb24gQVBJLCBzbyBpdCdzIGFic29sdXRlbHkgd29ydGggZnV6emluZyB0byBjb25maXJtIHRoZSBmaXguXG5cbk9rYXksIGxldCdzIG5haWwgZG93biB0aGUgZm9jdXMgc3ltYm9scy4gVGhlIGNoYW5nZSBpcyBjZW50ZXJlZCBhcm91bmQgdGhlIHN0YXRpYyBmdW5jdGlvbiBgX190Y2ZfYmxvY2tfcHV0YC4gVGhlIGRpcmVjdCBjYWxsZXJzIGFyZSBgdGNmX2Jsb2NrX3B1dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0X2V4dGAuIGB0Y2ZfYmxvY2tfcmVmY250X3B1dGAgYWxzbyBjYWxscyBpdCwgYnV0IHdpdGggYHFgIGFzIE5VTEwsIHNvIGB0Y2ZfYmxvY2tfb2ZmbG9hZF91bmJpbmRgIGlzbid0IGNhbGxlZCB0aGVyZS4gU28sIGB0Y2ZfYmxvY2tfcHV0YCBhbmQgYHRjZl9ibG9ja19wdXRfZXh0YCBhcmUgdGhlIGludGVyZXN0aW5nIGNhbGxlcnMgaGVyZS4gTGV0IG1lIGRvdWJsZSBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIGdvb2QgZm9jdXMgc3ltYm9scy4gTG9va3MgbGlrZSBgdGNmX2Jsb2NrX3B1dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0X2V4dGAgYXJlIGdvb2QgY2FuZGlkYXRlcy4gQW5kIHRoZXkgYXJlICpleHBvcnRlZCosIG5vdCBzdGF0aWMhIExldCdzIGNoZWNrIHRob3NlIGluIGBuZXQvc2NoZWQvY2xzX2FwaS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMjUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMDoxNToxOC4yMjU3MjE1MDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNDc2MjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZvaWQgdGNmX2Jsb2NrX3B1dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9jbHNfYXBpLmM9MTU0Mz1FWFBPUlRfU1lNQk9MKHRjZl9ibG9ja19nZXQpO1xcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTQ3LSAqL1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTU0ODp2b2lkIHRjZl9ibG9ja19wdXRfZXh0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEsXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNTQ5LVxcdFxcdCAgICAgICBzdHJ1Y3QgdGNmX2Jsb2NrX2V4dF9pbmZvICplaSlcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTU2Mj1FWFBPUlRfU1lNQk9MKHRjZl9ibG9ja19wdXRfZXh0KTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjMtXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNTY0OnZvaWQgdGNmX2Jsb2NrX3B1dChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaylcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE1NjUte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMDoxNToxOC4yNjYyMDM2ODFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyMTI2NDM0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDaGVja2luZyBFeHBvcnRlZCBTeW1ib2xzIGFuZCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGNvbmZpcm1pbmcgdGhhdCB0aGVzZSBzeW1ib2xzIGFyZSwgaW4gZmFjdCwgZXhwb3J0ZWQuIE5vdywgdG8gYmUgdGhvcm91Z2gsIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIENPTkZJRyBvcHRpb25zIHRoYXQgYXJlIHByZXJlcXVpc2l0ZXMgb3IgaW5mbHVlbmNlIHRoZSBjb21waWxhdGlvbiBvZiB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlLiBMb29raW5nIGludG8gaXQsIHRoZSBmaWxlIGBuZXQvc2NoZWQvY2xzX2FwaS5jYCBzZWVtcyB0byBjb21lIGludG8gcGxheSB3aGVuIGBDT05GSUdfTkVUX1NDSEVEYCBvciByZWxhdGVkIG5ldHdvcmtpbmcgc2NoZWR1bGVyIG9wdGlvbnMgYXJlIGVuYWJsZWQuIFRoYXQncyBnb29kIHRvIGtub3cgYW5kIGhlbHBzIHRvIGNsYXJpZnkgdGhlIGJ1aWxkIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NzMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMDoxNToyMS4xODc0Njk4OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg1Njg5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2xzX2FwaS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfTkVUX1NDSEVEKVxcdFxcdCs9IHNjaF9hcGkubyBzY2hfYmxhY2tob2xlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX05FVF9DTFMpXFx0XFx0Kz0gY2xzX2FwaS5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19ORVRfQ0xTX0FDVClcXHQrPSBhY3RfYXBpLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTU6MjEuMjI2MDQwNDA5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDA3MjczMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBDbGFzc2lmaWVyIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBJIHNlZSB3ZSBuZWVkIGBDT05GSUdfTkVUX0NMU2AuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIG1vcmUgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaXMgd2hldGhlciB3ZSBhbHNvIHJlcXVpcmUgYENPTkZJR19ORVRfU0NIRURgLiBJbiBteSBleHBlcmllbmNlLCBhbmQgYmFzZWQgb24gdGhlIHR5cGljYWwgZGVwZW5kZW5jaWVzIEkndmUgc2VlbiBpbiB0aGVzZSBraW5kcyBvZiBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zLCBgTkVUX0NMU2Agb2Z0ZW4sIGlmIG5vdCAqdXN1YWxseSosIGxlYW5zIG9uIGBORVRfU0NIRURgLiBJdCdzIGEgc3RhbmRhcmQgcGF0dGVybi4gVGltZSB0byBjb25maXJtIHRoYXQgcmVsYXRpb25zaGlwIGFuZCBlbnN1cmUgZXZlcnl0aGluZyBpcyBwcm9wZXJseSBzZXQgdXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExODU4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTU6MjQuMTY2NzcwNDY4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY2NzA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0NMU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz00Nzk9Y29tbWVudCBcXFwiQ2xhc3NpZmljYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWctNDgwLVxcbm5ldC9zY2hlZC9LY29uZmlnOjQ4MTpjb25maWcgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTQ4Mi1cXHRib29sXFxubmV0L3NjaGVkL0tjb25maWctNDgzLVxcbm5ldC9zY2hlZC9LY29uZmlnOjQ4NDpjb25maWcgTkVUX0NMU19CQVNJQ1xcbm5ldC9zY2hlZC9LY29uZmlnLTQ4NS1cXHR0cmlzdGF0ZSBcXFwiRWxlbWVudGFyeSBjbGFzc2lmaWNhdGlvbiAoQkFTSUMpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDkzLVxcbm5ldC9zY2hlZC9LY29uZmlnOjQ5NDpjb25maWcgTkVUX0NMU19ST1VURTRcXG5uZXQvc2NoZWQvS2NvbmZpZy00OTUtXFx0dHJpc3RhdGUgXFxcIlJvdXRpbmcgZGVjaXNpb24gKFJPVVRFKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTUwNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1MDY6Y29uZmlnIE5FVF9DTFNfRldcXG5uZXQvc2NoZWQvS2NvbmZpZy01MDctXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBtYXJrIChGVylcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy01MTUtXFxubmV0L3NjaGVkL0tjb25maWc6NTE2OmNvbmZpZyBORVRfQ0xTX1UzMlxcbm5ldC9zY2hlZC9LY29uZmlnLTUxNy1cXHR0cmlzdGF0ZSBcXFwiVW5pdmVyc2FsIDMyYml0IGNvbXBhcmlzb25zIHcvIGhhc2hpbmcgKFUzMilcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01MzM9Y29uZmlnIENMU19VMzJfTUFSS1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTM4LVxcbm5ldC9zY2hlZC9LY29uZmlnOjUzOTpjb25maWcgTkVUX0NMU19GTE9XXFxubmV0L3NjaGVkL0tjb25maWctNTQwLVxcdHRyaXN0YXRlIFxcXCJGbG93IGNsYXNzaWZpZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy01NDktXFxubmV0L3NjaGVkL0tjb25maWc6NTUwOmNvbmZpZyBORVRfQ0xTX0NHUk9VUFxcbm5ldC9zY2hlZC9LY29uZmlnLTU1MS1cXHR0cmlzdGF0ZSBcXFwiQ29udHJvbCBHcm91cCBDbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTYxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjU2Mjpjb25maWcgTkVUX0NMU19CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy01NjMtXFx0dHJpc3RhdGUgXFxcIkJQRi1iYXNlZCBjbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTcxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjU3Mjpjb25maWcgTkVUX0NMU19GTE9XRVJcXG5uZXQvc2NoZWQvS2NvbmZpZy01NzMtXFx0dHJpc3RhdGUgXFxcIkZsb3dlciBjbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTgxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjU4Mjpjb25maWcgTkVUX0NMU19NQVRDSEFMTFxcbm5ldC9zY2hlZC9LY29uZmlnLTU4My1cXHR0cmlzdGF0ZSBcXFwiTWF0Y2gtYWxsIGNsYXNzaWZpZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy03MDEtXFxubmV0L3NjaGVkL0tjb25maWc6NzAyOmNvbmZpZyBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTcwMy1cXHRib29sIFxcXCJBY3Rpb25zXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMDoxNToyNC4yMTE0NDQ0NThaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk0NjQzNjc5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYE5FVF9DTFNgIFZhcmlhYmxlKipcblxuT2theSwgc28gYE5FVF9DTFNgIGlzIGEgQm9vbGVhbiB2YWx1ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIlJpZ2h0LCBzbyBzb21ldGhpbmcgZWxzZSBpcyBmbGlwcGluZyB0aGlzIHN3aXRjaC5cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgKmRyaXZpbmcqIHRoYXQgQm9vbGVhbiBzdGF0ZS4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gSSdtIGdvaW5nIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZWJhc2Ugb3IgY29uZmlndXJhdGlvbiB0byBzZWUgd2hlcmUgYE5FVF9DTFNgIGlzIGJlaW5nIGFzc2lnbmVkLCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZSBzZWxlY3Rpb24gY3JpdGVyaWEgaXMgY3JpdGljYWwgaGVyZS4gSXQncyBhbG1vc3QgY2VydGFpbiBpdCdzIGRldGVybWluZWQgYnkgYSBzZXQgb2YgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBvciBhIGxvb2t1cCB0YWJsZSwgYW5kIEkgbmVlZCB0byBpZGVudGlmeSB0aG9zZSB0cmlnZ2Vycy4gS25vd2luZyB0aGUgdXBzdHJlYW0gbG9naWMgd2lsbCBwcm92aWRlIGluc2lnaHQgaW50byBob3cgdGhlIG5ldHdvcmsgYmVoYXZpb3IgaXMgYmVpbmcgY29udHJvbGxlZC4gSSdsbCBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGUgcG9pbnQgd2hlcmUgYE5FVF9DTFNgIGlzIHVzZWQgdG8gaXRzIHBvaW50IG9mIGRlZmluaXRpb24uIExldCdzIGdldCB0byB3b3JrIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjcyMywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE1OjI3LjE1Nzg4Mzg3N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE3OTExNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVF9DTFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NDg0PWNvbmZpZyBORVRfQ0xTX0JBU0lDXFxubmV0L3NjaGVkL0tjb25maWctNDg1LVxcdHRyaXN0YXRlIFxcXCJFbGVtZW50YXJ5IGNsYXNzaWZpY2F0aW9uIChCQVNJQylcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NDg2OlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNDg3LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTQ5ND1jb25maWcgTkVUX0NMU19ST1VURTRcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTQ5Ny1cXHRzZWxlY3QgSVBfUk9VVEVfQ0xBU1NJRFxcbm5ldC9zY2hlZC9LY29uZmlnOjQ5ODpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTQ5OS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01MDY9Y29uZmlnIE5FVF9DTFNfRldcXG5uZXQvc2NoZWQvS2NvbmZpZy01MDctXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBtYXJrIChGVylcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTA4OlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNTA5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTUxNj1jb25maWcgTkVUX0NMU19VMzJcXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjUxODpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTUxOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01Mzk9Y29uZmlnIE5FVF9DTFNfRkxPV1xcbm5ldC9zY2hlZC9LY29uZmlnLTU0MC1cXHR0cmlzdGF0ZSBcXFwiRmxvdyBjbGFzc2lmaWVyXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjU0MTpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTU0Mi1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01NTA9Y29uZmlnIE5FVF9DTFNfQ0dST1VQXFxubmV0L3NjaGVkL0tjb25maWctNTUxLVxcdHRyaXN0YXRlIFxcXCJDb250cm9sIEdyb3VwIENsYXNzaWZpZXJcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTUyOlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNTUzLVxcdHNlbGVjdCBDR1JPVVBfTkVUX0NMQVNTSURcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTU2Mj1jb25maWcgTkVUX0NMU19CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy01NjMtXFx0dHJpc3RhdGUgXFxcIkJQRi1iYXNlZCBjbGFzc2lmaWVyXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjU2NDpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTU2NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01NzI9Y29uZmlnIE5FVF9DTFNfRkxPV0VSXFxubmV0L3NjaGVkL0tjb25maWctNTczLVxcdHRyaXN0YXRlIFxcXCJGbG93ZXIgY2xhc3NpZmllclxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo1NzQ6XFx0c2VsZWN0IE5FVF9DTFNcXG5uZXQvc2NoZWQvS2NvbmZpZy01NzUtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTgyPWNvbmZpZyBORVRfQ0xTX01BVENIQUxMXFxubmV0L3NjaGVkL0tjb25maWctNTgzLVxcdHRyaXN0YXRlIFxcXCJNYXRjaC1hbGwgY2xhc3NpZmllclxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo1ODQ6XFx0c2VsZWN0IE5FVF9DTFNcXG5uZXQvc2NoZWQvS2NvbmZpZy01ODUtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTkyPWNvbmZpZyBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNTkzLVxcdGJvb2wgXFxcIkV4dGVuZGVkIE1hdGNoZXNcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTk0OlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNTk1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTcwMj1jb25maWcgTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXFx0Ym9vbCBcXFwiQWN0aW9uc1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3MDQ6XFx0c2VsZWN0IE5FVF9DTFNcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDUtXFx0c2VsZWN0IE5FVF9YR1JFU1NcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTU6MjcuMTk5Njc4MjU2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTY5MTA5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb24gUXVhbmRhcnkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gZW5hYmxlIGBORVRfQ0xTYCwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIG1vc3QgZGlyZWN0IGFwcHJvYWNoIGludm9sdmVzIGVuYWJsaW5nIGVpdGhlciBgTkVUX0NMU19CQVNJQ2AsIGBORVRfQ0xTX0JQRmAsIGBORVRfQ0xTX0ZMT1dFUmAsIG9yIGBORVRfQ0xTX0FDVGAuIFRvIGtlZXAgdGhpbmdzIHNpbXBsZSBhbmQgZW5zdXJlIHdlIGhhdmUgbWF4aW11bSBjb3ZlcmFnZSwgSSdtIGp1c3QgZ29pbmcgdG8gZ28gYWhlYWQgYW5kIHNwZWNpZnkgYWxsIG9mIHRoZW06IGBORVRfQ0xTX0JBU0lDYCwgYE5FVF9DTFNfQUNUYCwgYE5FVF9DTFNfQlBGYCwgYE5FVF9DTFNfRkxPV0VSYCwgYW5kIGBORVRfQ0xTX1UzMmAuIFRoZSBwYXJlbnQgbWVudSBmb3IgYWxsIG9mIHRoaXMgaXMgYE5FVF9TQ0hFRGAsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBpcyBjb25maWd1cmVkIGNvcnJlY3RseSwgYW5kIHRoZSBidWlsZCBzeXN0ZW0gc2hvdWxkIHJlc29sdmUgYW55IGRlcGVuZGVuY2llcy4gVGhhdCdzIHRoZSBtb3N0IHJvYnVzdCB3YXkgdG8gaGFuZGxlIGl0LCBtYWtpbmcgc3VyZSBhbGwgdGhlIGNsYXNzaWZpZXIgY29tcG9uZW50cyBhcmUgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzk1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE1OjMwLjU5NjU5MTM4OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIyOTg4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZy01LVxcbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDA6MTU6MzAuNjM4OTAwMDA4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MzkyOTA0NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVGhpcyBOZXR3b3JrIFNjaGVkdWxlciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBgTkVUX1NDSEVEYCwgd2hpY2ggaXMga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2UsIHdoaWNoIGFwcGVhcnMgdG8gaW52b2x2ZSB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyB3aXRoaW4gdGhlIG5ldHdvcmsgc2NoZWR1bGVyJ3MgY29udHJvbCBmbG93LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSBgdGNmX2Jsb2NrX3B1dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0X2V4dGAsIHNpbmNlIHRoZXkgYXJlIGV4cG9ydGVkIGFuZCBub24tc3RhdGljIGZ1bmN0aW9ucywgYW5kIGFyZSBsaWtlbHkgdG8gYmUgZW50cnkgcG9pbnRzIGZvciB0aGlzIGxvZ2ljLlxuXG5BcmUgdGhleSBob3QtcGF0aCwgdGhvdWdoPyBMZXQncyBzZWUuLi4gYHRjZl9ibG9ja19wdXRgIGdldHMgY2FsbGVkIGR1cmluZyBxZGlzYyBvciBjbGFzcyBkZXN0cnVjdGlvbi4gYHRjZl9ibG9ja19wdXRfZXh0YCBpcyBjYWxsZWQgd2hlbiBhIGJsb2NrIGlzIHB1dC4gVGhhdCBtZWFucyB0aGVzZSBhcmUgKmNvbnRyb2wgcGF0aCogb3BlcmF0aW9ucyByZWxhdGVkIHRvIHNldHVwIGFuZCB0ZWFyZG93biwgbm90IHRoZSBkYXRhIHBhdGggaGFuZGxpbmcgdGhlIGFjdHVhbCBwYWNrZXQgcHJvY2Vzc2luZy4gR29vZCwgdGhleSdyZSBub3QgcGVyZm9ybWFuY2UtY3JpdGljYWwsIGFuZCBhcmUgbGlrZWx5IHRoZSByaWdodCBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcuXG5cblRoZXJlZm9yZSwgaGVyZSdzIG15IHN1bW1hcnkgc28gZmFyOiBXZSBzaG91bGQgY29uc2lkZXIgdGhpcyBwYXRjaCBXb3J0aEZ1enppbmcuIFRoZSBGb2N1c1N5bWJvbHMgYXJlIGRlZmluaXRpdmVseSBgdGNmX2Jsb2NrX3B1dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0X2V4dGAuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGZvbGxvd2luZyBFbmFibGVDb25maWdzIGFyZSBlbmFibGVkIGR1cmluZyB0ZXN0aW5nOiBgTkVUX1NDSEVEYCwgYE5FVF9DTFNgLCBgTkVUX0NMU19CQVNJQ2AsIGBORVRfQ0xTX0FDVGAsIGBORVRfQ0xTX0JQRmAsIGBORVRfQ0xTX0ZMT1dFUmAsIGFuZCBgTkVUX0NMU19VMzJgLiBUaGUgcmF0aW9uYWxlIGlzIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGBfX3RjZl9ibG9ja19wdXRgLCBzcGVjaWZpY2FsbHkgYWx0ZXJpbmcgdGhlIHNlcXVlbmNlIG9mIG9mZmxvYWQgdW5iaW5kaW5nIHJlbGF0aXZlIHRvIGxvY2sgYWNxdWlzaXRpb24gYW5kIHJlZmNvdW50IGRlY3JlbWVudGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBhbmQgY2xhc3NpZmllciBBUEkgdGhhdCBhZmZlY3RzIGNvbnRyb2wgcGF0aCB0ZWFyZG93biwgc28gaXQgaXMgaW1wb3J0YW50IHRvIHRlc3QgdGhpcy5cblxuTGV0IG1lIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIFRoZSBgdGNmX2Jsb2NrX29mZmxvYWRfdW5iaW5kYCBmdW5jdGlvbiBpcyBzdGF0aWMuIE9rYXksIHRoYXQgY29uZmlybXMgdGhhdCBgdGNmX2Jsb2NrX3B1dGAgYW5kIGB0Y2ZfYmxvY2tfcHV0X2V4dGAgYXJlIHRoZSBwcm9wZXIgZW50cnkgcG9pbnRzIGZvciBhbmFseXNpcyBhbmQgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQxNzMsIk91dHB1dFRva2VucyI6MTYwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAwOjE1OjM3LjQ3ODE5NDAzM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMjY3Njk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9DTFNcIixcbiAgICBcIk5FVF9DTFNfQkFTSUNcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORVRfQ0xTX0JQRlwiLFxuICAgIFwiTkVUX0NMU19GTE9XRVJcIixcbiAgICBcIk5FVF9DTFNfVTMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNmX2Jsb2NrX3B1dFwiLFxuICAgIFwidGNmX2Jsb2NrX3B1dF9leHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGluIGBfX3RjZl9ibG9ja19wdXRgLCB1bmJpbmRpbmcgdGhlIG9mZmxvYWQgYmVmb3JlIHRha2luZyB0aGUgYmxvY2sgbG9jayBhbmQgZGVjcmVtZW50aW5nIHRoZSByZWZjb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZy9jbGFzc2lmaWVyIEFQSSBhbmQgYWZmZWN0cyBjb250cm9sIHBhdGggdGVhcmRvd24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfQ0xTXCIsXG4gICAgXCJORVRfQ0xTX0JBU0lDXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkVUX0NMU19CUEZcIixcbiAgICBcIk5FVF9DTFNfRkxPV0VSXCIsXG4gICAgXCJORVRfQ0xTX1UzMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjZl9ibG9ja19wdXRcIixcbiAgICBcInRjZl9ibG9ja19wdXRfZXh0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBpbiBgX190Y2ZfYmxvY2tfcHV0YCwgdW5iaW5kaW5nIHRoZSBvZmZsb2FkIGJlZm9yZSB0YWtpbmcgdGhlIGJsb2NrIGxvY2sgYW5kIGRlY3JlbWVudGluZyB0aGUgcmVmY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIHNjaGVkdWxpbmcvY2xhc3NpZmllciBBUEkgYW5kIGFmZmVjdHMgY29udHJvbCBwYXRoIHRlYXJkb3duLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowjngrq[1] Phase: Succeeded StartedAt: 2026-08-02 00:15:48 +0000 UTC FinishedAt: 2026-08-02 00:15:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 00:15:48 +0000 UTC FinishedAt: 2026-08-02 00:15:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2] Phase: Succeeded StartedAt: 2026-08-02 00:15:48 +0000 UTC FinishedAt: 2026-08-02 04:05:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-02 00:15:48 +0000 UTC FinishedAt: 2026-08-02 04:05:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-02 00:15:48 +0000 UTC FinishedAt: 2026-08-02 00:16:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-02 00:15:48 +0000 UTC FinishedAt: 2026-08-02 00:15:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowjngrq/series-workflowjngrq-convert-artifact-2738688134/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-02 00:16:14 +0000 UTC FinishedAt: 2026-08-02 00:40:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-02 00:16:14 +0000 UTC FinishedAt: 2026-08-02 00:40:00 +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:*77554e67-3dfe-4cfe-bcc4-c2d23a1d1bf2,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-workflowjngrq/series-workflowjngrq-convert-artifact-2738688134/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": "fc510f7d-5f93-4178-9a5c-3018f31e4cc0", "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-workflowjngrq/series-workflowjngrq-build-action-3816707100/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-02 00:16:14 +0000 UTC FinishedAt: 2026-08-02 00:39:50 +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:*77554e67-3dfe-4cfe-bcc4-c2d23a1d1bf2,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-workflowjngrq/series-workflowjngrq-convert-artifact-2738688134/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": "fc510f7d-5f93-4178-9a5c-3018f31e4cc0", "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-workflowjngrq/series-workflowjngrq-build-action-3816707100/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-02 00:40:00 +0000 UTC FinishedAt: 2026-08-02 00:40:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-02 00:40:00 +0000 UTC FinishedAt: 2026-08-02 00:40:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-02 00:40:00 +0000 UTC FinishedAt: 2026-08-02 00:40:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-02 00:40:00 +0000 UTC FinishedAt: 2026-08-02 00:40:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowjngrq/series-workflowjngrq-convert-artifact-1367696345/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-02 00:40:10 +0000 UTC FinishedAt: 2026-08-02 00:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-02 00:40:10 +0000 UTC FinishedAt: 2026-08-02 00:41:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fc510f7d-5f93-4178-9a5c-3018f31e4cc0,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-workflowjngrq/series-workflowjngrq-build-action-3816707100/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-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-02 00:42:01 +0000 UTC FinishedAt: 2026-08-02 00:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-02 00:42:01 +0000 UTC FinishedAt: 2026-08-02 00:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-02 00:42:01 +0000 UTC FinishedAt: 2026-08-02 01:02:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-02 00:42:01 +0000 UTC FinishedAt: 2026-08-02 01:02:09 +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:*77554e67-3dfe-4cfe-bcc4-c2d23a1d1bf2,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-workflowjngrq/series-workflowjngrq-convert-artifact-1367696345/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": "2631661c-780b-4637-9607-ffe1df66fc1b", "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-workflowjngrq/series-workflowjngrq-build-action-3730606133/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-02 00:42:01 +0000 UTC FinishedAt: 2026-08-02 01:01:58 +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:*77554e67-3dfe-4cfe-bcc4-c2d23a1d1bf2,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-workflowjngrq/series-workflowjngrq-convert-artifact-1367696345/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": "2631661c-780b-4637-9607-ffe1df66fc1b", "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-workflowjngrq/series-workflowjngrq-build-action-3730606133/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-02 01:02:09 +0000 UTC FinishedAt: 2026-08-02 01:02:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-02 01:02:09 +0000 UTC FinishedAt: 2026-08-02 01:02:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-02 01:02:09 +0000 UTC FinishedAt: 2026-08-02 01:04:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-02 01:02:09 +0000 UTC FinishedAt: 2026-08-02 01:03:58 +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:*2631661c-780b-4637-9607-ffe1df66fc1b,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-workflowjngrq/series-workflowjngrq-build-action-3730606133/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-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-02 01:04:08 +0000 UTC FinishedAt: 2026-08-02 04:05:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-02 01:04:08 +0000 UTC FinishedAt: 2026-08-02 04:05:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"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:*fc510f7d-5f93-4178-9a5c-3018f31e4cc0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2631661c-780b-4637-9607-ffe1df66fc1b,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-workflowjngrq/series-workflowjngrq-build-action-3816707100/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-workflowjngrq/series-workflowjngrq-build-action-3730606133/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-02 01:04:08 +0000 UTC FinishedAt: 2026-08-02 01:04:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-02 01:04:08 +0000 UTC FinishedAt: 2026-08-02 01:04:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"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-workflowjngrq/series-workflowjngrq-convert-artifact-2135612622/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-02 01:04:08 +0000 UTC FinishedAt: 2026-08-02 01:04:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-02 01:04:08 +0000 UTC FinishedAt: 2026-08-02 01:04:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-02 01:04:08 +0000 UTC FinishedAt: 2026-08-02 01:04:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-02 01:04:37 +0000 UTC FinishedAt: 2026-08-02 04:05:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjngrq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_block_put","tcf_block_put_ext"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS","NET_CLS_BASIC","NET_CLS_ACT","NET_CLS_BPF","NET_CLS_FLOWER","NET_CLS_U32"],"series_id":"09a51ac6-68ec-40e2-a6c2-103b5c409a33","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-02 01:04:37 +0000 UTC FinishedAt: 2026-08-02 04:05:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fc510f7d-5f93-4178-9a5c-3018f31e4cc0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2631661c-780b-4637-9607-ffe1df66fc1b,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-workflowjngrq/series-workflowjngrq-build-action-3816707100/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-workflowjngrq/series-workflowjngrq-build-action-3730606133/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-workflowjngrq/series-workflowjngrq-convert-artifact-2135612622/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,}