Name: series-workflowmzlnv Phase: Succeeded StartedAt: 2026-08-02 20:21:38 +0000 UTC FinishedAt: 2026-08-03 00:55:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[0] Phase: Succeeded StartedAt: 2026-08-02 20:21:38 +0000 UTC FinishedAt: 2026-08-02 20:44:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 20:21:38 +0000 UTC FinishedAt: 2026-08-02 20:44:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_CGROUP", "BLK_CGROUP_IOCOST" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_CGROUP", "BLK_CGROUP_IOCOST" ], "series_id": "2c5e54d8-5a0b-45fa-bb17-6893c9d5875e" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ioc_pd_stat" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19DR1JPVVAmIzM0OywKICAgICYjMzQ7QkxLX0NHUk9VUF9JT0NPU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpb2NfcGRfc3RhdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc3BpbmxvY2sgdG8gYGlvY19wZF9zdGF0YCBpbiB0aGUgYmxvY2sgSU8gY29zdCBjZ3JvdXAgY29udHJvbGxlciB0byBwcmV2ZW50IGEgcmFjZSBjb25kaXRpb24gd2hlbiByZWFkaW5nIGNncm91cCBzdGF0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDE0YzY3MzgzZDM3ZmZmYjg3NmMyMDhmMTE3ZjY2NGViODY3ODZmNmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDIwOjQyOjQ3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1pb2Nvc3QuYyBiL2Jsb2NrL2Jsay1pb2Nvc3QuY1xuaW5kZXggOGIyYWViYTJlMWUzOS4uYjQ5MWE2YWI5OGVhNiAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1pb2Nvc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLWlvY29zdC5jXG5AQCAtMzA5Myw4ICYjNDM7MzA5MywxMCBAQCBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcbiBcdHN0cnVjdCBpb2NfZ3EgKmlvY2cgPSBwZF90b19pb2NnKHBkKTtcbiBcdHN0cnVjdCBpb2MgKmlvYyA9IGlvY2ctXHUwMDNlaW9jO1xuIFxuJiM0MztcdHNwaW5fbG9ja19pcnEoXHUwMDI2aW9jLVx1MDAzZWxvY2spO1xuJiM0MztcbiBcdGlmICghaW9jLVx1MDAzZWVuYWJsZWQpXG4tXHRcdHJldHVybjtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuIFxuIFx0aWYgKGlvY2ctXHUwMDNlbGV2ZWwgPT0gMCkge1xuIFx0XHR1bnNpZ25lZCB2cDEwayA9IERJVjY0X1U2NF9ST1VORF9DTE9TRVNUKFxuQEAgLTMxMTAsNiAmIzQzOzMxMTIsOCBAQCBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcbiBcdFx0XHRpb2NnLVx1MDAzZWxhc3Rfc3RhdC53YWl0X3VzLFxuIFx0XHRcdGlvY2ctXHUwMDNlbGFzdF9zdGF0LmluZGVidF91cyxcbiBcdFx0XHRpb2NnLVx1MDAzZWxhc3Rfc3RhdC5pbmRlbGF5X3VzKTtcbiYjNDM7b3V0OlxuJiM0MztcdHNwaW5fdW5sb2NrX2lycShcdTAwMjZpb2MtXHUwMDNlbG9jayk7XG4gfVxuIFxuIHN0YXRpYyB1NjQgaW9jX3dlaWdodF9wcmZpbGwoc3RydWN0IHNlcV9maWxlICpzZiwgc3RydWN0IGJsa2dfcG9saWN5X2RhdGEgKnBkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfQ0dST1VQJiMzNDssCiAgICAmIzM0O0JMS19DR1JPVVBfSU9DT1NUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9jX3BkX3N0YXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIHRvIGBpb2NfcGRfc3RhdGAgaW4gdGhlIGJsb2NrIElPIGNvc3QgY2dyb3VwIGNvbnRyb2xsZXIgdG8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gcmVhZGluZyBjZ3JvdXAgc3RhdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxNGM2NzM4M2QzN2ZmZmI4NzZjMjA4ZjExN2Y2NjRlYjg2Nzg2ZjZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAyMDo0Mjo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1pb2Nvc3QuYyBiL2Jsb2NrL2Jsay1pb2Nvc3QuYwppbmRleCA4YjJhZWJhMmUxZTM5Li5iNDkxYTZhYjk4ZWE2IDEwMDY0NAotLS0gYS9ibG9jay9ibGstaW9jb3N0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLWlvY29zdC5jCkBAIC0zMDkzLDggJiM0MzszMDkzLDEwIEBAIHN0YXRpYyB2b2lkIGlvY19wZF9zdGF0KHN0cnVjdCBibGtnX3BvbGljeV9kYXRhICpwZCwgc3RydWN0IHNlcV9maWxlICpzKQogCXN0cnVjdCBpb2NfZ3EgKmlvY2cgPSBwZF90b19pb2NnKHBkKTsKIAlzdHJ1Y3QgaW9jICppb2MgPSBpb2NnLSZndDtpb2M7CiAKJiM0MzsJc3Bpbl9sb2NrX2lycSgmYW1wO2lvYy0mZ3Q7bG9jayk7CiYjNDM7CiAJaWYgKCFpb2MtJmd0O2VuYWJsZWQpCi0JCXJldHVybjsKJiM0MzsJCWdvdG8gb3V0OwogCiAJaWYgKGlvY2ctJmd0O2xldmVsID09IDApIHsKIAkJdW5zaWduZWQgdnAxMGsgPSBESVY2NF9VNjRfUk9VTkRfQ0xPU0VTVCgKQEAgLTMxMTAsNiAmIzQzOzMxMTIsOCBAQCBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcykKIAkJCWlvY2ctJmd0O2xhc3Rfc3RhdC53YWl0X3VzLAogCQkJaW9jZy0mZ3Q7bGFzdF9zdGF0LmluZGVidF91cywKIAkJCWlvY2ctJmd0O2xhc3Rfc3RhdC5pbmRlbGF5X3VzKTsKJiM0MztvdXQ6CiYjNDM7CXNwaW5fdW5sb2NrX2lycSgmYW1wO2lvYy0mZ3Q7bG9jayk7CiB9CiAKIHN0YXRpYyB1NjQgaW9jX3dlaWdodF9wcmZpbGwoc3RydWN0IHNlcV9maWxlICpzZiwgc3RydWN0IGJsa2dfcG9saWN5X2RhdGEgKnBkLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjI0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQmxvY2sgSU8gQ29zdCBDb250cm9sbGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBtYWtpbmcgY2hhbmdlcyB0byBgYmxvY2svYmxrLWlvY29zdC5jYC4gUmlnaHQgYXdheSwgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSB3cmFwcGluZyB0aGUgYm9keSBvZiBgaW9jX3BkX3N0YXQoKWAgd2l0aCBgc3Bpbl9sb2NrX2lycSgmYW1wO2lvYy0mZ3Q7bG9jaylgIGFuZCBgc3Bpbl91bmxvY2tfaXJxKCZhbXA7aW9jLSZndDtsb2NrKWAuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gcHJvdGVjdGluZyBhY2Nlc3MgdG8gc29tZSBzaGFyZWQgZGF0YSB3aXRoaW4gdGhhdCBmdW5jdGlvbiwgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgY2dyb3VwIGJsb2NrIElPIGNvbnRyb2xsZXIgcG9saWN5LgoKTGV0IG1lIHRha2UgYSBxdWljayBsb29rIGF0IGBpb2NfcGRfc3RhdCgpYCBpdHNlbGYgd2l0aGluIGBibG9jay9ibGstaW9jb3N0LmNgIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHN0YXQgY2FsbGJhY2sgaXMgZG9pbmcgYW5kIHdoYXQga2luZCBvZiBkYXRhIGl0JiMzOTtzIGFjY2Vzc2luZyB0byBmdWxseSBncmFzcCB0aGUgbmVjZXNzaXR5IG9mIHRoZSBzcGlubG9jay4gSXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSB0byBtYWludGFpbiBkYXRhIGludGVncml0eSwgYnV0IEkgbmVlZCB0aGUgY29udGV4dCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSBzcGVjaWZpYyByYWNlIGNvbmRpdGlvbnMgdGhleSYjMzk7cmUgYWRkcmVzc2luZy4gSSYjMzk7bGwgZm9jdXMgb24gd2hhdCBkYXRhIGlzIGJlaW5nIGFjY2Vzc2VkIGFuZCBtb2RpZmllZCwgYW5kIGZyb20gd2hlcmUuIEtub3dpbmcgdGhlIGRhdGEgc3RydWN0dXJlIGBpb2NgIGlzIGtleS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb2NfcGRfc3RhdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL2Jsay1pb2Nvc3QuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9ibGstaW9jb3N0LmM9MzA2Mz1zdGF0aWMgdm9pZCBpb2NfcGRfZnJlZShzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQpXG4tLVxuYmxvY2svYmxrLWlvY29zdC5jLTMwOTAtXG5ibG9jay9ibGstaW9jb3N0LmM6MzA5MTpzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zMDkyLXtcbi0tXG5ibG9jay9ibGstaW9jb3N0LmM9MzU5Mz1zdGF0aWMgc3RydWN0IGJsa2NnX3BvbGljeSBibGtjZ19wb2xpY3lfaW9jb3N0ID0ge1xuLS1cbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNTk5LVx0LnBkX2ZyZWVfZm5cdD0gaW9jX3BkX2ZyZWUsXG5ibG9jay9ibGstaW9jb3N0LmM6MzYwMDpcdC5wZF9zdGF0X2ZuXHQ9IGlvY19wZF9zdGF0LFxuYmxvY2svYmxrLWlvY29zdC5jLTM2MDEtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODI4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgYGlvY19wZF9zdGF0YCAtIEEgV29ydGh3aGlsZSBFbmRlYXZvcj8qKgoKT2theSwgc28gYGlvY19wZF9zdGF0YCBpcyBiZWluZyB1c2VkIHdpdGhpbiBgYmxrY2dfcG9saWN5X2lvY29zdGAgYXMgcGFydCBvZiB0aGUgY2dyb3VwIHN0YXRzIHJlYWRpbmcgcHJvY2Vzcy4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIGl0JiMzOTtzIHBhcnQgb2YgYSBmdW5jdGlvbiBhbmQgbGlrZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgbGlrZSBhIGxvY2ssIGlzIHRvIGNvbnNpZGVyIGZ1enppbmcuIFRoYXQmIzM5O3MgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgZW5zdXJpbmcgcm9idXN0bmVzcy4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIGl0JiMzOTtzICpqdXN0KiByZWFkaW5nIHN0YXRzLCBpc24mIzM5O3QgaXQ/IFBlcmhhcHMgdGhlIHJpc2sgaXMgbG93ZXIgdGhhbiBJIGluaXRpYWxseSB0aG91Z2h0LiBJIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhlIHBvdGVudGlhbCBpbXBhY3QuCgpSaWdodCwgYmFjayB0byBiYXNpY3MuIENhbiB0aGlzIGZ1bmN0aW9uIGV2ZW4gYmUgcmVhY2hlZD8gTGV0JiMzOTtzIHRyYWNlIGl0Li4uQWggeWVzLCBpdCYjMzk7cyB0cmlnZ2VyZWQgd2hlbiByZWFkaW5nIGNncm91cCBzdGF0cy4gVGhhdCBtYWtlcyBpdCBhIHZpYWJsZSBmdXp6aW5nIHRhcmdldC4KCkFscmlnaHQsIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgbW9kaWZpZWQgaXMgYGlvY19wZF9zdGF0YC4gTGV0IG1lIGdvIGNoZWNrIHRoZSBjb25maWcgZm9yIGBibGstaW9jb3N0LmNgCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrLWlvY29zdC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGU9MjQ9b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZKVx0JiM0Mzs9IGJsay1pb2xhdGVuY3kub1xuYmxvY2svTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUKVx0JiM0Mzs9IGJsay1pb2Nvc3Qub1xuYmxvY2svTWFrZWZpbGUtMjYtb2JqLSQoQ09ORklHX01RX0lPU0NIRURfREVBRExJTkUpXHQmIzQzOz0gbXEtZGVhZGxpbmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEkvTyBDb3N0IENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBDT05GSUdfQkxLX0NHUk9VUF9JT0NPU1RgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byBpdHMgZGVwZW5kZW5jaWVzLiBJdCYjMzk7cyBwb2ludGxlc3MgdG8gZ28gZnVydGhlciB3aXRob3V0IGtub3dpbmcgZXhhY3RseSB3aGF0IG90aGVyIG9wdGlvbnMgb3IgZmVhdHVyZXMgdGhpcyB0aGluZyByZWxpZXMgb24gb3IgaW50ZXJhY3RzIHdpdGguIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY3kgdHJlZSBpcyBmdW5kYW1lbnRhbCBiZWZvcmUgSSBjYW4gZXZlbiBiZWdpbiB0byBhc3Nlc3MgaXRzIGltcGxpY2F0aW9ucyBmb3IgSS9PIHNjaGVkdWxpbmcsIHJlc291cmNlIGlzb2xhdGlvbiwgb3IgcGVyZm9ybWFuY2UuIFdoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMgd2lsbCB0aGlzIGltcGFjdD8gV2hhdCBtb2R1bGVzIHdpbGwgYmUgaW52b2x2ZWQ/IFRoaXMgaXMgd2hlcmUgSSBzdGFydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0NHUk9VUF9JT0NPU1QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL0tjb25maWc9MTQ1PWNvbmZpZyBCTEtfQ0dST1VQX0ZDX0FQUElEXG4tLVxuYmxvY2svS2NvbmZpZy0xNTMtXG5ibG9jay9LY29uZmlnOjE1NDpjb25maWcgQkxLX0NHUk9VUF9JT0NPU1RcbmJsb2NrL0tjb25maWctMTU1LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgY29zdCBtb2RlbCBiYXNlZCBjZ3JvdXAgSU8gY29udHJvbGxlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgQkxLX0NHUk9VUF9JT0NPU1QgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgQkxLX0NHUk9VUF9JT0NPU1RgLiBUaW1lIHRvIG1lbnRhbGx5IHRyYWNlIGl0cyBpbXBsaWNhdGlvbnMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZmVhdHVyZSAqZG9lcyouIEl0JiMzOTtzIGFib3V0IEkvTyBjb3N0IGFjY291bnRpbmcgd2l0aGluIGNncm91cHMsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGZ1bmRhbWVudGFsIHRvIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGlzb2xhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgaXQgc2xvdHMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgZGVzaWduLgoKSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHZhcmlvdXMgY29tcG9uZW50cyB0aGF0IHdvdWxkICpyZWx5KiBvbiB0aGlzLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhbnl0aGluZyBpbnZvbHZlZCBpbiBJL08gc2NoZWR1bGluZywgdGhyb3R0bGluZywgYW5kIGFjY291bnRpbmcuIFRoZSBibG9jayBsYXllciBpcyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIG1lbnRhbGx5IG1hcCB0aGUgY2FsbCBwYXRocy4uLiBJcyB0aGlzIHRpZWQgaW50byB0aGUgZWxldmF0b3IgY29kZT8gVGhlIHJlcXVlc3QgcXVldWUgbWFuYWdlbWVudD8gQXJlIHdlIGludGVyYWN0aW5nIHdpdGggdGhlIGRpc2sgc2NoZWR1bGVyIGF0IG11bHRpcGxlIGxldmVscz8gSG93IGRvZXMgdGhpcyBpbnRlZ3JhdGUgd2l0aCB0aGUgdW5kZXJseWluZyBibG9jayBkZXZpY2UgZHJpdmVycz8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBzdG9yYWdlIHRlY2hub2xvZ2llcyB0aGF0IGFyZSBwYXJ0aWN1bGFybHkgdGFyZ2V0ZWQgYnkgdGhpcz8gU29saWQgc3RhdGUgZHJpdmVzPyBOVk1lPwoKVGhlbiwgdGhlIGNncm91cCBpbnRlZ3JhdGlvbiBpdHNlbGYuIFdoaWNoIGNncm91cCBzdWJzeXN0ZW1zIGRvZXMgdGhpcyBpbnRlcmFjdCB3aXRoPyBgYmxraW9gIG9mIGNvdXJzZS4gSXMgdGhlcmUgYW55IGxlYWthZ2Ugb2YgdGhpcyBpbmZvcm1hdGlvbiB0byBvdGhlciBzdWJzeXN0ZW1zLCBsaWtlIGBjcHVgIG9yIGBtZW1vcnlgLCBpbmRpcmVjdGx5IHZpYSB0aGUgSS9PIGNvc3QgbWV0cmljPyBJIHNob3VsZCBjaGVjayBhbmQgc2VlIGlmIHRoZXJlIGlzIGFueSBkZXBlbmRlbmN5IG9uIHRoZSBJL08gc2NoZWR1bGVycyBjaG9zZW4uIEFyZSB0aGVyZSBhbnkgcGFydGljdWxhciBpbXBsaWNhdGlvbnMgZm9yIHRoZSBjb250cm9sIGdyb3VwcyBoaWVyYXJjaHk/IERvZXMgdGhpcyByZWx5IG9uIGFueSBzcGVjaWZpYyBjZ3JvdXAgY29udHJvbGxlciBkYXRhIHN0cnVjdHVyZXMgb3IgQVBJcz8KCkkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSB1c2Vyc3BhY2UgaW1wbGljYXRpb25zLiBIb3cgaXMgdGhpcyBleHBvc2VkIHRvIHVzZXJzIHRocm91Z2ggdGhlIGBibGtpb2AgY2dyb3VwIGludGVyZmFjZT8gV2hhdCB0b29scyBvciB1dGlsaXRpZXMgKGxpa2UgYGNnc3RhdHNgKSBtaWdodCBkZXBlbmQgb24gdGhpcyBpbmZvcm1hdGlvbj8gV2hhdCBhYm91dCBkZWJ1Z2dpbmcgYW5kIHRyYWNpbmc/IEFyZSB0aGVyZSBhbnkgdHJhY2Vwb2ludHMgb3IgcGVyZiBldmVudHMgdGhhdCByZWx5IG9uIHRoaXMgZnVuY3Rpb25hbGl0eT8gSG93IGRvZXMgdGhpcyBpbmZsdWVuY2UgdGhlIHdheSBwZXJmb3JtYW5jZSBpcyBtZWFzdXJlZD8KCk15IG5leHQgc3RlcCBpcyB0byBwcm9iYWJseSBjaGVjayBvdXQgdGhlIGNvZGUgaXRzZWxmLCBidXQgdGhpcyBpcyB0aGUgZ2VuZXJhbCBtZW50YWwgbWFwIHRoYXQgSSBzaG91bGQgc3RhcnQgd2l0aC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBgI2lmZGVmYCBibG9ja3MsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIG1heWJlIGV2ZW4gZGVwZW5kZW5jeSBncmFwaHMsIHRvIHNlZSBob3cgaXQgYWxsIGZpdHMgdG9nZXRoZXIuIFRoZSBnb2FsIGlzIHRvIGJ1aWxkIGEgc29saWQgbWVudGFsIG1vZGVsIG9mIHRoZSBmZWF0dXJlLCBpbmNsdWRpbmcgaXRzIHNjb3BlLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgaXRzIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIGFuZCB1c2Vyc3BhY2UgdG9vbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfQ0dST1VQX0lPQ09TVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9LY29uZmlnPTE0NT1jb25maWcgQkxLX0NHUk9VUF9GQ19BUFBJRFxuLS1cbmJsb2NrL0tjb25maWctMTUzLVxuYmxvY2svS2NvbmZpZzoxNTQ6Y29uZmlnIEJMS19DR1JPVVBfSU9DT1NUXG5ibG9jay9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIGNvc3QgbW9kZWwgYmFzZWQgY2dyb3VwIElPIGNvbnRyb2xsZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxMgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUqKgoKT2theSwgdGltZSB0byBnZXQgZG93biB0byBidXNpbmVzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgYmxvY2svS2NvbmZpZ2AgZmlsZSBhIGxpdHRsZSBiZXR0ZXIuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDE1NCB0byBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB0aGVyZS4gSSYjMzk7bSBob3BpbmcgdG8gcGlucG9pbnQgYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gc2V0dGluZyBvciBkZXBlbmRlbmN5IEkmIzM5O20gaW50ZXJlc3RlZCBpbiBhbmQgdW5kZXJzdGFuZCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGJyb2FkZXIgYmxvY2sgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyB0aWRiaXRzIHRoYXQgc2VjdGlvbiBob2xkcy4gSXQgY291bGQgYmUgcmVsYXRlZCB0byBhIHNwZWNpZmljIGRyaXZlciwgYSBwZXJmb3JtYW5jZSBmZWF0dXJlLCBvciBwZXJoYXBzIGEgc2VjdXJpdHkgYXNwZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2Jsb2NrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0NTpcdGNvbmZpZyBCTEtfQ0dST1VQX0ZDX0FQUElEXG4gMTQ2Olx0XHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IHRvIHRyYWNrIEZDIEkvTyBUcmFmZmljIGFjcm9zcyBjZ3JvdXAgYXBwbGljYXRpb25zXCYjMzQ7XG4gMTQ3Olx0XHRkZXBlbmRzIG9uIEJMS19DR1JPVVAgXHUwMDI2XHUwMDI2IE5WTUVfRkNcbiAxNDg6XHRcdGhlbHBcbiAxNDk6XHRcdCAgRW5hYmxpbmcgdGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgc3VwcG9ydCB0byB0cmFjayBGQyBJL08gdHJhZmZpYyBhY3Jvc3NcbiAxNTA6XHRcdCAgY2dyb3VwIGFwcGxpY2F0aW9ucy4gSXQgZW5hYmxlcyB0aGUgRmFicmljIGFuZCB0aGUgc3RvcmFnZSB0YXJnZXRzIHRvXG4gMTUxOlx0XHQgIGlkZW50aWZ5LCBtb25pdG9yLCBhbmQgaGFuZGxlIEZDIHRyYWZmaWMgYmFzZWQgb24gVk0gdGFncyBieSBpbnNlcnRpbmdcbiAxNTI6XHRcdCAgYXBwbGljYXRpb24gc3BlY2lmaWMgaWRlbnRpZmljYXRpb24gaW50byB0aGUgRkMgZnJhbWUuXG4gMTUzOlx0XG4gMTU0Olx0Y29uZmlnIEJMS19DR1JPVVBfSU9DT1NUXG4gMTU1Olx0XHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBjb3N0IG1vZGVsIGJhc2VkIGNncm91cCBJTyBjb250cm9sbGVyXCYjMzQ7XG4gMTU2Olx0XHRkZXBlbmRzIG9uIEJMS19DR1JPVVBcbiAxNTc6XHRcdHNlbGVjdCBCTEtfUlFfQUxMT0NfVElNRVxuIDE1ODpcdFx0aGVscFxuIDE1OTpcdFx0RW5hYmxpbmcgdGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgLndlaWdodCBpbnRlcmZhY2UgZm9yIGNvc3RcbiAxNjA6XHRcdG1vZGVsIGJhc2VkIHByb3BvcnRpb25hbCBJTyBjb250cm9sLiAgVGhlIElPIGNvbnRyb2xsZXJcbiAxNjE6XHRcdGRpc3RyaWJ1dGVzIElPIGNhcGFjaXR5IGJldHdlZW4gZGlmZmVyZW50IGdyb3VwcyBiYXNlZCBvblxuIDE2MjpcdFx0dGhlaXIgc2hhcmUgb2YgdGhlIG92ZXJhbGwgd2VpZ2h0IGRpc3RyaWJ1dGlvbi5cbiAxNjM6XHRcbiAxNjQ6XHRjb25maWcgQkxLX0NHUk9VUF9JT1BSSU9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBCbG9jayBJL08gQ29zdCBhbmQgaXRzIERlcGVuZGVuY2llcyoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBCTEtfQ0dST1VQX0lPQ09TVGAuIFRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkLCBvYnZpb3VzbHksIGlzIHRoYXQgaXQgaGluZ2VzIG9uIGBCTEtfQ0dST1VQYC4gTm8gc3VycHJpc2UgdGhlcmU7IEkvTyBjb3N0aW5nIGlzIGJ1aWx0IG9uIHRoZSBmb3VuZGF0aW9uIG9mIGNvbnRyb2wgZ3JvdXBzLCBvZiBjb3Vyc2UuIE5vdywgYmVmb3JlIEkgZGl2ZSBkZWVwZXIgaW50byBgQkxLX0NHUk9VUF9JT0NPU1RgIGl0c2VsZiwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2UgYWJzb2x1dGVseSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIG9mIGBCTEtfQ0dST1VQYCBkZXBlbmRlbmNpZXMuIFdoYXQgYXJlIHRoZSBrZXkgY29tcG9uZW50cyBpdCByZWxpZXMgb24/IFdoYXQgb3RoZXIgZmxhZ3Mgb3Igc2V0dGluZ3MgYXJlIGVudGFuZ2xlZCB3aXRoIGl0PyBUaW1lIHRvIHF1aWNrbHkgdHJhY2UgdGhvc2UgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gc3VycHJpc2VzIGRvd24gdGhlIGxpbmUuIEkgd2FudCBhIGNsZWFuLCBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBsYW5kc2NhcGUgYmVmb3JlIEkgZ28gZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0NHUk9VUCQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk5NAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBuYWlsIGRvd24gd2hlcmUgYGNvbmZpZyBCTEtfQ0dST1VQYCBsaXZlcyBpbiB0aGUga2VybmVsJiMzOTtzIEtjb25maWcgc3lzdGVtLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgaXQmIzM5O3MgbGlrZWx5IHJlbGF0ZWQgdG8gYmxvY2sgZGV2aWNlIG1hbmFnZW1lbnQuIFRoZXJlZm9yZSwgdGhlIGZpcnN0IGxvZ2ljYWwgcGxhY2UgdG8gY2hlY2sgaXMgcHJvYmFibHkgdGhlIGBibG9jay9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIHJ1biBhIHNlYXJjaCB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSB0byBiZSBjZXJ0YWluLCB0aG91Z2guIExldCYjMzk7cyBzZWUgaWYgdGhhdCYjMzk7cyB3aGVyZSB0aGUgZGVmaW5pdGlvbiBpcyBoaWRpbmcuIFRpbWUgdG8gZmlyZSB1cCB0aGUgc2VhcmNoIHRvb2xzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfQ0dST1VQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9LY29uZmlnPTM5PWNvbmZpZyBCTEtfUlFfQUxMT0NfVElNRVxuLS1cbmJsb2NrL0tjb25maWctNDEtXG5ibG9jay9LY29uZmlnOjQyOmNvbmZpZyBCTEtfQ0dST1VQX1JXU1RBVFxuYmxvY2svS2NvbmZpZy00My1cdGJvb2xcbmJsb2NrL0tjb25maWctNDQtXG5ibG9jay9LY29uZmlnOjQ1OmNvbmZpZyBCTEtfQ0dST1VQX1BVTlRfQklPXG5ibG9jay9LY29uZmlnLTQ2LVx0Ym9vbFxuLS1cbmJsb2NrL0tjb25maWc9MTI3PWNvbmZpZyBCTEtfV0JUX01RXG4tLVxuYmxvY2svS2NvbmZpZy0xMzMtXG5ibG9jay9LY29uZmlnOjEzNDpjb25maWcgQkxLX0NHUk9VUF9JT0xBVEVOQ1lcbmJsb2NrL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgbGF0ZW5jeSBiYXNlZCBjZ3JvdXAgSU8gcHJvdGVjdGlvblwmIzM0O1xuLS1cbmJsb2NrL0tjb25maWctMTQ0LVxuYmxvY2svS2NvbmZpZzoxNDU6Y29uZmlnIEJMS19DR1JPVVBfRkNfQVBQSURcbmJsb2NrL0tjb25maWctMTQ2LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCB0byB0cmFjayBGQyBJL08gVHJhZmZpYyBhY3Jvc3MgY2dyb3VwIGFwcGxpY2F0aW9uc1wmIzM0O1xuLS1cbmJsb2NrL0tjb25maWctMTUzLVxuYmxvY2svS2NvbmZpZzoxNTQ6Y29uZmlnIEJMS19DR1JPVVBfSU9DT1NUXG5ibG9jay9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIGNvc3QgbW9kZWwgYmFzZWQgY2dyb3VwIElPIGNvbnRyb2xsZXJcJiMzNDtcbi0tXG5ibG9jay9LY29uZmlnLTE2My1cbmJsb2NrL0tjb25maWc6MTY0OmNvbmZpZyBCTEtfQ0dST1VQX0lPUFJJT1xuYmxvY2svS2NvbmZpZy0xNjUtXHRib29sIFwmIzM0O0Nncm91cCBJL08gY29udHJvbGxlciBmb3IgYXNzaWduaW5nIGFuIEkvTyBwcmlvcml0eSBjbGFzc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTUwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2NvbmZpZyBFeHBsb3JhdGlvbiBCZWdpbnMqKgoKQWxyaWdodCwgdGhlIGluaXRpYWwgaHVuY2ggcG9pbnRzIHRvd2FyZHMgbmVlZGluZyBhIGNvbXByZWhlbnNpdmUgc3dlZXAuIEkmIzM5O20gZ29pbmcgdG8ga2ljayB0aGluZ3Mgb2ZmIGJ5IHNlYXJjaGluZyB3aXRoaW4gdGhlICplbnRpcmUqIEtjb25maWcgdHJlZS4gSSBrbm93IHRoZXJlIGFyZSBwb3RlbnRpYWxseSBodW5kcmVkcywgbWF5YmUgdGhvdXNhbmRzLCBvZiB0aGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIHNjYXR0ZXJlZCBhY3Jvc3MgdGhlIGNvZGViYXNlLCBidXQgSSBuZWVkIHRvIHN0YXJ0IGJyb2FkLiBUaGlzIGFsbC1lbmNvbXBhc3Npbmcgc2VhcmNoIGlzIHRoZSBuZWNlc3NhcnkgZmlyc3Qgc3RlcCB0byBnZXQgYSBsYXkgb2YgdGhlIGxhbmQsIHdpdGhvdXQgbWFraW5nIGFueSBhc3N1bXB0aW9ucyBhYm91dCB3aGVyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIG1pZ2h0IGJlIGRlZmluZWQgb3IgcmVmZXJlbmNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19DR1JPVVAkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZz0xMDk5PWNvbmZpZyBNRU1DR19WMVxuLS1cbmluaXQvS2NvbmZpZy0xMTE1LVxuaW5pdC9LY29uZmlnOjExMTY6Y29uZmlnIEJMS19DR1JPVVBcbmluaXQvS2NvbmZpZy0xMTE3LVx0Ym9vbCBcJiMzNDtJTyBjb250cm9sbGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3ODUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgcGFydGljdWxhciBhc3BlY3Qgb2YgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJiMzOTttIHRoaW5raW5nLCBgaW5pdC9LY29uZmlnYCBpcyB0aGUgcGxhY2UgdG8gc3RhcnQsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMTE2LiBUaGF0IGFyZWEgbGlrZWx5IGRlYWxzIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBhIHBhcnRpY3VsYXIgbW9kdWxlIEkmIzM5O20gaW50ZXJlc3RlZCBpbi4gSSBzaG91bGQgY2hlY2sgdGhhdCBzZWN0aW9uIGZvciB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgbGllIGluIHdhaXQgaW4gdGhhdCBwb3J0aW9uIG9mIGBLY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExMTA6XHRcdCAgUGxlYXNlIG5vdGUgdGhhdCBmZWF0dXJlIHNldCBvZiB0aGUgbGVnYWN5IG1lbW9yeSBjb250cm9sbGVyIGlzIGxpa2VseVxuMTExMTpcdFx0ICBnb2luZyB0byBzaHJpbmsgZHVlIHRvIGRlcHJlY2F0aW9uIHByb2Nlc3MuIE5ldyBkZXBsb3ltZW50cyB3aXRoIHYxXG4xMTEyOlx0XHQgIGNvbnRyb2xsZXIgYXJlIGhpZ2hseSBkaXNjb3VyYWdlZC5cbjExMTM6XHRcbjExMTQ6XHRcdCAgU2F5IE4gaWYgdW5zdXJlLlxuMTExNTpcdFxuMTExNjpcdGNvbmZpZyBCTEtfQ0dST1VQXG4xMTE3Olx0XHRib29sIFwmIzM0O0lPIGNvbnRyb2xsZXJcJiMzNDtcbjExMTg6XHRcdGRlcGVuZHMgb24gQkxPQ0tcbjExMTk6XHRcdGRlZmF1bHQgblxuMTEyMDpcdFx0aGVscFxuMTEyMTpcdFx0R2VuZXJpYyBibG9jayBJTyBjb250cm9sbGVyIGNncm91cCBpbnRlcmZhY2UuIFRoaXMgaXMgdGhlIGNvbW1vblxuMTEyMjpcdFx0Y2dyb3VwIGludGVyZmFjZSB3aGljaCBzaG91bGQgYmUgdXNlZCBieSB2YXJpb3VzIElPIGNvbnRyb2xsaW5nXG4xMTIzOlx0XHRwb2xpY2llcy5cbjExMjQ6XHRcbjExMjU6XHRcdEN1cnJlbnRseSwgQ0ZRIElPIHNjaGVkdWxlciB1c2VzIGl0IHRvIHJlY29nbml6ZSB0YXNrIGdyb3VwcyBhbmRcbjExMjY6XHRcdGNvbnRyb2wgZGlzayBiYW5kd2lkdGggYWxsb2NhdGlvbiAocHJvcG9ydGlvbmFsIHRpbWUgc2xpY2UgYWxsb2NhdGlvbilcbjExMjc6XHRcdHRvIHN1Y2ggdGFzayBncm91cHMuIEl0IGlzIGFsc28gdXNlZCBieSBiaW8gdGhyb3R0bGluZyBsb2dpYyBpblxuMTEyODpcdFx0YmxvY2sgbGF5ZXIgdG8gaW1wbGVtZW50IHVwcGVyIGxpbWl0IGluIElPIHJhdGVzIG9uIGEgZGV2aWNlLlxuMTEyOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjQ1CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYEJMS19DR1JPVVBgIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggZGVhbGluZyB3aXRoIGBCTEtfQ0dST1VQYCBmdW5kYW1lbnRhbGx5IHJlbGllcyBvbiB0aGUgYEJMT0NLYCBjb25maWd1cmF0aW9uLCB0aGF0IG11Y2ggaXMgb2J2aW91cy4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggcmVxdWlyZXMgYEJMS19DR1JPVVBgIGFuZCBgQkxLX0NHUk9VUF9JT0NPU1RgIHRvIGJlIGVuYWJsZWQsIHdoaWNoIGlzbiYjMzk7dCBzdXJwcmlzaW5nLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgaW4gYGlvY19wZF9zdGF0KClgIHdoZXJlIGEgbG9jayBpcyBhZGRlZC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjb25zaWRlciBmdXp6aW5nIHRoaXMgY2hhbmdlLCBhbmQgdGhlIGZhY3QgdGhhdCBpdCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiwgbWFraW5nIGl0IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGNlcnRhaW5seSB2YWxpZGF0ZXMgdGhhdCBpbnN0aW5jdC4gVGhlIG9idmlvdXMgZm9jYWwgc3ltYm9sIGlzIGBpb2NfcGRfc3RhdGAuCgpOb3csIEkgbmVlZCB0byB2ZXJpZnkgd2hldGhlciBgaW9jX3BkX3N0YXRgIGlzIHN0YXRpYyBvciBub3QuIEFoLCB5ZXMsIGl0JiMzOTtzIGBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylgLiBXYWl0LCBpdCAqaXMqIGEgc3RhdGljIGZ1bmN0aW9uLi4uIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncy4gTm9ybWFsbHksIGEgc3RhdGljIGZ1bmN0aW9uIG1pZ2h0IGJlIGlubGluZWQsIG9yIG1pZ2h0IG5vdCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sLiBCdXQgaGFuZyBvbiwgaXQmIzM5O3MgYWN0dWFsbHkgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXI6IGAucGRfc3RhdF9mbiA9IGlvY19wZF9zdGF0LGAuIFRoYXQmIzM5O3MgYSBrZXkgZGV0YWlsISBCZWNhdXNlIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLCBpdCAqd29uJiMzOTt0KiBiZSBjb21wbGV0ZWx5IGlubGluZWQgYW5kIHNob3VsZCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sLCBldmVuIGlmIGl0JiMzOTtzIHN0YXRpYy4KClRoZSBiaWdnZXIgaXNzdWUgaXMgd2hldGhlciBzeXprYWxsZXIgY2FuIHRhcmdldCBpdCBkaXJlY3RseSBpZiBpdCYjMzk7cyBzdGF0aWMuIFRoYXQmIzM5O3MgdGhlIHJlYWwgcXVlc3Rpb24uIElzIHRoZXJlIGFuIGVudHJ5IHBvaW50PyBBbHJpZ2h0LCBsZXQgbWUgdHJhY2UgdGhpcy4gVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB2aWEgYHBkX3N0YXRfZm5gIGZyb20gYGJsa2NnX3ByaW50X3N0YXRgLiBSaWdodCwgc28gYGJsa2NnX3ByaW50X3N0YXRgIGlzIHRoZSBlbnRyeSBwb2ludCwgYW5kIHRoYXQgZnVuY3Rpb24gdGhlbiBjYWxscyBvdXIgYGlvY19wZF9zdGF0YCB0aHJvdWdoIHRoZSBmdW5jdGlvbiBwb2ludGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwZF9zdGF0X2ZuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL2Jsay1jZ3JvdXAuYz0xMTI5PXN0YXRpYyB2b2lkIGJsa2NnX3ByaW50X29uZV9zdGF0KHN0cnVjdCBibGtjZ19ncSAqYmxrZywgc3RydWN0IHNlcV9maWxlICpzKVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMTcxLVxuYmxvY2svYmxrLWNncm91cC5jOjExNzI6XHRcdGlmICghYmxrZy1cdTAwM2VwZFtpXSB8fCAhcG9sLVx1MDAzZXBkX3N0YXRfZm4pXG5ibG9jay9ibGstY2dyb3VwLmMtMTE3My1cdFx0XHRjb250aW51ZTtcbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMTc0LVxuYmxvY2svYmxrLWNncm91cC5jOjExNzU6XHRcdHBvbC1cdTAwM2VwZF9zdGF0X2ZuKGJsa2ctXHUwMDNlcGRbaV0sIHMpO1xuYmxvY2svYmxrLWNncm91cC5jLTExNzYtXHR9XG4tLVxuYmxvY2svYmxrLWNncm91cC5oPTE3ND1zdHJ1Y3QgYmxrY2dfcG9saWN5IHtcbi0tXG5ibG9jay9ibGstY2dyb3VwLmgtMTg5LVx0YmxrY2dfcG9sX3Jlc2V0X3BkX3N0YXRzX2ZuXHQqcGRfcmVzZXRfc3RhdHNfZm47XG5ibG9jay9ibGstY2dyb3VwLmg6MTkwOlx0YmxrY2dfcG9sX3N0YXRfcGRfZm5cdFx0KnBkX3N0YXRfZm47XG5ibG9jay9ibGstY2dyb3VwLmgtMTkxLX07XG4tLVxuYmxvY2svYmxrLWlvY29zdC5jPTM1OTM9c3RhdGljIHN0cnVjdCBibGtjZ19wb2xpY3kgYmxrY2dfcG9saWN5X2lvY29zdCA9IHtcbi0tXG5ibG9jay9ibGstaW9jb3N0LmMtMzU5OS1cdC5wZF9mcmVlX2ZuXHQ9IGlvY19wZF9mcmVlLFxuYmxvY2svYmxrLWlvY29zdC5jOjM2MDA6XHQucGRfc3RhdF9mblx0PSBpb2NfcGRfc3RhdCxcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNjAxLX07XG4tLVxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jPTEwNTk9c3RhdGljIHN0cnVjdCBibGtjZ19wb2xpY3kgYmxrY2dfcG9saWN5X2lvbGF0ZW5jeSA9IHtcbi0tXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtMTA2NC1cdC5wZF9mcmVlX2ZuXHQ9IGlvbGF0ZW5jeV9wZF9mcmVlLFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jOjEwNjU6XHQucGRfc3RhdF9mblx0PSBpb2xhdGVuY3lfcGRfc3RhdCxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDY2LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0NjUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBgYmxrY2dfcHJpbnRfb25lX3N0YXRgKioKClJpZ2h0LCBgYmxrY2dfcHJpbnRfb25lX3N0YXRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIGluIHRoZSBibG9jayBJL08gY29udHJvbGxlciBjb2RlLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gU3RhdGljIGZ1bmN0aW9ucyBtZWFuIHRoZXkmIzM5O3JlIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlaXIgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggZ2VuZXJhbGx5IHN1Z2dlc3RzIGEgdGFyZ2V0ZWQgcHVycG9zZSBhbmQgbGltaXRlZCBzY29wZS4gSXQmIzM5O3MgYSBrZXkgaW5kaWNhdG9yIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZnVuY3Rpb24mIzM5O3MgZXhhY3Qgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0IHdobyYjMzk7cyBhY3R1YWxseSAqdXNpbmcqIHRoaXMgdGhpbmcuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgaXMgYWJzb2x1dGVseSBjcnVjaWFsIHRvIGdyYXNwaW5nIGl0cyBmdW5jdGlvbiBhbmQgcG90ZW50aWFsIGltcGFjdC4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgdHJhY2sgZG93biB0aGUgY2FsbGVycy4gS25vd2luZyB3aG8mIzM5O3MgdXNpbmcgaXQgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYWNjb21wbGlzaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrY2dfcHJpbnRfb25lX3N0YXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLWNncm91cC5jPTEwODk9c3RhdGljIHZvaWQgYmxrY2dfZmlsbF9yb290X2lvc3RhdHModm9pZClcbi0tXG5ibG9jay9ibGstY2dyb3VwLmMtMTEyOC1cbmJsb2NrL2Jsay1jZ3JvdXAuYzoxMTI5OnN0YXRpYyB2b2lkIGJsa2NnX3ByaW50X29uZV9zdGF0KHN0cnVjdCBibGtjZ19ncSAqYmxrZywgc3RydWN0IHNlcV9maWxlICpzKVxuYmxvY2svYmxrLWNncm91cC5jLTExMzAte1xuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYz0xMTgxPXN0YXRpYyBpbnQgYmxrY2dfcHJpbnRfc3RhdChzdHJ1Y3Qgc2VxX2ZpbGUgKnNmLCB2b2lkICp2KVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMTkyLVx0aGxpc3RfZm9yX2VhY2hfZW50cnkoYmxrZywgXHUwMDI2YmxrY2ctXHUwMDNlYmxrZ19saXN0LCBibGtjZ19ub2RlKVxuYmxvY2svYmxrLWNncm91cC5jOjExOTM6XHRcdGJsa2NnX3ByaW50X29uZV9zdGF0KGJsa2csIHNmKTtcbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMTk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTQxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBibGtjZ19wcmludF9zdGF0YCoqCgpPa2F5LCBzbyBgYmxrY2dfcHJpbnRfc3RhdGAgaXMgYWxzbyBzdGF0aWMuIFJpZ2h0LCB0aGF0JiMzOTtzIGEgY2x1ZS4gU3RhdGljIG1lYW5zIGl0JiMzOTtzIGxpbWl0ZWQgaW4gc2NvcGUsIGxpa2VseSBpbnRlcm5hbCB0byBpdHMgY29tcGlsYXRpb24gdW5pdC4gU28sIHRoZSBrZXkgaGVyZSBpcyB0byBmaW5kIHRoZSBjYWxsZXJzLiBJdCYjMzk7cyBjb25maW5lZCwgd2hpY2ggbWVhbnMgdGhlIG51bWJlciBvZiBjYWxsIHNpdGVzIGlzIHByb2JhYmx5IHByZXR0eSBzbWFsbCBhbmQgbWFuYWdlYWJsZS4gVGltZSB0byBmaXJlIHVwIHRoZSB0b29scyBhbmQgcXVpY2tseSB0cmFjZSB0aG9zZSBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ3Vlc3NpbmcgaXQmIzM5O3MgcGFydCBvZiB0aGUgYmxvY2sgSU8gYWNjb3VudGluZyBvciBkZWJ1Z2dpbmcgaW5mcmFzdHJ1Y3R1cmUsIGJ1dCBmaW5kaW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgY29uZmlybSB0aGF0IGFuZCBnaXZlIG1lIHRoZSBmdWxsIHBpY3R1cmUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrY2dfcHJpbnRfc3RhdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9ibGstY2dyb3VwLmM9MTA3MD1zdGF0aWMgdm9pZCBibGtjZ19yc3RhdF9mbHVzaChzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqY3NzLCBpbnQgY3B1KVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMDgwLSAqIGNncm91cHMgYXJlIGRlZmluZWQuIEZvciB0aGF0IHJlYXNvbiwgY3NzX3JzdGF0X2ZsdXNoIGluXG5ibG9jay9ibGstY2dyb3VwLmM6MTA4MTogKiBibGtjZ19wcmludF9zdGF0IGRvZXMgbm90IGFjdHVhbGx5IGZpbGwgb3V0IHRoZSBpb3N0YXQgaW4gdGhlIHJvb3RcbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMDgyLSAqIGNncm91cCYjMzk7cyBibGtjZ19ncS5cbi0tXG5ibG9jay9ibGstY2dyb3VwLmM9MTEyOT1zdGF0aWMgdm9pZCBibGtjZ19wcmludF9vbmVfc3RhdChzdHJ1Y3QgYmxrY2dfZ3EgKmJsa2csIHN0cnVjdCBzZXFfZmlsZSAqcylcbi0tXG5ibG9jay9ibGstY2dyb3VwLmMtMTE4MC1cbmJsb2NrL2Jsay1jZ3JvdXAuYzoxMTgxOnN0YXRpYyBpbnQgYmxrY2dfcHJpbnRfc3RhdChzdHJ1Y3Qgc2VxX2ZpbGUgKnNmLCB2b2lkICp2KVxuYmxvY2svYmxrLWNncm91cC5jLTExODIte1xuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYz0xMTk4PXN0YXRpYyBzdHJ1Y3QgY2Z0eXBlIGJsa2NnX2ZpbGVzW10gPSB7XG4tLVxuYmxvY2svYmxrLWNncm91cC5jLTEyMDAtXHRcdC5uYW1lID0gXCYjMzQ7c3RhdFwmIzM0OyxcbmJsb2NrL2Jsay1jZ3JvdXAuYzoxMjAxOlx0XHQuc2VxX3Nob3cgPSBibGtjZ19wcmludF9zdGF0LFxuYmxvY2svYmxrLWNncm91cC5jLTEyMDItXHR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTAyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQmxvY2sgSS9PIENvc3QgU3RhdGlzdGljcyBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYGJsa2NnX2ZpbGVzYCBzdHVmZiwgd2hpY2ggaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBjZ3JvdXAgc3Vic3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgZW50cnkgcG9pbnQgZm9yIHRoaXMgaXMgbGlrZWx5IHJlYWRpbmcgdGhlIGBzdGF0YCBmaWxlIGFzc29jaWF0ZWQgd2l0aCBhIGJsb2NrIGNncm91cC4gSSYjMzk7dmUgcGlucG9pbnRlZCBgaW9jX3BkX3N0YXRgIGFzIGEga2V5IGZ1bmN0aW9uIGhlcmUuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYWRkcmVzcy10YWtlbiBhbmQgdXNlZCBhcyBhIGNhbGxiYWNrIGlzIGNydWNpYWw7IHRoYXQgbWVhbnMgaXQgd29uJiMzOTt0IGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCB3aWxsIGhhdmUgaXRzIG93biBkaXN0aW5jdCBzeW1ib2wuCgpJIGhhZCBjb25zaWRlcmVkIGBibGtjZ19wcmludF9zdGF0YCBhcyBhbiBhbHRlcm5hdGl2ZSBmb2N1cywgYnV0IHNpbmNlIHRoZSBwcm9tcHQgZW1waGFzaXplcyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMsIGBpb2NfcGRfc3RhdGAgaXMgYWN0dWFsbHkgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yIC0gZXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljIGFuZCBhZGRyZXNzIHRha2VuLCBpdCBpc24mIzM5O3QgaW5saW5lZCwgYW5kIGl0JiMzOTtzIGFsc28gdGhlIHNwZWNpZmljIGZ1bmN0aW9uIHRoYXQgd2FzIG1vZGlmaWVkLiBTbywgYGlvY19wZF9zdGF0YCBpcyB0aGUgcmlnaHQgY2hvaWNlLgoKTm93LCBiZWZvcmUgSSBwcm9jZWVkLCBJIG5lZWQgdG8gY2hlY2sgZm9yIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBUaGUgcHJvbXB0IG1lbnRpb25lZCBgQkxLX0NHUk9VUF9JT0NPU1RgLCB3aGljaCBkZXBlbmRzIG9uIGBCTEtfQ0dST1VQYCwgYW5kIGBCTEtfQ0dST1VQYCBpbiB0dXJuIGRlcGVuZHMgb24gYEJMT0NLYC4gVGh1cywgYm90aCBgQkxLX0NHUk9VUF9JT0NPU1RgIGFuZCBgQkxLX0NHUk9VUGAgd2lsbCBiZSBuZWNlc3NhcnkgZm9yIHRoaXMgdG8gd29yay4gSSBzaG91bGQgZG9jdW1lbnQgdGhvc2UgaW4gY2FzZSBJIG5lZWQgdG8gbW9kaWZ5IGFueXRoaW5nLgoKRmluYWxseSwganVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYGlvY19wZF9zdGF0YCBpcyBpbmRlZWQgdGhlICpvbmx5KiBmdW5jdGlvbiB0aGF0IHdhcyBtb2RpZmllZCBpbiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb2NfcGRfc3RhdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL2Jsay1pb2Nvc3QuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9ibGstaW9jb3N0LmM9MzA2Mz1zdGF0aWMgdm9pZCBpb2NfcGRfZnJlZShzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQpXG4tLVxuYmxvY2svYmxrLWlvY29zdC5jLTMwOTAtXG5ibG9jay9ibGstaW9jb3N0LmM6MzA5MTpzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zMDkyLXtcbi0tXG5ibG9jay9ibGstaW9jb3N0LmM9MzU5Mz1zdGF0aWMgc3RydWN0IGJsa2NnX3BvbGljeSBibGtjZ19wb2xpY3lfaW9jb3N0ID0ge1xuLS1cbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNTk5LVx0LnBkX2ZyZWVfZm5cdD0gaW9jX3BkX2ZyZWUsXG5ibG9jay9ibGstaW9jb3N0LmM6MzYwMDpcdC5wZF9zdGF0X2ZuXHQ9IGlvY19wZF9zdGF0LFxuYmxvY2svYmxrLWlvY29zdC5jLTM2MDEtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQxMwoJCQkJCQkJb3V0cHV0OiAxMDYKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGlvY19wZF9zdGF0YCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCwgYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBrZXkgbW9kaWZpY2F0aW9uIGlzIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBpb2NfcGRfc3RhdGAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBvbmx5IHRoaW5nIGFmZmVjdGVkIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGFzY2VydGFpbiByZWFjaGFiaWxpdHkgaW4gYSBjb21tb24gdmlydHVhbGl6ZWQgc2V0dGluZywgYW5kIHllcywgaXQgc2VlbXMgUUVNVSBwcm92aWRlcyBib3RoIGNncm91cHMgYW5kIGJsb2NrIGRldmljZSBhY2Nlc3MuIEkgY2FuIHNlZSB0aGlzIGJlaW5nIHRyaWdnZXJlZCBhcyBkZXNjcmliZWQuCgpUaGUgbmV4dCBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHBhdGNoIGFjdHVhbGx5ICpkbyogYW55dGhpbmcgdXNlZnVsPyBTZWVtcyBsaWtlIGl0IGRvZXMhIEl0JiMzOTtzIGltcGxlbWVudGluZyBhIHNwaW5sb2NrLCB3aGljaCBpbmRpY2F0ZXMgaXQmIzM5O3MgYWRkcmVzc2luZyBhIGdlbnVpbmUgcmFjZSBjb25kaXRpb24sIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHJlYWRpbmcgY2dyb3VwIHN0YXRpc3RpY3MuIFNvLCBpdCYjMzk7cyBhZGRpbmcgYSBsb2NraW5nIG1lY2hhbmlzbSwgd2hpY2ggdGVsbHMgbWUgdGhpcyBpcyBhZGRyZXNzaW5nIGEgY29uY3VycmVuY3kgaXNzdWUuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgcHJlcGFyZSB0aGUgZnV6emluZyBpbmZvcm1hdGlvbi4gQmFzZWQgb24gbXkgYW5hbHlzaXMsIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBUaGUgcHJpbWFyeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGBpb2NfcGRfc3RhdGAgc3ltYm9sLCBzbyBJJiMzOTtsbCBtYWtlIHN1cmUgaXQmIzM5O3MgaW4gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QuIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGNvbmZpZ3VyYXRpb25zLiBCb3RoIGBCTEtfQ0dST1VQYCBhbmQgYEJMS19DR1JPVVBfSU9DT1NUYCBhcmUgY3J1Y2lhbCBmb3IgdGhpcywgc2luY2UgaXQmIzM5O3MgdGhlIGNncm91cCBibG9jayBJTyBjb3N0IGNvbnRyb2xsZXIgdGhhdCYjMzk7cyByZWxldmFudC4KCk15IHJlYXNvbmluZyBpcyBzb2xpZDogdGhlIHBhdGNoIGludHJvZHVjZXMgYSBzcGlubG9jayB0byBgaW9jX3BkX3N0YXRgIHdpdGhpbiB0aGUgYmxvY2sgSU8gY29zdCBjZ3JvdXAgY29udHJvbGxlciwgZWZmZWN0aXZlbHkgcHJldmVudGluZyBhIHJhY2UgY29uZGl0aW9uIHdoZW4gYWNjZXNzaW5nIGNncm91cCBzdGF0aXN0aWNzLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgY29yZSBrZXJuZWwgbG9naWMgYW5kLCBjcnVjaWFsbHksIGlzIHJlYWNoYWJsZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBjaGVja3MgYWxsIG15IGJveGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0NHUk9VUCYjMzQ7LAogICAgJiMzNDtCTEtfQ0dST1VQX0lPQ09TVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lvY19wZF9zdGF0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzcGlubG9jayB0byBgaW9jX3BkX3N0YXRgIGluIHRoZSBibG9jayBJTyBjb3N0IGNncm91cCBjb250cm9sbGVyIHRvIHByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiB3aGVuIHJlYWRpbmcgY2dyb3VwIHN0YXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfQ0dST1VQJiMzNDssCiAgICAmIzM0O0JMS19DR1JPVVBfSU9DT1NUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9jX3BkX3N0YXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIHRvIGBpb2NfcGRfc3RhdGAgaW4gdGhlIGJsb2NrIElPIGNvc3QgY2dyb3VwIGNvbnRyb2xsZXIgdG8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gcmVhZGluZyBjZ3JvdXAgc3RhdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0Mjo0OC43MjY2NTU4NzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzI3ODkzNjI4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQXCIsXG4gICAgXCJCTEtfQ0dST1VQX0lPQ09TVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvY19wZF9zdGF0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIHRvIGBpb2NfcGRfc3RhdGAgaW4gdGhlIGJsb2NrIElPIGNvc3QgY2dyb3VwIGNvbnRyb2xsZXIgdG8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gcmVhZGluZyBjZ3JvdXAgc3RhdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQyOjQ4LjcyNjY2NDE0OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5Nzc0OTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTRjNjczODNkMzdmZmZiODc2YzIwOGYxMTdmNjY0ZWI4Njc4NmY2ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDIwOjQyOjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1pb2Nvc3QuYyBiL2Jsb2NrL2Jsay1pb2Nvc3QuY1xcbmluZGV4IDhiMmFlYmEyZTFlMzkuLmI0OTFhNmFiOThlYTYgMTAwNjQ0XFxuLS0tIGEvYmxvY2svYmxrLWlvY29zdC5jXFxuKysrIGIvYmxvY2svYmxrLWlvY29zdC5jXFxuQEAgLTMwOTMsOCArMzA5MywxMCBAQCBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcXG4gXFx0c3RydWN0IGlvY19ncSAqaW9jZyA9IHBkX3RvX2lvY2cocGQpO1xcbiBcXHRzdHJ1Y3QgaW9jICppb2MgPSBpb2NnLVxcdTAwM2Vpb2M7XFxuIFxcbitcXHRzcGluX2xvY2tfaXJxKFxcdTAwMjZpb2MtXFx1MDAzZWxvY2spO1xcbitcXG4gXFx0aWYgKCFpb2MtXFx1MDAzZWVuYWJsZWQpXFxuLVxcdFxcdHJldHVybjtcXG4rXFx0XFx0Z290byBvdXQ7XFxuIFxcbiBcXHRpZiAoaW9jZy1cXHUwMDNlbGV2ZWwgPT0gMCkge1xcbiBcXHRcXHR1bnNpZ25lZCB2cDEwayA9IERJVjY0X1U2NF9ST1VORF9DTE9TRVNUKFxcbkBAIC0zMTEwLDYgKzMxMTIsOCBAQCBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcXG4gXFx0XFx0XFx0aW9jZy1cXHUwMDNlbGFzdF9zdGF0LndhaXRfdXMsXFxuIFxcdFxcdFxcdGlvY2ctXFx1MDAzZWxhc3Rfc3RhdC5pbmRlYnRfdXMsXFxuIFxcdFxcdFxcdGlvY2ctXFx1MDAzZWxhc3Rfc3RhdC5pbmRlbGF5X3VzKTtcXG4rb3V0OlxcbitcXHRzcGluX3VubG9ja19pcnEoXFx1MDAyNmlvYy1cXHUwMDNlbG9jayk7XFxuIH1cXG4gXFxuIHN0YXRpYyB1NjQgaW9jX3dlaWdodF9wcmZpbGwoc3RydWN0IHNlcV9maWxlICpzZiwgc3RydWN0IGJsa2dfcG9saWN5X2RhdGEgKnBkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0Mjo0OS4yMTc0Mjg5MzJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2Mjc4ODE1Mjk1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQXCIsXG4gICAgXCJCTEtfQ0dST1VQX0lPQ09TVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvY19wZF9zdGF0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIHRvIGBpb2NfcGRfc3RhdGAgaW4gdGhlIGJsb2NrIElPIGNvc3QgY2dyb3VwIGNvbnRyb2xsZXIgdG8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gcmVhZGluZyBjZ3JvdXAgc3RhdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE0YzY3MzgzZDM3ZmZmYjg3NmMyMDhmMTE3ZjY2NGViODY3ODZmNmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDIwOjQyOjQ3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWlvY29zdC5jIGIvYmxvY2svYmxrLWlvY29zdC5jXG5pbmRleCA4YjJhZWJhMmUxZTM5Li5iNDkxYTZhYjk4ZWE2IDEwMDY0NFxuLS0tIGEvYmxvY2svYmxrLWlvY29zdC5jXG4rKysgYi9ibG9jay9ibGstaW9jb3N0LmNcbkBAIC0zMDkzLDggKzMwOTMsMTAgQEAgc3RhdGljIHZvaWQgaW9jX3BkX3N0YXQoc3RydWN0IGJsa2dfcG9saWN5X2RhdGEgKnBkLCBzdHJ1Y3Qgc2VxX2ZpbGUgKnMpXG4gXHRzdHJ1Y3QgaW9jX2dxICppb2NnID0gcGRfdG9faW9jZyhwZCk7XG4gXHRzdHJ1Y3QgaW9jICppb2MgPSBpb2NnLVx1MDAzZWlvYztcbiBcbitcdHNwaW5fbG9ja19pcnEoXHUwMDI2aW9jLVx1MDAzZWxvY2spO1xuK1xuIFx0aWYgKCFpb2MtXHUwMDNlZW5hYmxlZClcbi1cdFx0cmV0dXJuO1xuK1x0XHRnb3RvIG91dDtcbiBcbiBcdGlmIChpb2NnLVx1MDAzZWxldmVsID09IDApIHtcbiBcdFx0dW5zaWduZWQgdnAxMGsgPSBESVY2NF9VNjRfUk9VTkRfQ0xPU0VTVChcbkBAIC0zMTEwLDYgKzMxMTIsOCBAQCBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcbiBcdFx0XHRpb2NnLVx1MDAzZWxhc3Rfc3RhdC53YWl0X3VzLFxuIFx0XHRcdGlvY2ctXHUwMDNlbGFzdF9zdGF0LmluZGVidF91cyxcbiBcdFx0XHRpb2NnLVx1MDAzZWxhc3Rfc3RhdC5pbmRlbGF5X3VzKTtcbitvdXQ6XG4rXHRzcGluX3VubG9ja19pcnEoXHUwMDI2aW9jLVx1MDAzZWxvY2spO1xuIH1cbiBcbiBzdGF0aWMgdTY0IGlvY193ZWlnaHRfcHJmaWxsKHN0cnVjdCBzZXFfZmlsZSAqc2YsIHN0cnVjdCBibGtnX3BvbGljeV9kYXRhICpwZCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQyOjQ5LjIxNzQzMTMwMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODczMjI0MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCbG9jayBJTyBDb3N0IENvbnRyb2xsZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBjaGFuZ2VzIHRvIGBibG9jay9ibGstaW9jb3N0LmNgLiBSaWdodCBhd2F5LCBpdCBsb29rcyBsaWtlIHRoZXkncmUgd3JhcHBpbmcgdGhlIGJvZHkgb2YgYGlvY19wZF9zdGF0KClgIHdpdGggYHNwaW5fbG9ja19pcnEoXHUwMDI2aW9jLVx1MDAzZWxvY2spYCBhbmQgYHNwaW5fdW5sb2NrX2lycShcdTAwMjZpb2MtXHUwMDNlbG9jaylgLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIHByb3RlY3RpbmcgYWNjZXNzIHRvIHNvbWUgc2hhcmVkIGRhdGEgd2l0aGluIHRoYXQgZnVuY3Rpb24sIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlIGNncm91cCBibG9jayBJTyBjb250cm9sbGVyIHBvbGljeS5cblxuTGV0IG1lIHRha2UgYSBxdWljayBsb29rIGF0IGBpb2NfcGRfc3RhdCgpYCBpdHNlbGYgd2l0aGluIGBibG9jay9ibGstaW9jb3N0LmNgIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgc3RhdCBjYWxsYmFjayBpcyBkb2luZyBhbmQgd2hhdCBraW5kIG9mIGRhdGEgaXQncyBhY2Nlc3NpbmcgdG8gZnVsbHkgZ3Jhc3AgdGhlIG5lY2Vzc2l0eSBvZiB0aGUgc3BpbmxvY2suIEl0J3MgYWxtb3N0IGNlcnRhaW5seSB0byBtYWludGFpbiBkYXRhIGludGVncml0eSwgYnV0IEkgbmVlZCB0aGUgY29udGV4dCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSBzcGVjaWZpYyByYWNlIGNvbmRpdGlvbnMgdGhleSdyZSBhZGRyZXNzaW5nLiBJJ2xsIGZvY3VzIG9uIHdoYXQgZGF0YSBpcyBiZWluZyBhY2Nlc3NlZCBhbmQgbW9kaWZpZWQsIGFuZCBmcm9tIHdoZXJlLiBLbm93aW5nIHRoZSBkYXRhIHN0cnVjdHVyZSBgaW9jYCBpcyBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMjQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0Mjo1My41MDQ3NTgyMTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0NDc5NzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvY19wZF9zdGF0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL2Jsay1pb2Nvc3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstaW9jb3N0LmM9MzA2Mz1zdGF0aWMgdm9pZCBpb2NfcGRfZnJlZShzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQpXFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmMtMzA5MC1cXG5ibG9jay9ibGstaW9jb3N0LmM6MzA5MTpzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcXG5ibG9jay9ibGstaW9jb3N0LmMtMzA5Mi17XFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmM9MzU5Mz1zdGF0aWMgc3RydWN0IGJsa2NnX3BvbGljeSBibGtjZ19wb2xpY3lfaW9jb3N0ID0ge1xcbi0tXFxuYmxvY2svYmxrLWlvY29zdC5jLTM1OTktXFx0LnBkX2ZyZWVfZm5cXHQ9IGlvY19wZF9mcmVlLFxcbmJsb2NrL2Jsay1pb2Nvc3QuYzozNjAwOlxcdC5wZF9zdGF0X2ZuXFx0PSBpb2NfcGRfc3RhdCxcXG5ibG9jay9ibGstaW9jb3N0LmMtMzYwMS19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0Mjo1My43MDkyNDQxMTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDg1ODg5NTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgYGlvY19wZF9zdGF0YCAtIEEgV29ydGh3aGlsZSBFbmRlYXZvcj8qKlxuXG5Pa2F5LCBzbyBgaW9jX3BkX3N0YXRgIGlzIGJlaW5nIHVzZWQgd2l0aGluIGBibGtjZ19wb2xpY3lfaW9jb3N0YCBhcyBwYXJ0IG9mIHRoZSBjZ3JvdXAgc3RhdHMgcmVhZGluZyBwcm9jZXNzLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gaXQncyBwYXJ0IG9mIGEgZnVuY3Rpb24gYW5kIGxpa2VseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGxpa2UgYSBsb2NrLCBpcyB0byBjb25zaWRlciBmdXp6aW5nLiBUaGF0J3MgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgZW5zdXJpbmcgcm9idXN0bmVzcy5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gaXQncyAqanVzdCogcmVhZGluZyBzdGF0cywgaXNuJ3QgaXQ/IFBlcmhhcHMgdGhlIHJpc2sgaXMgbG93ZXIgdGhhbiBJIGluaXRpYWxseSB0aG91Z2h0LiBJIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhlIHBvdGVudGlhbCBpbXBhY3QuXG5cblJpZ2h0LCBiYWNrIHRvIGJhc2ljcy4gQ2FuIHRoaXMgZnVuY3Rpb24gZXZlbiBiZSByZWFjaGVkPyBMZXQncyB0cmFjZSBpdC4uLkFoIHllcywgaXQncyB0cmlnZ2VyZWQgd2hlbiByZWFkaW5nIGNncm91cCBzdGF0cy4gVGhhdCBtYWtlcyBpdCBhIHZpYWJsZSBmdXp6aW5nIHRhcmdldC5cblxuQWxyaWdodCwgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCdzIG1vZGlmaWVkIGlzIGBpb2NfcGRfc3RhdGAuIExldCBtZSBnbyBjaGVjayB0aGUgY29uZmlnIGZvciBgYmxrLWlvY29zdC5jYFxuXG5cbiIsIklucHV0VG9rZW5zIjoyODI4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQyOjU4LjE5NTEzNzM0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDkxNTUxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibGstaW9jb3N0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svTWFrZWZpbGU9MjQ9b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZKVxcdCs9IGJsay1pb2xhdGVuY3kub1xcbmJsb2NrL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19CTEtfQ0dST1VQX0lPQ09TVClcXHQrPSBibGstaW9jb3N0Lm9cXG5ibG9jay9NYWtlZmlsZS0yNi1vYmotJChDT05GSUdfTVFfSU9TQ0hFRF9ERUFETElORSlcXHQrPSBtcS1kZWFkbGluZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQyOjU4LjMzMDA2MjkzOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NTQ5NDY4MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgSS9PIENvc3QgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBDT05GSUdfQkxLX0NHUk9VUF9JT0NPU1RgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byBpdHMgZGVwZW5kZW5jaWVzLiBJdCdzIHBvaW50bGVzcyB0byBnbyBmdXJ0aGVyIHdpdGhvdXQga25vd2luZyBleGFjdGx5IHdoYXQgb3RoZXIgb3B0aW9ucyBvciBmZWF0dXJlcyB0aGlzIHRoaW5nIHJlbGllcyBvbiBvciBpbnRlcmFjdHMgd2l0aC4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSB0cmVlIGlzIGZ1bmRhbWVudGFsIGJlZm9yZSBJIGNhbiBldmVuIGJlZ2luIHRvIGFzc2VzcyBpdHMgaW1wbGljYXRpb25zIGZvciBJL08gc2NoZWR1bGluZywgcmVzb3VyY2UgaXNvbGF0aW9uLCBvciBwZXJmb3JtYW5jZS4gV2hhdCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyB3aWxsIHRoaXMgaW1wYWN0PyBXaGF0IG1vZHVsZXMgd2lsbCBiZSBpbnZvbHZlZD8gVGhpcyBpcyB3aGVyZSBJIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzA5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6NDM6MDEuMTg1MDE0MDYzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDU5MDcyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0NHUk9VUF9JT0NPU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9LY29uZmlnPTE0NT1jb25maWcgQkxLX0NHUk9VUF9GQ19BUFBJRFxcbi0tXFxuYmxvY2svS2NvbmZpZy0xNTMtXFxuYmxvY2svS2NvbmZpZzoxNTQ6Y29uZmlnIEJMS19DR1JPVVBfSU9DT1NUXFxuYmxvY2svS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIGNvc3QgbW9kZWwgYmFzZWQgY2dyb3VwIElPIGNvbnRyb2xsZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjAxLjMwNTYwOTk2MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MTIxOTg5ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBCTEtfQ0dST1VQX0lPQ09TVCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgQkxLX0NHUk9VUF9JT0NPU1RgLiBUaW1lIHRvIG1lbnRhbGx5IHRyYWNlIGl0cyBpbXBsaWNhdGlvbnMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZmVhdHVyZSAqZG9lcyouIEl0J3MgYWJvdXQgSS9PIGNvc3QgYWNjb3VudGluZyB3aXRoaW4gY2dyb3Vwcywgd2hpY2ggbWVhbnMgaXQncyBmdW5kYW1lbnRhbCB0byByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBpc29sYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGl0IHNsb3RzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGRlc2lnbi5cblxuSW1tZWRpYXRlbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgdmFyaW91cyBjb21wb25lbnRzIHRoYXQgd291bGQgKnJlbHkqIG9uIHRoaXMuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYW55dGhpbmcgaW52b2x2ZWQgaW4gSS9PIHNjaGVkdWxpbmcsIHRocm90dGxpbmcsIGFuZCBhY2NvdW50aW5nLiBUaGUgYmxvY2sgbGF5ZXIgaXMgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBtZW50YWxseSBtYXAgdGhlIGNhbGwgcGF0aHMuLi4gSXMgdGhpcyB0aWVkIGludG8gdGhlIGVsZXZhdG9yIGNvZGU/IFRoZSByZXF1ZXN0IHF1ZXVlIG1hbmFnZW1lbnQ/IEFyZSB3ZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBkaXNrIHNjaGVkdWxlciBhdCBtdWx0aXBsZSBsZXZlbHM/IEhvdyBkb2VzIHRoaXMgaW50ZWdyYXRlIHdpdGggdGhlIHVuZGVybHlpbmcgYmxvY2sgZGV2aWNlIGRyaXZlcnM/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgc3RvcmFnZSB0ZWNobm9sb2dpZXMgdGhhdCBhcmUgcGFydGljdWxhcmx5IHRhcmdldGVkIGJ5IHRoaXM/IFNvbGlkIHN0YXRlIGRyaXZlcz8gTlZNZT9cblxuVGhlbiwgdGhlIGNncm91cCBpbnRlZ3JhdGlvbiBpdHNlbGYuIFdoaWNoIGNncm91cCBzdWJzeXN0ZW1zIGRvZXMgdGhpcyBpbnRlcmFjdCB3aXRoPyBgYmxraW9gIG9mIGNvdXJzZS4gSXMgdGhlcmUgYW55IGxlYWthZ2Ugb2YgdGhpcyBpbmZvcm1hdGlvbiB0byBvdGhlciBzdWJzeXN0ZW1zLCBsaWtlIGBjcHVgIG9yIGBtZW1vcnlgLCBpbmRpcmVjdGx5IHZpYSB0aGUgSS9PIGNvc3QgbWV0cmljPyBJIHNob3VsZCBjaGVjayBhbmQgc2VlIGlmIHRoZXJlIGlzIGFueSBkZXBlbmRlbmN5IG9uIHRoZSBJL08gc2NoZWR1bGVycyBjaG9zZW4uIEFyZSB0aGVyZSBhbnkgcGFydGljdWxhciBpbXBsaWNhdGlvbnMgZm9yIHRoZSBjb250cm9sIGdyb3VwcyBoaWVyYXJjaHk/IERvZXMgdGhpcyByZWx5IG9uIGFueSBzcGVjaWZpYyBjZ3JvdXAgY29udHJvbGxlciBkYXRhIHN0cnVjdHVyZXMgb3IgQVBJcz9cblxuSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgdGhlIHVzZXJzcGFjZSBpbXBsaWNhdGlvbnMuIEhvdyBpcyB0aGlzIGV4cG9zZWQgdG8gdXNlcnMgdGhyb3VnaCB0aGUgYGJsa2lvYCBjZ3JvdXAgaW50ZXJmYWNlPyBXaGF0IHRvb2xzIG9yIHV0aWxpdGllcyAobGlrZSBgY2dzdGF0c2ApIG1pZ2h0IGRlcGVuZCBvbiB0aGlzIGluZm9ybWF0aW9uPyBXaGF0IGFib3V0IGRlYnVnZ2luZyBhbmQgdHJhY2luZz8gQXJlIHRoZXJlIGFueSB0cmFjZXBvaW50cyBvciBwZXJmIGV2ZW50cyB0aGF0IHJlbHkgb24gdGhpcyBmdW5jdGlvbmFsaXR5PyBIb3cgZG9lcyB0aGlzIGluZmx1ZW5jZSB0aGUgd2F5IHBlcmZvcm1hbmNlIGlzIG1lYXN1cmVkP1xuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gcHJvYmFibHkgY2hlY2sgb3V0IHRoZSBjb2RlIGl0c2VsZiwgYnV0IHRoaXMgaXMgdGhlIGdlbmVyYWwgbWVudGFsIG1hcCB0aGF0IEkgc2hvdWxkIHN0YXJ0IHdpdGguIEknbGwgbmVlZCB0byBsb29rIGZvciBgI2lmZGVmYCBibG9ja3MsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIG1heWJlIGV2ZW4gZGVwZW5kZW5jeSBncmFwaHMsIHRvIHNlZSBob3cgaXQgYWxsIGZpdHMgdG9nZXRoZXIuIFRoZSBnb2FsIGlzIHRvIGJ1aWxkIGEgc29saWQgbWVudGFsIG1vZGVsIG9mIHRoZSBmZWF0dXJlLCBpbmNsdWRpbmcgaXRzIHNjb3BlLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgaXRzIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIGFuZCB1c2Vyc3BhY2UgdG9vbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1OTcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0MzowNS43MTc4MTE0NDdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDkxOTcwNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19DR1JPVVBfSU9DT1NUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9LY29uZmlnPTE0NT1jb25maWcgQkxLX0NHUk9VUF9GQ19BUFBJRFxcbi0tXFxuYmxvY2svS2NvbmZpZy0xNTMtXFxuYmxvY2svS2NvbmZpZzoxNTQ6Y29uZmlnIEJMS19DR1JPVVBfSU9DT1NUXFxuYmxvY2svS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIGNvc3QgbW9kZWwgYmFzZWQgY2dyb3VwIElPIGNvbnRyb2xsZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjA5LjU2NzAxNTUyOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTUwMzY2MzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBEaXZlKipcblxuT2theSwgdGltZSB0byBnZXQgZG93biB0byBidXNpbmVzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgYmxvY2svS2NvbmZpZ2AgZmlsZSBhIGxpdHRsZSBiZXR0ZXIuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGp1bXAgdG8gYXJvdW5kIGxpbmUgMTU0IHRvIHNlZSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuIEknbSBob3BpbmcgdG8gcGlucG9pbnQgYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gc2V0dGluZyBvciBkZXBlbmRlbmN5IEknbSBpbnRlcmVzdGVkIGluIGFuZCB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciBibG9jayBzdWJzeXN0ZW0gY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgdGlkYml0cyB0aGF0IHNlY3Rpb24gaG9sZHMuIEl0IGNvdWxkIGJlIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBkcml2ZXIsIGEgcGVyZm9ybWFuY2UgZmVhdHVyZSwgb3IgcGVyaGFwcyBhIHNlY3VyaXR5IGFzcGVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIxMiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjEyLjUxNzM4NjAxMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYmxvY2svS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNDU6XFx0Y29uZmlnIEJMS19DR1JPVVBfRkNfQVBQSURcXG4gMTQ2OlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IHRvIHRyYWNrIEZDIEkvTyBUcmFmZmljIGFjcm9zcyBjZ3JvdXAgYXBwbGljYXRpb25zXFxcIlxcbiAxNDc6XFx0XFx0ZGVwZW5kcyBvbiBCTEtfQ0dST1VQIFxcdTAwMjZcXHUwMDI2IE5WTUVfRkNcXG4gMTQ4OlxcdFxcdGhlbHBcXG4gMTQ5OlxcdFxcdCAgRW5hYmxpbmcgdGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgc3VwcG9ydCB0byB0cmFjayBGQyBJL08gdHJhZmZpYyBhY3Jvc3NcXG4gMTUwOlxcdFxcdCAgY2dyb3VwIGFwcGxpY2F0aW9ucy4gSXQgZW5hYmxlcyB0aGUgRmFicmljIGFuZCB0aGUgc3RvcmFnZSB0YXJnZXRzIHRvXFxuIDE1MTpcXHRcXHQgIGlkZW50aWZ5LCBtb25pdG9yLCBhbmQgaGFuZGxlIEZDIHRyYWZmaWMgYmFzZWQgb24gVk0gdGFncyBieSBpbnNlcnRpbmdcXG4gMTUyOlxcdFxcdCAgYXBwbGljYXRpb24gc3BlY2lmaWMgaWRlbnRpZmljYXRpb24gaW50byB0aGUgRkMgZnJhbWUuXFxuIDE1MzpcXHRcXG4gMTU0OlxcdGNvbmZpZyBCTEtfQ0dST1VQX0lPQ09TVFxcbiAxNTU6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIGNvc3QgbW9kZWwgYmFzZWQgY2dyb3VwIElPIGNvbnRyb2xsZXJcXFwiXFxuIDE1NjpcXHRcXHRkZXBlbmRzIG9uIEJMS19DR1JPVVBcXG4gMTU3OlxcdFxcdHNlbGVjdCBCTEtfUlFfQUxMT0NfVElNRVxcbiAxNTg6XFx0XFx0aGVscFxcbiAxNTk6XFx0XFx0RW5hYmxpbmcgdGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgLndlaWdodCBpbnRlcmZhY2UgZm9yIGNvc3RcXG4gMTYwOlxcdFxcdG1vZGVsIGJhc2VkIHByb3BvcnRpb25hbCBJTyBjb250cm9sLiAgVGhlIElPIGNvbnRyb2xsZXJcXG4gMTYxOlxcdFxcdGRpc3RyaWJ1dGVzIElPIGNhcGFjaXR5IGJldHdlZW4gZGlmZmVyZW50IGdyb3VwcyBiYXNlZCBvblxcbiAxNjI6XFx0XFx0dGhlaXIgc2hhcmUgb2YgdGhlIG92ZXJhbGwgd2VpZ2h0IGRpc3RyaWJ1dGlvbi5cXG4gMTYzOlxcdFxcbiAxNjQ6XFx0Y29uZmlnIEJMS19DR1JPVVBfSU9QUklPXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjEyLjUxNzQ5MTcxMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDEzMjExMzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgQmxvY2sgSS9PIENvc3QgYW5kIGl0cyBEZXBlbmRlbmNpZXMqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYEJMS19DR1JPVVBfSU9DT1NUYC4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQsIG9idmlvdXNseSwgaXMgdGhhdCBpdCBoaW5nZXMgb24gYEJMS19DR1JPVVBgLiBObyBzdXJwcmlzZSB0aGVyZTsgSS9PIGNvc3RpbmcgaXMgYnVpbHQgb24gdGhlIGZvdW5kYXRpb24gb2YgY29udHJvbCBncm91cHMsIG9mIGNvdXJzZS4gTm93LCBiZWZvcmUgSSBkaXZlIGRlZXBlciBpbnRvIGBCTEtfQ0dST1VQX0lPQ09TVGAgaXRzZWxmLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUgb2YgYEJMS19DR1JPVVBgIGRlcGVuZGVuY2llcy4gV2hhdCBhcmUgdGhlIGtleSBjb21wb25lbnRzIGl0IHJlbGllcyBvbj8gV2hhdCBvdGhlciBmbGFncyBvciBzZXR0aW5ncyBhcmUgZW50YW5nbGVkIHdpdGggaXQ/IFRpbWUgdG8gcXVpY2tseSB0cmFjZSB0aG9zZSBkZXBlbmRlbmNpZXMgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBzdXJwcmlzZXMgZG93biB0aGUgbGluZS4gSSB3YW50IGEgY2xlYW4sIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGxhbmRzY2FwZSBiZWZvcmUgSSBnbyBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzI4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0MzoxNS41MzA3MDU3MjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjE0ODQ2NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19DR1JPVVAkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjE1LjcxNjg2MjgxM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTUwMjQ3MjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIG5haWwgZG93biB3aGVyZSBgY29uZmlnIEJMS19DR1JPVVBgIGxpdmVzIGluIHRoZSBrZXJuZWwncyBLY29uZmlnIHN5c3RlbS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IGl0J3MgbGlrZWx5IHJlbGF0ZWQgdG8gYmxvY2sgZGV2aWNlIG1hbmFnZW1lbnQuIFRoZXJlZm9yZSwgdGhlIGZpcnN0IGxvZ2ljYWwgcGxhY2UgdG8gY2hlY2sgaXMgcHJvYmFibHkgdGhlIGBibG9jay9LY29uZmlnYCBmaWxlLiBJJ2xsIG5lZWQgdG8gcnVuIGEgc2VhcmNoIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlIHRvIGJlIGNlcnRhaW4sIHRob3VnaC4gTGV0J3Mgc2VlIGlmIHRoYXQncyB3aGVyZSB0aGUgZGVmaW5pdGlvbiBpcyBoaWRpbmcuIFRpbWUgdG8gZmlyZSB1cCB0aGUgc2VhcmNoIHRvb2xzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5OTQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0MzoxOC42NjcxMTM1MDZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTM2OTIxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0NHUk9VUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL0tjb25maWc9Mzk9Y29uZmlnIEJMS19SUV9BTExPQ19USU1FXFxuLS1cXG5ibG9jay9LY29uZmlnLTQxLVxcbmJsb2NrL0tjb25maWc6NDI6Y29uZmlnIEJMS19DR1JPVVBfUldTVEFUXFxuYmxvY2svS2NvbmZpZy00My1cXHRib29sXFxuYmxvY2svS2NvbmZpZy00NC1cXG5ibG9jay9LY29uZmlnOjQ1OmNvbmZpZyBCTEtfQ0dST1VQX1BVTlRfQklPXFxuYmxvY2svS2NvbmZpZy00Ni1cXHRib29sXFxuLS1cXG5ibG9jay9LY29uZmlnPTEyNz1jb25maWcgQkxLX1dCVF9NUVxcbi0tXFxuYmxvY2svS2NvbmZpZy0xMzMtXFxuYmxvY2svS2NvbmZpZzoxMzQ6Y29uZmlnIEJMS19DR1JPVVBfSU9MQVRFTkNZXFxuYmxvY2svS2NvbmZpZy0xMzUtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIGxhdGVuY3kgYmFzZWQgY2dyb3VwIElPIHByb3RlY3Rpb25cXFwiXFxuLS1cXG5ibG9jay9LY29uZmlnLTE0NC1cXG5ibG9jay9LY29uZmlnOjE0NTpjb25maWcgQkxLX0NHUk9VUF9GQ19BUFBJRFxcbmJsb2NrL0tjb25maWctMTQ2LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IHRvIHRyYWNrIEZDIEkvTyBUcmFmZmljIGFjcm9zcyBjZ3JvdXAgYXBwbGljYXRpb25zXFxcIlxcbi0tXFxuYmxvY2svS2NvbmZpZy0xNTMtXFxuYmxvY2svS2NvbmZpZzoxNTQ6Y29uZmlnIEJMS19DR1JPVVBfSU9DT1NUXFxuYmxvY2svS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIGNvc3QgbW9kZWwgYmFzZWQgY2dyb3VwIElPIGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5ibG9jay9LY29uZmlnLTE2My1cXG5ibG9jay9LY29uZmlnOjE2NDpjb25maWcgQkxLX0NHUk9VUF9JT1BSSU9cXG5ibG9jay9LY29uZmlnLTE2NS1cXHRib29sIFxcXCJDZ3JvdXAgSS9PIGNvbnRyb2xsZXIgZm9yIGFzc2lnbmluZyBhbiBJL08gcHJpb3JpdHkgY2xhc3NcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjE4Ljc3ODQ4ODA1NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzQ4NzczMTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLY29uZmlnIEV4cGxvcmF0aW9uIEJlZ2lucyoqXG5cbkFscmlnaHQsIHRoZSBpbml0aWFsIGh1bmNoIHBvaW50cyB0b3dhcmRzIG5lZWRpbmcgYSBjb21wcmVoZW5zaXZlIHN3ZWVwLiBJJ20gZ29pbmcgdG8ga2ljayB0aGluZ3Mgb2ZmIGJ5IHNlYXJjaGluZyB3aXRoaW4gdGhlICplbnRpcmUqIEtjb25maWcgdHJlZS4gSSBrbm93IHRoZXJlIGFyZSBwb3RlbnRpYWxseSBodW5kcmVkcywgbWF5YmUgdGhvdXNhbmRzLCBvZiB0aGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIHNjYXR0ZXJlZCBhY3Jvc3MgdGhlIGNvZGViYXNlLCBidXQgSSBuZWVkIHRvIHN0YXJ0IGJyb2FkLiBUaGlzIGFsbC1lbmNvbXBhc3Npbmcgc2VhcmNoIGlzIHRoZSBuZWNlc3NhcnkgZmlyc3Qgc3RlcCB0byBnZXQgYSBsYXkgb2YgdGhlIGxhbmQsIHdpdGhvdXQgbWFraW5nIGFueSBhc3N1bXB0aW9ucyBhYm91dCB3aGVyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIG1pZ2h0IGJlIGRlZmluZWQgb3IgcmVmZXJlbmNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU1MCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjIxLjUyNzI2NDU0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTk4ODA0NjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTEtfQ0dST1VQJFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5pdC9LY29uZmlnPTEwOTk9Y29uZmlnIE1FTUNHX1YxXFxuLS1cXG5pbml0L0tjb25maWctMTExNS1cXG5pbml0L0tjb25maWc6MTExNjpjb25maWcgQkxLX0NHUk9VUFxcbmluaXQvS2NvbmZpZy0xMTE3LVxcdGJvb2wgXFxcIklPIGNvbnRyb2xsZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjI2LjEyNjA3NjExM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODE4NTkyMTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIHBhcnRpY3VsYXIgYXNwZWN0IG9mIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSdtIHRoaW5raW5nLCBgaW5pdC9LY29uZmlnYCBpcyB0aGUgcGxhY2UgdG8gc3RhcnQsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMTE2LiBUaGF0IGFyZWEgbGlrZWx5IGRlYWxzIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBhIHBhcnRpY3VsYXIgbW9kdWxlIEknbSBpbnRlcmVzdGVkIGluLiBJIHNob3VsZCBjaGVjayB0aGF0IHNlY3Rpb24gZm9yIHRoZSByZWxldmFudCBkZWZpbml0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUgd2hhdCBnZW1zIGxpZSBpbiB3YWl0IGluIHRoYXQgcG9ydGlvbiBvZiBgS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3ODUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0MzoyOC45NDQ2NzExOThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5MTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluaXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTEwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMTEwOlxcdFxcdCAgUGxlYXNlIG5vdGUgdGhhdCBmZWF0dXJlIHNldCBvZiB0aGUgbGVnYWN5IG1lbW9yeSBjb250cm9sbGVyIGlzIGxpa2VseVxcbjExMTE6XFx0XFx0ICBnb2luZyB0byBzaHJpbmsgZHVlIHRvIGRlcHJlY2F0aW9uIHByb2Nlc3MuIE5ldyBkZXBsb3ltZW50cyB3aXRoIHYxXFxuMTExMjpcXHRcXHQgIGNvbnRyb2xsZXIgYXJlIGhpZ2hseSBkaXNjb3VyYWdlZC5cXG4xMTEzOlxcdFxcbjExMTQ6XFx0XFx0ICBTYXkgTiBpZiB1bnN1cmUuXFxuMTExNTpcXHRcXG4xMTE2OlxcdGNvbmZpZyBCTEtfQ0dST1VQXFxuMTExNzpcXHRcXHRib29sIFxcXCJJTyBjb250cm9sbGVyXFxcIlxcbjExMTg6XFx0XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbjExMTk6XFx0XFx0ZGVmYXVsdCBuXFxuMTEyMDpcXHRcXHRoZWxwXFxuMTEyMTpcXHRcXHRHZW5lcmljIGJsb2NrIElPIGNvbnRyb2xsZXIgY2dyb3VwIGludGVyZmFjZS4gVGhpcyBpcyB0aGUgY29tbW9uXFxuMTEyMjpcXHRcXHRjZ3JvdXAgaW50ZXJmYWNlIHdoaWNoIHNob3VsZCBiZSB1c2VkIGJ5IHZhcmlvdXMgSU8gY29udHJvbGxpbmdcXG4xMTIzOlxcdFxcdHBvbGljaWVzLlxcbjExMjQ6XFx0XFxuMTEyNTpcXHRcXHRDdXJyZW50bHksIENGUSBJTyBzY2hlZHVsZXIgdXNlcyBpdCB0byByZWNvZ25pemUgdGFzayBncm91cHMgYW5kXFxuMTEyNjpcXHRcXHRjb250cm9sIGRpc2sgYmFuZHdpZHRoIGFsbG9jYXRpb24gKHByb3BvcnRpb25hbCB0aW1lIHNsaWNlIGFsbG9jYXRpb24pXFxuMTEyNzpcXHRcXHR0byBzdWNoIHRhc2sgZ3JvdXBzLiBJdCBpcyBhbHNvIHVzZWQgYnkgYmlvIHRocm90dGxpbmcgbG9naWMgaW5cXG4xMTI4OlxcdFxcdGJsb2NrIGxheWVyIHRvIGltcGxlbWVudCB1cHBlciBsaW1pdCBpbiBJTyByYXRlcyBvbiBhIGRldmljZS5cXG4xMTI5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0MzoyOC45NDQ4NTIwMjhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxNjk4NTE4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBCTEtfQ0dST1VQYCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggZGVhbGluZyB3aXRoIGBCTEtfQ0dST1VQYCBmdW5kYW1lbnRhbGx5IHJlbGllcyBvbiB0aGUgYEJMT0NLYCBjb25maWd1cmF0aW9uLCB0aGF0IG11Y2ggaXMgb2J2aW91cy4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggcmVxdWlyZXMgYEJMS19DR1JPVVBgIGFuZCBgQkxLX0NHUk9VUF9JT0NPU1RgIHRvIGJlIGVuYWJsZWQsIHdoaWNoIGlzbid0IHN1cnByaXNpbmcuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgYXBwZWFycyB0byBiZSBpbiBgaW9jX3BkX3N0YXQoKWAgd2hlcmUgYSBsb2NrIGlzIGFkZGVkLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNvbnNpZGVyIGZ1enppbmcgdGhpcyBjaGFuZ2UsIGFuZCB0aGUgZmFjdCB0aGF0IGl0IGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uLCBtYWtpbmcgaXQgYSBmdW5jdGlvbmFsIGNoYW5nZSwgY2VydGFpbmx5IHZhbGlkYXRlcyB0aGF0IGluc3RpbmN0LiBUaGUgb2J2aW91cyBmb2NhbCBzeW1ib2wgaXMgYGlvY19wZF9zdGF0YC5cblxuTm93LCBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgYGlvY19wZF9zdGF0YCBpcyBzdGF0aWMgb3Igbm90LiBBaCwgeWVzLCBpdCdzIGBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylgLiBXYWl0LCBpdCAqaXMqIGEgc3RhdGljIGZ1bmN0aW9uLi4uIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncy4gTm9ybWFsbHksIGEgc3RhdGljIGZ1bmN0aW9uIG1pZ2h0IGJlIGlubGluZWQsIG9yIG1pZ2h0IG5vdCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sLiBCdXQgaGFuZyBvbiwgaXQncyBhY3R1YWxseSB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlcjogYC5wZF9zdGF0X2ZuID0gaW9jX3BkX3N0YXQsYC4gVGhhdCdzIGEga2V5IGRldGFpbCEgQmVjYXVzZSBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbiwgaXQgKndvbid0KiBiZSBjb21wbGV0ZWx5IGlubGluZWQgYW5kIHNob3VsZCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sLCBldmVuIGlmIGl0J3Mgc3RhdGljLlxuXG5UaGUgYmlnZ2VyIGlzc3VlIGlzIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiB0YXJnZXQgaXQgZGlyZWN0bHkgaWYgaXQncyBzdGF0aWMuIFRoYXQncyB0aGUgcmVhbCBxdWVzdGlvbi4gSXMgdGhlcmUgYW4gZW50cnkgcG9pbnQ/IEFscmlnaHQsIGxldCBtZSB0cmFjZSB0aGlzLiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHZpYSBgcGRfc3RhdF9mbmAgZnJvbSBgYmxrY2dfcHJpbnRfc3RhdGAuIFJpZ2h0LCBzbyBgYmxrY2dfcHJpbnRfc3RhdGAgaXMgdGhlIGVudHJ5IHBvaW50LCBhbmQgdGhhdCBmdW5jdGlvbiB0aGVuIGNhbGxzIG91ciBgaW9jX3BkX3N0YXRgIHRocm91Z2ggdGhlIGZ1bmN0aW9uIHBvaW50ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNDUsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0MzozNC42NjE4NDAxNDdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzA0Nzg4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwZF9zdGF0X2ZuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstY2dyb3VwLmM9MTEyOT1zdGF0aWMgdm9pZCBibGtjZ19wcmludF9vbmVfc3RhdChzdHJ1Y3QgYmxrY2dfZ3EgKmJsa2csIHN0cnVjdCBzZXFfZmlsZSAqcylcXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMTcxLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYzoxMTcyOlxcdFxcdGlmICghYmxrZy1cXHUwMDNlcGRbaV0gfHwgIXBvbC1cXHUwMDNlcGRfc3RhdF9mbilcXG5ibG9jay9ibGstY2dyb3VwLmMtMTE3My1cXHRcXHRcXHRjb250aW51ZTtcXG5ibG9jay9ibGstY2dyb3VwLmMtMTE3NC1cXG5ibG9jay9ibGstY2dyb3VwLmM6MTE3NTpcXHRcXHRwb2wtXFx1MDAzZXBkX3N0YXRfZm4oYmxrZy1cXHUwMDNlcGRbaV0sIHMpO1xcbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMTc2LVxcdH1cXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuaD0xNzQ9c3RydWN0IGJsa2NnX3BvbGljeSB7XFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmgtMTg5LVxcdGJsa2NnX3BvbF9yZXNldF9wZF9zdGF0c19mblxcdCpwZF9yZXNldF9zdGF0c19mbjtcXG5ibG9jay9ibGstY2dyb3VwLmg6MTkwOlxcdGJsa2NnX3BvbF9zdGF0X3BkX2ZuXFx0XFx0KnBkX3N0YXRfZm47XFxuYmxvY2svYmxrLWNncm91cC5oLTE5MS19O1xcbi0tXFxuYmxvY2svYmxrLWlvY29zdC5jPTM1OTM9c3RhdGljIHN0cnVjdCBibGtjZ19wb2xpY3kgYmxrY2dfcG9saWN5X2lvY29zdCA9IHtcXG4tLVxcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNTk5LVxcdC5wZF9mcmVlX2ZuXFx0PSBpb2NfcGRfZnJlZSxcXG5ibG9jay9ibGstaW9jb3N0LmM6MzYwMDpcXHQucGRfc3RhdF9mblxcdD0gaW9jX3BkX3N0YXQsXFxuYmxvY2svYmxrLWlvY29zdC5jLTM2MDEtfTtcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYz0xMDU5PXN0YXRpYyBzdHJ1Y3QgYmxrY2dfcG9saWN5IGJsa2NnX3BvbGljeV9pb2xhdGVuY3kgPSB7XFxuLS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtMTA2NC1cXHQucGRfZnJlZV9mblxcdD0gaW9sYXRlbmN5X3BkX2ZyZWUsXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jOjEwNjU6XFx0LnBkX3N0YXRfZm5cXHQ9IGlvbGF0ZW5jeV9wZF9zdGF0LFxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDY2LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjM0LjgxODg5MzI4NVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDc0MzAxNDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBibGtjZ19wcmludF9vbmVfc3RhdGAqKlxuXG5SaWdodCwgYGJsa2NnX3ByaW50X29uZV9zdGF0YCBpcyBhIHN0YXRpYyBmdW5jdGlvbiBpbiB0aGUgYmxvY2sgSS9PIGNvbnRyb2xsZXIgY29kZS4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFN0YXRpYyBmdW5jdGlvbnMgbWVhbiB0aGV5J3JlIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlaXIgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggZ2VuZXJhbGx5IHN1Z2dlc3RzIGEgdGFyZ2V0ZWQgcHVycG9zZSBhbmQgbGltaXRlZCBzY29wZS4gSXQncyBhIGtleSBpbmRpY2F0b3IgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBmdW5jdGlvbidzIGV4YWN0IHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB3aG8ncyBhY3R1YWxseSAqdXNpbmcqIHRoaXMgdGhpbmcuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgaXMgYWJzb2x1dGVseSBjcnVjaWFsIHRvIGdyYXNwaW5nIGl0cyBmdW5jdGlvbiBhbmQgcG90ZW50aWFsIGltcGFjdC4gTGV0J3MgZGlnIGluIGFuZCB0cmFjayBkb3duIHRoZSBjYWxsZXJzLiBLbm93aW5nIHdobydzIHVzaW5nIGl0IHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGFjY29tcGxpc2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NjUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0MzozNy44OTMxOTkzNjdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjUwNTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJsa2NnX3ByaW50X29uZV9zdGF0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstY2dyb3VwLmM9MTA4OT1zdGF0aWMgdm9pZCBibGtjZ19maWxsX3Jvb3RfaW9zdGF0cyh2b2lkKVxcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jLTExMjgtXFxuYmxvY2svYmxrLWNncm91cC5jOjExMjk6c3RhdGljIHZvaWQgYmxrY2dfcHJpbnRfb25lX3N0YXQoc3RydWN0IGJsa2NnX2dxICpibGtnLCBzdHJ1Y3Qgc2VxX2ZpbGUgKnMpXFxuYmxvY2svYmxrLWNncm91cC5jLTExMzAte1xcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jPTExODE9c3RhdGljIGludCBibGtjZ19wcmludF9zdGF0KHN0cnVjdCBzZXFfZmlsZSAqc2YsIHZvaWQgKnYpXFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtMTE5Mi1cXHRobGlzdF9mb3JfZWFjaF9lbnRyeShibGtnLCBcXHUwMDI2YmxrY2ctXFx1MDAzZWJsa2dfbGlzdCwgYmxrY2dfbm9kZSlcXG5ibG9jay9ibGstY2dyb3VwLmM6MTE5MzpcXHRcXHRibGtjZ19wcmludF9vbmVfc3RhdChibGtnLCBzZik7XFxuYmxvY2svYmxrLWNncm91cC5jLTExOTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjM3Ljk3NDQ3MjQ5NloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc0MjQ2MDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYGJsa2NnX3ByaW50X3N0YXRgKipcblxuT2theSwgc28gYGJsa2NnX3ByaW50X3N0YXRgIGlzIGFsc28gc3RhdGljLiBSaWdodCwgdGhhdCdzIGEgY2x1ZS4gU3RhdGljIG1lYW5zIGl0J3MgbGltaXRlZCBpbiBzY29wZSwgbGlrZWx5IGludGVybmFsIHRvIGl0cyBjb21waWxhdGlvbiB1bml0LiBTbywgdGhlIGtleSBoZXJlIGlzIHRvIGZpbmQgdGhlIGNhbGxlcnMuIEl0J3MgY29uZmluZWQsIHdoaWNoIG1lYW5zIHRoZSBudW1iZXIgb2YgY2FsbCBzaXRlcyBpcyBwcm9iYWJseSBwcmV0dHkgc21hbGwgYW5kIG1hbmFnZWFibGUuIFRpbWUgdG8gZmlyZSB1cCB0aGUgdG9vbHMgYW5kIHF1aWNrbHkgdHJhY2UgdGhvc2UgZGVwZW5kZW5jaWVzLiBJJ20gZ3Vlc3NpbmcgaXQncyBwYXJ0IG9mIHRoZSBibG9jayBJTyBhY2NvdW50aW5nIG9yIGRlYnVnZ2luZyBpbmZyYXN0cnVjdHVyZSwgYnV0IGZpbmRpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBjb25maXJtIHRoYXQgYW5kIGdpdmUgbWUgdGhlIGZ1bGwgcGljdHVyZS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NDEsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0Mzo0MC44NDg3MjIxM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1MTU5MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJsa2NnX3ByaW50X3N0YXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL2Jsay1jZ3JvdXAuYz0xMDcwPXN0YXRpYyB2b2lkIGJsa2NnX3JzdGF0X2ZsdXNoKHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpjc3MsIGludCBjcHUpXFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtMTA4MC0gKiBjZ3JvdXBzIGFyZSBkZWZpbmVkLiBGb3IgdGhhdCByZWFzb24sIGNzc19yc3RhdF9mbHVzaCBpblxcbmJsb2NrL2Jsay1jZ3JvdXAuYzoxMDgxOiAqIGJsa2NnX3ByaW50X3N0YXQgZG9lcyBub3QgYWN0dWFsbHkgZmlsbCBvdXQgdGhlIGlvc3RhdCBpbiB0aGUgcm9vdFxcbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMDgyLSAqIGNncm91cCdzIGJsa2NnX2dxLlxcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jPTExMjk9c3RhdGljIHZvaWQgYmxrY2dfcHJpbnRfb25lX3N0YXQoc3RydWN0IGJsa2NnX2dxICpibGtnLCBzdHJ1Y3Qgc2VxX2ZpbGUgKnMpXFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtMTE4MC1cXG5ibG9jay9ibGstY2dyb3VwLmM6MTE4MTpzdGF0aWMgaW50IGJsa2NnX3ByaW50X3N0YXQoc3RydWN0IHNlcV9maWxlICpzZiwgdm9pZCAqdilcXG5ibG9jay9ibGstY2dyb3VwLmMtMTE4Mi17XFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmM9MTE5OD1zdGF0aWMgc3RydWN0IGNmdHlwZSBibGtjZ19maWxlc1tdID0ge1xcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jLTEyMDAtXFx0XFx0Lm5hbWUgPSBcXFwic3RhdFxcXCIsXFxuYmxvY2svYmxrLWNncm91cC5jOjEyMDE6XFx0XFx0LnNlcV9zaG93ID0gYmxrY2dfcHJpbnRfc3RhdCxcXG5ibG9jay9ibGstY2dyb3VwLmMtMTIwMi1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0Mzo0MS4wMjM4ODY4NThaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ3NjkwMDk5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJsb2NrIEkvTyBDb3N0IFN0YXRpc3RpY3MgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgYmxrY2dfZmlsZXNgIHN0dWZmLCB3aGljaCBpcyByZWdpc3RlcmVkIHdpdGggdGhlIGNncm91cCBzdWJzeXN0ZW0uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBlbnRyeSBwb2ludCBmb3IgdGhpcyBpcyBsaWtlbHkgcmVhZGluZyB0aGUgYHN0YXRgIGZpbGUgYXNzb2NpYXRlZCB3aXRoIGEgYmxvY2sgY2dyb3VwLiBJJ3ZlIHBpbnBvaW50ZWQgYGlvY19wZF9zdGF0YCBhcyBhIGtleSBmdW5jdGlvbiBoZXJlLiBUaGUgZmFjdCB0aGF0IGl0J3MgYWRkcmVzcy10YWtlbiBhbmQgdXNlZCBhcyBhIGNhbGxiYWNrIGlzIGNydWNpYWw7IHRoYXQgbWVhbnMgaXQgd29uJ3QgYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIHdpbGwgaGF2ZSBpdHMgb3duIGRpc3RpbmN0IHN5bWJvbC5cblxuSSBoYWQgY29uc2lkZXJlZCBgYmxrY2dfcHJpbnRfc3RhdGAgYXMgYW4gYWx0ZXJuYXRpdmUgZm9jdXMsIGJ1dCBzaW5jZSB0aGUgcHJvbXB0IGVtcGhhc2l6ZXMgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLCBgaW9jX3BkX3N0YXRgIGlzIGFjdHVhbGx5IHdoYXQgSSdtIGxvb2tpbmcgZm9yIC0gZXZlbiB0aG91Z2ggaXQncyBzdGF0aWMgYW5kIGFkZHJlc3MgdGFrZW4sIGl0IGlzbid0IGlubGluZWQsIGFuZCBpdCdzIGFsc28gdGhlIHNwZWNpZmljIGZ1bmN0aW9uIHRoYXQgd2FzIG1vZGlmaWVkLiBTbywgYGlvY19wZF9zdGF0YCBpcyB0aGUgcmlnaHQgY2hvaWNlLlxuXG5Ob3csIGJlZm9yZSBJIHByb2NlZWQsIEkgbmVlZCB0byBjaGVjayBmb3IgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIFRoZSBwcm9tcHQgbWVudGlvbmVkIGBCTEtfQ0dST1VQX0lPQ09TVGAsIHdoaWNoIGRlcGVuZHMgb24gYEJMS19DR1JPVVBgLCBhbmQgYEJMS19DR1JPVVBgIGluIHR1cm4gZGVwZW5kcyBvbiBgQkxPQ0tgLiBUaHVzLCBib3RoIGBCTEtfQ0dST1VQX0lPQ09TVGAgYW5kIGBCTEtfQ0dST1VQYCB3aWxsIGJlIG5lY2Vzc2FyeSBmb3IgdGhpcyB0byB3b3JrLiBJIHNob3VsZCBkb2N1bWVudCB0aG9zZSBpbiBjYXNlIEkgbmVlZCB0byBtb2RpZnkgYW55dGhpbmcuXG5cbkZpbmFsbHksIGp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYGlvY19wZF9zdGF0YCBpcyBpbmRlZWQgdGhlICpvbmx5KiBmdW5jdGlvbiB0aGF0IHdhcyBtb2RpZmllZCBpbiB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTAyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjQ2LjUwMDc5MTY1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI5OTkxNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9jX3BkX3N0YXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svYmxrLWlvY29zdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL2Jsay1pb2Nvc3QuYz0zMDYzPXN0YXRpYyB2b2lkIGlvY19wZF9mcmVlKHN0cnVjdCBibGtnX3BvbGljeV9kYXRhICpwZClcXG4tLVxcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zMDkwLVxcbmJsb2NrL2Jsay1pb2Nvc3QuYzozMDkxOnN0YXRpYyB2b2lkIGlvY19wZF9zdGF0KHN0cnVjdCBibGtnX3BvbGljeV9kYXRhICpwZCwgc3RydWN0IHNlcV9maWxlICpzKVxcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zMDkyLXtcXG4tLVxcbmJsb2NrL2Jsay1pb2Nvc3QuYz0zNTkzPXN0YXRpYyBzdHJ1Y3QgYmxrY2dfcG9saWN5IGJsa2NnX3BvbGljeV9pb2Nvc3QgPSB7XFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmMtMzU5OS1cXHQucGRfZnJlZV9mblxcdD0gaW9jX3BkX2ZyZWUsXFxuYmxvY2svYmxrLWlvY29zdC5jOjM2MDA6XFx0LnBkX3N0YXRfZm5cXHQ9IGlvY19wZF9zdGF0LFxcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNjAxLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjQ2LjY0Mzc5NjgzOFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTMzMTYzMTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBpb2NfcGRfc3RhdGAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoLCBhbmQgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUga2V5IG1vZGlmaWNhdGlvbiBpcyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgaW9jX3BkX3N0YXRgIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgb25seSB0aGluZyBhZmZlY3RlZCBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc2NlcnRhaW4gcmVhY2hhYmlsaXR5IGluIGEgY29tbW9uIHZpcnR1YWxpemVkIHNldHRpbmcsIGFuZCB5ZXMsIGl0IHNlZW1zIFFFTVUgcHJvdmlkZXMgYm90aCBjZ3JvdXBzIGFuZCBibG9jayBkZXZpY2UgYWNjZXNzLiBJIGNhbiBzZWUgdGhpcyBiZWluZyB0cmlnZ2VyZWQgYXMgZGVzY3JpYmVkLlxuXG5UaGUgbmV4dCBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHBhdGNoIGFjdHVhbGx5ICpkbyogYW55dGhpbmcgdXNlZnVsPyBTZWVtcyBsaWtlIGl0IGRvZXMhIEl0J3MgaW1wbGVtZW50aW5nIGEgc3BpbmxvY2ssIHdoaWNoIGluZGljYXRlcyBpdCdzIGFkZHJlc3NpbmcgYSBnZW51aW5lIHJhY2UgY29uZGl0aW9uLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byByZWFkaW5nIGNncm91cCBzdGF0aXN0aWNzLiBTbywgaXQncyBhZGRpbmcgYSBsb2NraW5nIG1lY2hhbmlzbSwgd2hpY2ggdGVsbHMgbWUgdGhpcyBpcyBhZGRyZXNzaW5nIGEgY29uY3VycmVuY3kgaXNzdWUuXG5cbkFscmlnaHQsIGxldCdzIHByZXBhcmUgdGhlIGZ1enppbmcgaW5mb3JtYXRpb24uIEJhc2VkIG9uIG15IGFuYWx5c2lzLCB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBUaGUgcHJpbWFyeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGBpb2NfcGRfc3RhdGAgc3ltYm9sLCBzbyBJJ2xsIG1ha2Ugc3VyZSBpdCdzIGluIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LiBJJ2xsIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGNvbmZpZ3VyYXRpb25zLiBCb3RoIGBCTEtfQ0dST1VQYCBhbmQgYEJMS19DR1JPVVBfSU9DT1NUYCBhcmUgY3J1Y2lhbCBmb3IgdGhpcywgc2luY2UgaXQncyB0aGUgY2dyb3VwIGJsb2NrIElPIGNvc3QgY29udHJvbGxlciB0aGF0J3MgcmVsZXZhbnQuXG5cbk15IHJlYXNvbmluZyBpcyBzb2xpZDogdGhlIHBhdGNoIGludHJvZHVjZXMgYSBzcGlubG9jayB0byBgaW9jX3BkX3N0YXRgIHdpdGhpbiB0aGUgYmxvY2sgSU8gY29zdCBjZ3JvdXAgY29udHJvbGxlciwgZWZmZWN0aXZlbHkgcHJldmVudGluZyBhIHJhY2UgY29uZGl0aW9uIHdoZW4gYWNjZXNzaW5nIGNncm91cCBzdGF0aXN0aWNzLiBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQsIGNydWNpYWxseSwgaXMgcmVhY2hhYmxlIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGNoZWNrcyBhbGwgbXkgYm94ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0MTMsIk91dHB1dFRva2VucyI6MTA2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjUxLjc3Njk2Mjg3NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODYxNDc2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0NHUk9VUFwiLFxuICAgIFwiQkxLX0NHUk9VUF9JT0NPU1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpb2NfcGRfc3RhdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzcGlubG9jayB0byBgaW9jX3BkX3N0YXRgIGluIHRoZSBibG9jayBJTyBjb3N0IGNncm91cCBjb250cm9sbGVyIHRvIHByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiB3aGVuIHJlYWRpbmcgY2dyb3VwIHN0YXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19DR1JPVVBcIixcbiAgICBcIkJMS19DR1JPVVBfSU9DT1NUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW9jX3BkX3N0YXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc3BpbmxvY2sgdG8gYGlvY19wZF9zdGF0YCBpbiB0aGUgYmxvY2sgSU8gY29zdCBjZ3JvdXAgY29udHJvbGxlciB0byBwcmV2ZW50IGEgcmFjZSBjb25kaXRpb24gd2hlbiByZWFkaW5nIGNncm91cCBzdGF0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmzlnv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 20:21:38 +0000 UTC FinishedAt: 2026-08-02 20:43:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_CGROUP", "BLK_CGROUP_IOCOST" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_CGROUP", "BLK_CGROUP_IOCOST" ], "series_id": "2c5e54d8-5a0b-45fa-bb17-6893c9d5875e" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ioc_pd_stat" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19DR1JPVVAmIzM0OywKICAgICYjMzQ7QkxLX0NHUk9VUF9JT0NPU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpb2NfcGRfc3RhdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc3BpbmxvY2sgdG8gYGlvY19wZF9zdGF0YCBpbiB0aGUgYmxvY2sgSU8gY29zdCBjZ3JvdXAgY29udHJvbGxlciB0byBwcmV2ZW50IGEgcmFjZSBjb25kaXRpb24gd2hlbiByZWFkaW5nIGNncm91cCBzdGF0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDE0YzY3MzgzZDM3ZmZmYjg3NmMyMDhmMTE3ZjY2NGViODY3ODZmNmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDIwOjQyOjQ3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1pb2Nvc3QuYyBiL2Jsb2NrL2Jsay1pb2Nvc3QuY1xuaW5kZXggOGIyYWViYTJlMWUzOS4uYjQ5MWE2YWI5OGVhNiAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1pb2Nvc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLWlvY29zdC5jXG5AQCAtMzA5Myw4ICYjNDM7MzA5MywxMCBAQCBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcbiBcdHN0cnVjdCBpb2NfZ3EgKmlvY2cgPSBwZF90b19pb2NnKHBkKTtcbiBcdHN0cnVjdCBpb2MgKmlvYyA9IGlvY2ctXHUwMDNlaW9jO1xuIFxuJiM0MztcdHNwaW5fbG9ja19pcnEoXHUwMDI2aW9jLVx1MDAzZWxvY2spO1xuJiM0MztcbiBcdGlmICghaW9jLVx1MDAzZWVuYWJsZWQpXG4tXHRcdHJldHVybjtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuIFxuIFx0aWYgKGlvY2ctXHUwMDNlbGV2ZWwgPT0gMCkge1xuIFx0XHR1bnNpZ25lZCB2cDEwayA9IERJVjY0X1U2NF9ST1VORF9DTE9TRVNUKFxuQEAgLTMxMTAsNiAmIzQzOzMxMTIsOCBAQCBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcbiBcdFx0XHRpb2NnLVx1MDAzZWxhc3Rfc3RhdC53YWl0X3VzLFxuIFx0XHRcdGlvY2ctXHUwMDNlbGFzdF9zdGF0LmluZGVidF91cyxcbiBcdFx0XHRpb2NnLVx1MDAzZWxhc3Rfc3RhdC5pbmRlbGF5X3VzKTtcbiYjNDM7b3V0OlxuJiM0MztcdHNwaW5fdW5sb2NrX2lycShcdTAwMjZpb2MtXHUwMDNlbG9jayk7XG4gfVxuIFxuIHN0YXRpYyB1NjQgaW9jX3dlaWdodF9wcmZpbGwoc3RydWN0IHNlcV9maWxlICpzZiwgc3RydWN0IGJsa2dfcG9saWN5X2RhdGEgKnBkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfQ0dST1VQJiMzNDssCiAgICAmIzM0O0JMS19DR1JPVVBfSU9DT1NUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9jX3BkX3N0YXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIHRvIGBpb2NfcGRfc3RhdGAgaW4gdGhlIGJsb2NrIElPIGNvc3QgY2dyb3VwIGNvbnRyb2xsZXIgdG8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gcmVhZGluZyBjZ3JvdXAgc3RhdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxNGM2NzM4M2QzN2ZmZmI4NzZjMjA4ZjExN2Y2NjRlYjg2Nzg2ZjZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAyMDo0Mjo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1pb2Nvc3QuYyBiL2Jsb2NrL2Jsay1pb2Nvc3QuYwppbmRleCA4YjJhZWJhMmUxZTM5Li5iNDkxYTZhYjk4ZWE2IDEwMDY0NAotLS0gYS9ibG9jay9ibGstaW9jb3N0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLWlvY29zdC5jCkBAIC0zMDkzLDggJiM0MzszMDkzLDEwIEBAIHN0YXRpYyB2b2lkIGlvY19wZF9zdGF0KHN0cnVjdCBibGtnX3BvbGljeV9kYXRhICpwZCwgc3RydWN0IHNlcV9maWxlICpzKQogCXN0cnVjdCBpb2NfZ3EgKmlvY2cgPSBwZF90b19pb2NnKHBkKTsKIAlzdHJ1Y3QgaW9jICppb2MgPSBpb2NnLSZndDtpb2M7CiAKJiM0MzsJc3Bpbl9sb2NrX2lycSgmYW1wO2lvYy0mZ3Q7bG9jayk7CiYjNDM7CiAJaWYgKCFpb2MtJmd0O2VuYWJsZWQpCi0JCXJldHVybjsKJiM0MzsJCWdvdG8gb3V0OwogCiAJaWYgKGlvY2ctJmd0O2xldmVsID09IDApIHsKIAkJdW5zaWduZWQgdnAxMGsgPSBESVY2NF9VNjRfUk9VTkRfQ0xPU0VTVCgKQEAgLTMxMTAsNiAmIzQzOzMxMTIsOCBAQCBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcykKIAkJCWlvY2ctJmd0O2xhc3Rfc3RhdC53YWl0X3VzLAogCQkJaW9jZy0mZ3Q7bGFzdF9zdGF0LmluZGVidF91cywKIAkJCWlvY2ctJmd0O2xhc3Rfc3RhdC5pbmRlbGF5X3VzKTsKJiM0MztvdXQ6CiYjNDM7CXNwaW5fdW5sb2NrX2lycSgmYW1wO2lvYy0mZ3Q7bG9jayk7CiB9CiAKIHN0YXRpYyB1NjQgaW9jX3dlaWdodF9wcmZpbGwoc3RydWN0IHNlcV9maWxlICpzZiwgc3RydWN0IGJsa2dfcG9saWN5X2RhdGEgKnBkLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjI0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQmxvY2sgSU8gQ29zdCBDb250cm9sbGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBtYWtpbmcgY2hhbmdlcyB0byBgYmxvY2svYmxrLWlvY29zdC5jYC4gUmlnaHQgYXdheSwgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSB3cmFwcGluZyB0aGUgYm9keSBvZiBgaW9jX3BkX3N0YXQoKWAgd2l0aCBgc3Bpbl9sb2NrX2lycSgmYW1wO2lvYy0mZ3Q7bG9jaylgIGFuZCBgc3Bpbl91bmxvY2tfaXJxKCZhbXA7aW9jLSZndDtsb2NrKWAuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gcHJvdGVjdGluZyBhY2Nlc3MgdG8gc29tZSBzaGFyZWQgZGF0YSB3aXRoaW4gdGhhdCBmdW5jdGlvbiwgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgY2dyb3VwIGJsb2NrIElPIGNvbnRyb2xsZXIgcG9saWN5LgoKTGV0IG1lIHRha2UgYSBxdWljayBsb29rIGF0IGBpb2NfcGRfc3RhdCgpYCBpdHNlbGYgd2l0aGluIGBibG9jay9ibGstaW9jb3N0LmNgIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHN0YXQgY2FsbGJhY2sgaXMgZG9pbmcgYW5kIHdoYXQga2luZCBvZiBkYXRhIGl0JiMzOTtzIGFjY2Vzc2luZyB0byBmdWxseSBncmFzcCB0aGUgbmVjZXNzaXR5IG9mIHRoZSBzcGlubG9jay4gSXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSB0byBtYWludGFpbiBkYXRhIGludGVncml0eSwgYnV0IEkgbmVlZCB0aGUgY29udGV4dCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSBzcGVjaWZpYyByYWNlIGNvbmRpdGlvbnMgdGhleSYjMzk7cmUgYWRkcmVzc2luZy4gSSYjMzk7bGwgZm9jdXMgb24gd2hhdCBkYXRhIGlzIGJlaW5nIGFjY2Vzc2VkIGFuZCBtb2RpZmllZCwgYW5kIGZyb20gd2hlcmUuIEtub3dpbmcgdGhlIGRhdGEgc3RydWN0dXJlIGBpb2NgIGlzIGtleS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb2NfcGRfc3RhdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL2Jsay1pb2Nvc3QuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9ibGstaW9jb3N0LmM9MzA2Mz1zdGF0aWMgdm9pZCBpb2NfcGRfZnJlZShzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQpXG4tLVxuYmxvY2svYmxrLWlvY29zdC5jLTMwOTAtXG5ibG9jay9ibGstaW9jb3N0LmM6MzA5MTpzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zMDkyLXtcbi0tXG5ibG9jay9ibGstaW9jb3N0LmM9MzU5Mz1zdGF0aWMgc3RydWN0IGJsa2NnX3BvbGljeSBibGtjZ19wb2xpY3lfaW9jb3N0ID0ge1xuLS1cbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNTk5LVx0LnBkX2ZyZWVfZm5cdD0gaW9jX3BkX2ZyZWUsXG5ibG9jay9ibGstaW9jb3N0LmM6MzYwMDpcdC5wZF9zdGF0X2ZuXHQ9IGlvY19wZF9zdGF0LFxuYmxvY2svYmxrLWlvY29zdC5jLTM2MDEtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODI4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgYGlvY19wZF9zdGF0YCAtIEEgV29ydGh3aGlsZSBFbmRlYXZvcj8qKgoKT2theSwgc28gYGlvY19wZF9zdGF0YCBpcyBiZWluZyB1c2VkIHdpdGhpbiBgYmxrY2dfcG9saWN5X2lvY29zdGAgYXMgcGFydCBvZiB0aGUgY2dyb3VwIHN0YXRzIHJlYWRpbmcgcHJvY2Vzcy4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIGl0JiMzOTtzIHBhcnQgb2YgYSBmdW5jdGlvbiBhbmQgbGlrZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgbGlrZSBhIGxvY2ssIGlzIHRvIGNvbnNpZGVyIGZ1enppbmcuIFRoYXQmIzM5O3MgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgZW5zdXJpbmcgcm9idXN0bmVzcy4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIGl0JiMzOTtzICpqdXN0KiByZWFkaW5nIHN0YXRzLCBpc24mIzM5O3QgaXQ/IFBlcmhhcHMgdGhlIHJpc2sgaXMgbG93ZXIgdGhhbiBJIGluaXRpYWxseSB0aG91Z2h0LiBJIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhlIHBvdGVudGlhbCBpbXBhY3QuCgpSaWdodCwgYmFjayB0byBiYXNpY3MuIENhbiB0aGlzIGZ1bmN0aW9uIGV2ZW4gYmUgcmVhY2hlZD8gTGV0JiMzOTtzIHRyYWNlIGl0Li4uQWggeWVzLCBpdCYjMzk7cyB0cmlnZ2VyZWQgd2hlbiByZWFkaW5nIGNncm91cCBzdGF0cy4gVGhhdCBtYWtlcyBpdCBhIHZpYWJsZSBmdXp6aW5nIHRhcmdldC4KCkFscmlnaHQsIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgbW9kaWZpZWQgaXMgYGlvY19wZF9zdGF0YC4gTGV0IG1lIGdvIGNoZWNrIHRoZSBjb25maWcgZm9yIGBibGstaW9jb3N0LmNgCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrLWlvY29zdC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svTWFrZWZpbGU9MjQ9b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZKVx0JiM0Mzs9IGJsay1pb2xhdGVuY3kub1xuYmxvY2svTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUKVx0JiM0Mzs9IGJsay1pb2Nvc3Qub1xuYmxvY2svTWFrZWZpbGUtMjYtb2JqLSQoQ09ORklHX01RX0lPU0NIRURfREVBRExJTkUpXHQmIzQzOz0gbXEtZGVhZGxpbmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEkvTyBDb3N0IENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBDT05GSUdfQkxLX0NHUk9VUF9JT0NPU1RgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byBpdHMgZGVwZW5kZW5jaWVzLiBJdCYjMzk7cyBwb2ludGxlc3MgdG8gZ28gZnVydGhlciB3aXRob3V0IGtub3dpbmcgZXhhY3RseSB3aGF0IG90aGVyIG9wdGlvbnMgb3IgZmVhdHVyZXMgdGhpcyB0aGluZyByZWxpZXMgb24gb3IgaW50ZXJhY3RzIHdpdGguIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY3kgdHJlZSBpcyBmdW5kYW1lbnRhbCBiZWZvcmUgSSBjYW4gZXZlbiBiZWdpbiB0byBhc3Nlc3MgaXRzIGltcGxpY2F0aW9ucyBmb3IgSS9PIHNjaGVkdWxpbmcsIHJlc291cmNlIGlzb2xhdGlvbiwgb3IgcGVyZm9ybWFuY2UuIFdoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMgd2lsbCB0aGlzIGltcGFjdD8gV2hhdCBtb2R1bGVzIHdpbGwgYmUgaW52b2x2ZWQ/IFRoaXMgaXMgd2hlcmUgSSBzdGFydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0NHUk9VUF9JT0NPU1QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL0tjb25maWc9MTQ1PWNvbmZpZyBCTEtfQ0dST1VQX0ZDX0FQUElEXG4tLVxuYmxvY2svS2NvbmZpZy0xNTMtXG5ibG9jay9LY29uZmlnOjE1NDpjb25maWcgQkxLX0NHUk9VUF9JT0NPU1RcbmJsb2NrL0tjb25maWctMTU1LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgY29zdCBtb2RlbCBiYXNlZCBjZ3JvdXAgSU8gY29udHJvbGxlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgQkxLX0NHUk9VUF9JT0NPU1QgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgQkxLX0NHUk9VUF9JT0NPU1RgLiBUaW1lIHRvIG1lbnRhbGx5IHRyYWNlIGl0cyBpbXBsaWNhdGlvbnMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZmVhdHVyZSAqZG9lcyouIEl0JiMzOTtzIGFib3V0IEkvTyBjb3N0IGFjY291bnRpbmcgd2l0aGluIGNncm91cHMsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGZ1bmRhbWVudGFsIHRvIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGlzb2xhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgaXQgc2xvdHMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgZGVzaWduLgoKSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHZhcmlvdXMgY29tcG9uZW50cyB0aGF0IHdvdWxkICpyZWx5KiBvbiB0aGlzLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhbnl0aGluZyBpbnZvbHZlZCBpbiBJL08gc2NoZWR1bGluZywgdGhyb3R0bGluZywgYW5kIGFjY291bnRpbmcuIFRoZSBibG9jayBsYXllciBpcyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIG1lbnRhbGx5IG1hcCB0aGUgY2FsbCBwYXRocy4uLiBJcyB0aGlzIHRpZWQgaW50byB0aGUgZWxldmF0b3IgY29kZT8gVGhlIHJlcXVlc3QgcXVldWUgbWFuYWdlbWVudD8gQXJlIHdlIGludGVyYWN0aW5nIHdpdGggdGhlIGRpc2sgc2NoZWR1bGVyIGF0IG11bHRpcGxlIGxldmVscz8gSG93IGRvZXMgdGhpcyBpbnRlZ3JhdGUgd2l0aCB0aGUgdW5kZXJseWluZyBibG9jayBkZXZpY2UgZHJpdmVycz8gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBzdG9yYWdlIHRlY2hub2xvZ2llcyB0aGF0IGFyZSBwYXJ0aWN1bGFybHkgdGFyZ2V0ZWQgYnkgdGhpcz8gU29saWQgc3RhdGUgZHJpdmVzPyBOVk1lPwoKVGhlbiwgdGhlIGNncm91cCBpbnRlZ3JhdGlvbiBpdHNlbGYuIFdoaWNoIGNncm91cCBzdWJzeXN0ZW1zIGRvZXMgdGhpcyBpbnRlcmFjdCB3aXRoPyBgYmxraW9gIG9mIGNvdXJzZS4gSXMgdGhlcmUgYW55IGxlYWthZ2Ugb2YgdGhpcyBpbmZvcm1hdGlvbiB0byBvdGhlciBzdWJzeXN0ZW1zLCBsaWtlIGBjcHVgIG9yIGBtZW1vcnlgLCBpbmRpcmVjdGx5IHZpYSB0aGUgSS9PIGNvc3QgbWV0cmljPyBJIHNob3VsZCBjaGVjayBhbmQgc2VlIGlmIHRoZXJlIGlzIGFueSBkZXBlbmRlbmN5IG9uIHRoZSBJL08gc2NoZWR1bGVycyBjaG9zZW4uIEFyZSB0aGVyZSBhbnkgcGFydGljdWxhciBpbXBsaWNhdGlvbnMgZm9yIHRoZSBjb250cm9sIGdyb3VwcyBoaWVyYXJjaHk/IERvZXMgdGhpcyByZWx5IG9uIGFueSBzcGVjaWZpYyBjZ3JvdXAgY29udHJvbGxlciBkYXRhIHN0cnVjdHVyZXMgb3IgQVBJcz8KCkkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSB1c2Vyc3BhY2UgaW1wbGljYXRpb25zLiBIb3cgaXMgdGhpcyBleHBvc2VkIHRvIHVzZXJzIHRocm91Z2ggdGhlIGBibGtpb2AgY2dyb3VwIGludGVyZmFjZT8gV2hhdCB0b29scyBvciB1dGlsaXRpZXMgKGxpa2UgYGNnc3RhdHNgKSBtaWdodCBkZXBlbmQgb24gdGhpcyBpbmZvcm1hdGlvbj8gV2hhdCBhYm91dCBkZWJ1Z2dpbmcgYW5kIHRyYWNpbmc/IEFyZSB0aGVyZSBhbnkgdHJhY2Vwb2ludHMgb3IgcGVyZiBldmVudHMgdGhhdCByZWx5IG9uIHRoaXMgZnVuY3Rpb25hbGl0eT8gSG93IGRvZXMgdGhpcyBpbmZsdWVuY2UgdGhlIHdheSBwZXJmb3JtYW5jZSBpcyBtZWFzdXJlZD8KCk15IG5leHQgc3RlcCBpcyB0byBwcm9iYWJseSBjaGVjayBvdXQgdGhlIGNvZGUgaXRzZWxmLCBidXQgdGhpcyBpcyB0aGUgZ2VuZXJhbCBtZW50YWwgbWFwIHRoYXQgSSBzaG91bGQgc3RhcnQgd2l0aC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBgI2lmZGVmYCBibG9ja3MsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIG1heWJlIGV2ZW4gZGVwZW5kZW5jeSBncmFwaHMsIHRvIHNlZSBob3cgaXQgYWxsIGZpdHMgdG9nZXRoZXIuIFRoZSBnb2FsIGlzIHRvIGJ1aWxkIGEgc29saWQgbWVudGFsIG1vZGVsIG9mIHRoZSBmZWF0dXJlLCBpbmNsdWRpbmcgaXRzIHNjb3BlLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgaXRzIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIGFuZCB1c2Vyc3BhY2UgdG9vbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfQ0dST1VQX0lPQ09TVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9LY29uZmlnPTE0NT1jb25maWcgQkxLX0NHUk9VUF9GQ19BUFBJRFxuLS1cbmJsb2NrL0tjb25maWctMTUzLVxuYmxvY2svS2NvbmZpZzoxNTQ6Y29uZmlnIEJMS19DR1JPVVBfSU9DT1NUXG5ibG9jay9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIGNvc3QgbW9kZWwgYmFzZWQgY2dyb3VwIElPIGNvbnRyb2xsZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxMgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUqKgoKT2theSwgdGltZSB0byBnZXQgZG93biB0byBidXNpbmVzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgYmxvY2svS2NvbmZpZ2AgZmlsZSBhIGxpdHRsZSBiZXR0ZXIuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDE1NCB0byBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB0aGVyZS4gSSYjMzk7bSBob3BpbmcgdG8gcGlucG9pbnQgYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gc2V0dGluZyBvciBkZXBlbmRlbmN5IEkmIzM5O20gaW50ZXJlc3RlZCBpbiBhbmQgdW5kZXJzdGFuZCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGJyb2FkZXIgYmxvY2sgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyB0aWRiaXRzIHRoYXQgc2VjdGlvbiBob2xkcy4gSXQgY291bGQgYmUgcmVsYXRlZCB0byBhIHNwZWNpZmljIGRyaXZlciwgYSBwZXJmb3JtYW5jZSBmZWF0dXJlLCBvciBwZXJoYXBzIGEgc2VjdXJpdHkgYXNwZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2Jsb2NrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0NTpcdGNvbmZpZyBCTEtfQ0dST1VQX0ZDX0FQUElEXG4gMTQ2Olx0XHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IHRvIHRyYWNrIEZDIEkvTyBUcmFmZmljIGFjcm9zcyBjZ3JvdXAgYXBwbGljYXRpb25zXCYjMzQ7XG4gMTQ3Olx0XHRkZXBlbmRzIG9uIEJMS19DR1JPVVAgXHUwMDI2XHUwMDI2IE5WTUVfRkNcbiAxNDg6XHRcdGhlbHBcbiAxNDk6XHRcdCAgRW5hYmxpbmcgdGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgc3VwcG9ydCB0byB0cmFjayBGQyBJL08gdHJhZmZpYyBhY3Jvc3NcbiAxNTA6XHRcdCAgY2dyb3VwIGFwcGxpY2F0aW9ucy4gSXQgZW5hYmxlcyB0aGUgRmFicmljIGFuZCB0aGUgc3RvcmFnZSB0YXJnZXRzIHRvXG4gMTUxOlx0XHQgIGlkZW50aWZ5LCBtb25pdG9yLCBhbmQgaGFuZGxlIEZDIHRyYWZmaWMgYmFzZWQgb24gVk0gdGFncyBieSBpbnNlcnRpbmdcbiAxNTI6XHRcdCAgYXBwbGljYXRpb24gc3BlY2lmaWMgaWRlbnRpZmljYXRpb24gaW50byB0aGUgRkMgZnJhbWUuXG4gMTUzOlx0XG4gMTU0Olx0Y29uZmlnIEJMS19DR1JPVVBfSU9DT1NUXG4gMTU1Olx0XHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBjb3N0IG1vZGVsIGJhc2VkIGNncm91cCBJTyBjb250cm9sbGVyXCYjMzQ7XG4gMTU2Olx0XHRkZXBlbmRzIG9uIEJMS19DR1JPVVBcbiAxNTc6XHRcdHNlbGVjdCBCTEtfUlFfQUxMT0NfVElNRVxuIDE1ODpcdFx0aGVscFxuIDE1OTpcdFx0RW5hYmxpbmcgdGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgLndlaWdodCBpbnRlcmZhY2UgZm9yIGNvc3RcbiAxNjA6XHRcdG1vZGVsIGJhc2VkIHByb3BvcnRpb25hbCBJTyBjb250cm9sLiAgVGhlIElPIGNvbnRyb2xsZXJcbiAxNjE6XHRcdGRpc3RyaWJ1dGVzIElPIGNhcGFjaXR5IGJldHdlZW4gZGlmZmVyZW50IGdyb3VwcyBiYXNlZCBvblxuIDE2MjpcdFx0dGhlaXIgc2hhcmUgb2YgdGhlIG92ZXJhbGwgd2VpZ2h0IGRpc3RyaWJ1dGlvbi5cbiAxNjM6XHRcbiAxNjQ6XHRjb25maWcgQkxLX0NHUk9VUF9JT1BSSU9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBCbG9jayBJL08gQ29zdCBhbmQgaXRzIERlcGVuZGVuY2llcyoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBCTEtfQ0dST1VQX0lPQ09TVGAuIFRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkLCBvYnZpb3VzbHksIGlzIHRoYXQgaXQgaGluZ2VzIG9uIGBCTEtfQ0dST1VQYC4gTm8gc3VycHJpc2UgdGhlcmU7IEkvTyBjb3N0aW5nIGlzIGJ1aWx0IG9uIHRoZSBmb3VuZGF0aW9uIG9mIGNvbnRyb2wgZ3JvdXBzLCBvZiBjb3Vyc2UuIE5vdywgYmVmb3JlIEkgZGl2ZSBkZWVwZXIgaW50byBgQkxLX0NHUk9VUF9JT0NPU1RgIGl0c2VsZiwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2UgYWJzb2x1dGVseSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIG9mIGBCTEtfQ0dST1VQYCBkZXBlbmRlbmNpZXMuIFdoYXQgYXJlIHRoZSBrZXkgY29tcG9uZW50cyBpdCByZWxpZXMgb24/IFdoYXQgb3RoZXIgZmxhZ3Mgb3Igc2V0dGluZ3MgYXJlIGVudGFuZ2xlZCB3aXRoIGl0PyBUaW1lIHRvIHF1aWNrbHkgdHJhY2UgdGhvc2UgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gc3VycHJpc2VzIGRvd24gdGhlIGxpbmUuIEkgd2FudCBhIGNsZWFuLCBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBsYW5kc2NhcGUgYmVmb3JlIEkgZ28gZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0NHUk9VUCQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk5NAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBuYWlsIGRvd24gd2hlcmUgYGNvbmZpZyBCTEtfQ0dST1VQYCBsaXZlcyBpbiB0aGUga2VybmVsJiMzOTtzIEtjb25maWcgc3lzdGVtLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgaXQmIzM5O3MgbGlrZWx5IHJlbGF0ZWQgdG8gYmxvY2sgZGV2aWNlIG1hbmFnZW1lbnQuIFRoZXJlZm9yZSwgdGhlIGZpcnN0IGxvZ2ljYWwgcGxhY2UgdG8gY2hlY2sgaXMgcHJvYmFibHkgdGhlIGBibG9jay9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIHJ1biBhIHNlYXJjaCB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSB0byBiZSBjZXJ0YWluLCB0aG91Z2guIExldCYjMzk7cyBzZWUgaWYgdGhhdCYjMzk7cyB3aGVyZSB0aGUgZGVmaW5pdGlvbiBpcyBoaWRpbmcuIFRpbWUgdG8gZmlyZSB1cCB0aGUgc2VhcmNoIHRvb2xzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfQ0dST1VQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9LY29uZmlnPTM5PWNvbmZpZyBCTEtfUlFfQUxMT0NfVElNRVxuLS1cbmJsb2NrL0tjb25maWctNDEtXG5ibG9jay9LY29uZmlnOjQyOmNvbmZpZyBCTEtfQ0dST1VQX1JXU1RBVFxuYmxvY2svS2NvbmZpZy00My1cdGJvb2xcbmJsb2NrL0tjb25maWctNDQtXG5ibG9jay9LY29uZmlnOjQ1OmNvbmZpZyBCTEtfQ0dST1VQX1BVTlRfQklPXG5ibG9jay9LY29uZmlnLTQ2LVx0Ym9vbFxuLS1cbmJsb2NrL0tjb25maWc9MTI3PWNvbmZpZyBCTEtfV0JUX01RXG4tLVxuYmxvY2svS2NvbmZpZy0xMzMtXG5ibG9jay9LY29uZmlnOjEzNDpjb25maWcgQkxLX0NHUk9VUF9JT0xBVEVOQ1lcbmJsb2NrL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgbGF0ZW5jeSBiYXNlZCBjZ3JvdXAgSU8gcHJvdGVjdGlvblwmIzM0O1xuLS1cbmJsb2NrL0tjb25maWctMTQ0LVxuYmxvY2svS2NvbmZpZzoxNDU6Y29uZmlnIEJMS19DR1JPVVBfRkNfQVBQSURcbmJsb2NrL0tjb25maWctMTQ2LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCB0byB0cmFjayBGQyBJL08gVHJhZmZpYyBhY3Jvc3MgY2dyb3VwIGFwcGxpY2F0aW9uc1wmIzM0O1xuLS1cbmJsb2NrL0tjb25maWctMTUzLVxuYmxvY2svS2NvbmZpZzoxNTQ6Y29uZmlnIEJMS19DR1JPVVBfSU9DT1NUXG5ibG9jay9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIGNvc3QgbW9kZWwgYmFzZWQgY2dyb3VwIElPIGNvbnRyb2xsZXJcJiMzNDtcbi0tXG5ibG9jay9LY29uZmlnLTE2My1cbmJsb2NrL0tjb25maWc6MTY0OmNvbmZpZyBCTEtfQ0dST1VQX0lPUFJJT1xuYmxvY2svS2NvbmZpZy0xNjUtXHRib29sIFwmIzM0O0Nncm91cCBJL08gY29udHJvbGxlciBmb3IgYXNzaWduaW5nIGFuIEkvTyBwcmlvcml0eSBjbGFzc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTUwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2NvbmZpZyBFeHBsb3JhdGlvbiBCZWdpbnMqKgoKQWxyaWdodCwgdGhlIGluaXRpYWwgaHVuY2ggcG9pbnRzIHRvd2FyZHMgbmVlZGluZyBhIGNvbXByZWhlbnNpdmUgc3dlZXAuIEkmIzM5O20gZ29pbmcgdG8ga2ljayB0aGluZ3Mgb2ZmIGJ5IHNlYXJjaGluZyB3aXRoaW4gdGhlICplbnRpcmUqIEtjb25maWcgdHJlZS4gSSBrbm93IHRoZXJlIGFyZSBwb3RlbnRpYWxseSBodW5kcmVkcywgbWF5YmUgdGhvdXNhbmRzLCBvZiB0aGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIHNjYXR0ZXJlZCBhY3Jvc3MgdGhlIGNvZGViYXNlLCBidXQgSSBuZWVkIHRvIHN0YXJ0IGJyb2FkLiBUaGlzIGFsbC1lbmNvbXBhc3Npbmcgc2VhcmNoIGlzIHRoZSBuZWNlc3NhcnkgZmlyc3Qgc3RlcCB0byBnZXQgYSBsYXkgb2YgdGhlIGxhbmQsIHdpdGhvdXQgbWFraW5nIGFueSBhc3N1bXB0aW9ucyBhYm91dCB3aGVyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIG1pZ2h0IGJlIGRlZmluZWQgb3IgcmVmZXJlbmNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19DR1JPVVAkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luaXQvS2NvbmZpZz0xMDk5PWNvbmZpZyBNRU1DR19WMVxuLS1cbmluaXQvS2NvbmZpZy0xMTE1LVxuaW5pdC9LY29uZmlnOjExMTY6Y29uZmlnIEJMS19DR1JPVVBcbmluaXQvS2NvbmZpZy0xMTE3LVx0Ym9vbCBcJiMzNDtJTyBjb250cm9sbGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3ODUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgcGFydGljdWxhciBhc3BlY3Qgb2YgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJiMzOTttIHRoaW5raW5nLCBgaW5pdC9LY29uZmlnYCBpcyB0aGUgcGxhY2UgdG8gc3RhcnQsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMTE2LiBUaGF0IGFyZWEgbGlrZWx5IGRlYWxzIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBhIHBhcnRpY3VsYXIgbW9kdWxlIEkmIzM5O20gaW50ZXJlc3RlZCBpbi4gSSBzaG91bGQgY2hlY2sgdGhhdCBzZWN0aW9uIGZvciB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgbGllIGluIHdhaXQgaW4gdGhhdCBwb3J0aW9uIG9mIGBLY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExMTA6XHRcdCAgUGxlYXNlIG5vdGUgdGhhdCBmZWF0dXJlIHNldCBvZiB0aGUgbGVnYWN5IG1lbW9yeSBjb250cm9sbGVyIGlzIGxpa2VseVxuMTExMTpcdFx0ICBnb2luZyB0byBzaHJpbmsgZHVlIHRvIGRlcHJlY2F0aW9uIHByb2Nlc3MuIE5ldyBkZXBsb3ltZW50cyB3aXRoIHYxXG4xMTEyOlx0XHQgIGNvbnRyb2xsZXIgYXJlIGhpZ2hseSBkaXNjb3VyYWdlZC5cbjExMTM6XHRcbjExMTQ6XHRcdCAgU2F5IE4gaWYgdW5zdXJlLlxuMTExNTpcdFxuMTExNjpcdGNvbmZpZyBCTEtfQ0dST1VQXG4xMTE3Olx0XHRib29sIFwmIzM0O0lPIGNvbnRyb2xsZXJcJiMzNDtcbjExMTg6XHRcdGRlcGVuZHMgb24gQkxPQ0tcbjExMTk6XHRcdGRlZmF1bHQgblxuMTEyMDpcdFx0aGVscFxuMTEyMTpcdFx0R2VuZXJpYyBibG9jayBJTyBjb250cm9sbGVyIGNncm91cCBpbnRlcmZhY2UuIFRoaXMgaXMgdGhlIGNvbW1vblxuMTEyMjpcdFx0Y2dyb3VwIGludGVyZmFjZSB3aGljaCBzaG91bGQgYmUgdXNlZCBieSB2YXJpb3VzIElPIGNvbnRyb2xsaW5nXG4xMTIzOlx0XHRwb2xpY2llcy5cbjExMjQ6XHRcbjExMjU6XHRcdEN1cnJlbnRseSwgQ0ZRIElPIHNjaGVkdWxlciB1c2VzIGl0IHRvIHJlY29nbml6ZSB0YXNrIGdyb3VwcyBhbmRcbjExMjY6XHRcdGNvbnRyb2wgZGlzayBiYW5kd2lkdGggYWxsb2NhdGlvbiAocHJvcG9ydGlvbmFsIHRpbWUgc2xpY2UgYWxsb2NhdGlvbilcbjExMjc6XHRcdHRvIHN1Y2ggdGFzayBncm91cHMuIEl0IGlzIGFsc28gdXNlZCBieSBiaW8gdGhyb3R0bGluZyBsb2dpYyBpblxuMTEyODpcdFx0YmxvY2sgbGF5ZXIgdG8gaW1wbGVtZW50IHVwcGVyIGxpbWl0IGluIElPIHJhdGVzIG9uIGEgZGV2aWNlLlxuMTEyOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjQ1CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYEJMS19DR1JPVVBgIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggZGVhbGluZyB3aXRoIGBCTEtfQ0dST1VQYCBmdW5kYW1lbnRhbGx5IHJlbGllcyBvbiB0aGUgYEJMT0NLYCBjb25maWd1cmF0aW9uLCB0aGF0IG11Y2ggaXMgb2J2aW91cy4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggcmVxdWlyZXMgYEJMS19DR1JPVVBgIGFuZCBgQkxLX0NHUk9VUF9JT0NPU1RgIHRvIGJlIGVuYWJsZWQsIHdoaWNoIGlzbiYjMzk7dCBzdXJwcmlzaW5nLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgaW4gYGlvY19wZF9zdGF0KClgIHdoZXJlIGEgbG9jayBpcyBhZGRlZC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjb25zaWRlciBmdXp6aW5nIHRoaXMgY2hhbmdlLCBhbmQgdGhlIGZhY3QgdGhhdCBpdCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiwgbWFraW5nIGl0IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGNlcnRhaW5seSB2YWxpZGF0ZXMgdGhhdCBpbnN0aW5jdC4gVGhlIG9idmlvdXMgZm9jYWwgc3ltYm9sIGlzIGBpb2NfcGRfc3RhdGAuCgpOb3csIEkgbmVlZCB0byB2ZXJpZnkgd2hldGhlciBgaW9jX3BkX3N0YXRgIGlzIHN0YXRpYyBvciBub3QuIEFoLCB5ZXMsIGl0JiMzOTtzIGBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylgLiBXYWl0LCBpdCAqaXMqIGEgc3RhdGljIGZ1bmN0aW9uLi4uIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncy4gTm9ybWFsbHksIGEgc3RhdGljIGZ1bmN0aW9uIG1pZ2h0IGJlIGlubGluZWQsIG9yIG1pZ2h0IG5vdCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sLiBCdXQgaGFuZyBvbiwgaXQmIzM5O3MgYWN0dWFsbHkgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXI6IGAucGRfc3RhdF9mbiA9IGlvY19wZF9zdGF0LGAuIFRoYXQmIzM5O3MgYSBrZXkgZGV0YWlsISBCZWNhdXNlIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLCBpdCAqd29uJiMzOTt0KiBiZSBjb21wbGV0ZWx5IGlubGluZWQgYW5kIHNob3VsZCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sLCBldmVuIGlmIGl0JiMzOTtzIHN0YXRpYy4KClRoZSBiaWdnZXIgaXNzdWUgaXMgd2hldGhlciBzeXprYWxsZXIgY2FuIHRhcmdldCBpdCBkaXJlY3RseSBpZiBpdCYjMzk7cyBzdGF0aWMuIFRoYXQmIzM5O3MgdGhlIHJlYWwgcXVlc3Rpb24uIElzIHRoZXJlIGFuIGVudHJ5IHBvaW50PyBBbHJpZ2h0LCBsZXQgbWUgdHJhY2UgdGhpcy4gVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB2aWEgYHBkX3N0YXRfZm5gIGZyb20gYGJsa2NnX3ByaW50X3N0YXRgLiBSaWdodCwgc28gYGJsa2NnX3ByaW50X3N0YXRgIGlzIHRoZSBlbnRyeSBwb2ludCwgYW5kIHRoYXQgZnVuY3Rpb24gdGhlbiBjYWxscyBvdXIgYGlvY19wZF9zdGF0YCB0aHJvdWdoIHRoZSBmdW5jdGlvbiBwb2ludGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwZF9zdGF0X2ZuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL2Jsay1jZ3JvdXAuYz0xMTI5PXN0YXRpYyB2b2lkIGJsa2NnX3ByaW50X29uZV9zdGF0KHN0cnVjdCBibGtjZ19ncSAqYmxrZywgc3RydWN0IHNlcV9maWxlICpzKVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMTcxLVxuYmxvY2svYmxrLWNncm91cC5jOjExNzI6XHRcdGlmICghYmxrZy1cdTAwM2VwZFtpXSB8fCAhcG9sLVx1MDAzZXBkX3N0YXRfZm4pXG5ibG9jay9ibGstY2dyb3VwLmMtMTE3My1cdFx0XHRjb250aW51ZTtcbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMTc0LVxuYmxvY2svYmxrLWNncm91cC5jOjExNzU6XHRcdHBvbC1cdTAwM2VwZF9zdGF0X2ZuKGJsa2ctXHUwMDNlcGRbaV0sIHMpO1xuYmxvY2svYmxrLWNncm91cC5jLTExNzYtXHR9XG4tLVxuYmxvY2svYmxrLWNncm91cC5oPTE3ND1zdHJ1Y3QgYmxrY2dfcG9saWN5IHtcbi0tXG5ibG9jay9ibGstY2dyb3VwLmgtMTg5LVx0YmxrY2dfcG9sX3Jlc2V0X3BkX3N0YXRzX2ZuXHQqcGRfcmVzZXRfc3RhdHNfZm47XG5ibG9jay9ibGstY2dyb3VwLmg6MTkwOlx0YmxrY2dfcG9sX3N0YXRfcGRfZm5cdFx0KnBkX3N0YXRfZm47XG5ibG9jay9ibGstY2dyb3VwLmgtMTkxLX07XG4tLVxuYmxvY2svYmxrLWlvY29zdC5jPTM1OTM9c3RhdGljIHN0cnVjdCBibGtjZ19wb2xpY3kgYmxrY2dfcG9saWN5X2lvY29zdCA9IHtcbi0tXG5ibG9jay9ibGstaW9jb3N0LmMtMzU5OS1cdC5wZF9mcmVlX2ZuXHQ9IGlvY19wZF9mcmVlLFxuYmxvY2svYmxrLWlvY29zdC5jOjM2MDA6XHQucGRfc3RhdF9mblx0PSBpb2NfcGRfc3RhdCxcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNjAxLX07XG4tLVxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jPTEwNTk9c3RhdGljIHN0cnVjdCBibGtjZ19wb2xpY3kgYmxrY2dfcG9saWN5X2lvbGF0ZW5jeSA9IHtcbi0tXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtMTA2NC1cdC5wZF9mcmVlX2ZuXHQ9IGlvbGF0ZW5jeV9wZF9mcmVlLFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jOjEwNjU6XHQucGRfc3RhdF9mblx0PSBpb2xhdGVuY3lfcGRfc3RhdCxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDY2LX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0NjUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBgYmxrY2dfcHJpbnRfb25lX3N0YXRgKioKClJpZ2h0LCBgYmxrY2dfcHJpbnRfb25lX3N0YXRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIGluIHRoZSBibG9jayBJL08gY29udHJvbGxlciBjb2RlLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gU3RhdGljIGZ1bmN0aW9ucyBtZWFuIHRoZXkmIzM5O3JlIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlaXIgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggZ2VuZXJhbGx5IHN1Z2dlc3RzIGEgdGFyZ2V0ZWQgcHVycG9zZSBhbmQgbGltaXRlZCBzY29wZS4gSXQmIzM5O3MgYSBrZXkgaW5kaWNhdG9yIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZnVuY3Rpb24mIzM5O3MgZXhhY3Qgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0IHdobyYjMzk7cyBhY3R1YWxseSAqdXNpbmcqIHRoaXMgdGhpbmcuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgaXMgYWJzb2x1dGVseSBjcnVjaWFsIHRvIGdyYXNwaW5nIGl0cyBmdW5jdGlvbiBhbmQgcG90ZW50aWFsIGltcGFjdC4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgdHJhY2sgZG93biB0aGUgY2FsbGVycy4gS25vd2luZyB3aG8mIzM5O3MgdXNpbmcgaXQgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYWNjb21wbGlzaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrY2dfcHJpbnRfb25lX3N0YXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLWNncm91cC5jPTEwODk9c3RhdGljIHZvaWQgYmxrY2dfZmlsbF9yb290X2lvc3RhdHModm9pZClcbi0tXG5ibG9jay9ibGstY2dyb3VwLmMtMTEyOC1cbmJsb2NrL2Jsay1jZ3JvdXAuYzoxMTI5OnN0YXRpYyB2b2lkIGJsa2NnX3ByaW50X29uZV9zdGF0KHN0cnVjdCBibGtjZ19ncSAqYmxrZywgc3RydWN0IHNlcV9maWxlICpzKVxuYmxvY2svYmxrLWNncm91cC5jLTExMzAte1xuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYz0xMTgxPXN0YXRpYyBpbnQgYmxrY2dfcHJpbnRfc3RhdChzdHJ1Y3Qgc2VxX2ZpbGUgKnNmLCB2b2lkICp2KVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMTkyLVx0aGxpc3RfZm9yX2VhY2hfZW50cnkoYmxrZywgXHUwMDI2YmxrY2ctXHUwMDNlYmxrZ19saXN0LCBibGtjZ19ub2RlKVxuYmxvY2svYmxrLWNncm91cC5jOjExOTM6XHRcdGJsa2NnX3ByaW50X29uZV9zdGF0KGJsa2csIHNmKTtcbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMTk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTQxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBibGtjZ19wcmludF9zdGF0YCoqCgpPa2F5LCBzbyBgYmxrY2dfcHJpbnRfc3RhdGAgaXMgYWxzbyBzdGF0aWMuIFJpZ2h0LCB0aGF0JiMzOTtzIGEgY2x1ZS4gU3RhdGljIG1lYW5zIGl0JiMzOTtzIGxpbWl0ZWQgaW4gc2NvcGUsIGxpa2VseSBpbnRlcm5hbCB0byBpdHMgY29tcGlsYXRpb24gdW5pdC4gU28sIHRoZSBrZXkgaGVyZSBpcyB0byBmaW5kIHRoZSBjYWxsZXJzLiBJdCYjMzk7cyBjb25maW5lZCwgd2hpY2ggbWVhbnMgdGhlIG51bWJlciBvZiBjYWxsIHNpdGVzIGlzIHByb2JhYmx5IHByZXR0eSBzbWFsbCBhbmQgbWFuYWdlYWJsZS4gVGltZSB0byBmaXJlIHVwIHRoZSB0b29scyBhbmQgcXVpY2tseSB0cmFjZSB0aG9zZSBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ3Vlc3NpbmcgaXQmIzM5O3MgcGFydCBvZiB0aGUgYmxvY2sgSU8gYWNjb3VudGluZyBvciBkZWJ1Z2dpbmcgaW5mcmFzdHJ1Y3R1cmUsIGJ1dCBmaW5kaW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgY29uZmlybSB0aGF0IGFuZCBnaXZlIG1lIHRoZSBmdWxsIHBpY3R1cmUuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrY2dfcHJpbnRfc3RhdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9ibGstY2dyb3VwLmM9MTA3MD1zdGF0aWMgdm9pZCBibGtjZ19yc3RhdF9mbHVzaChzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqY3NzLCBpbnQgY3B1KVxuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMDgwLSAqIGNncm91cHMgYXJlIGRlZmluZWQuIEZvciB0aGF0IHJlYXNvbiwgY3NzX3JzdGF0X2ZsdXNoIGluXG5ibG9jay9ibGstY2dyb3VwLmM6MTA4MTogKiBibGtjZ19wcmludF9zdGF0IGRvZXMgbm90IGFjdHVhbGx5IGZpbGwgb3V0IHRoZSBpb3N0YXQgaW4gdGhlIHJvb3RcbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMDgyLSAqIGNncm91cCYjMzk7cyBibGtjZ19ncS5cbi0tXG5ibG9jay9ibGstY2dyb3VwLmM9MTEyOT1zdGF0aWMgdm9pZCBibGtjZ19wcmludF9vbmVfc3RhdChzdHJ1Y3QgYmxrY2dfZ3EgKmJsa2csIHN0cnVjdCBzZXFfZmlsZSAqcylcbi0tXG5ibG9jay9ibGstY2dyb3VwLmMtMTE4MC1cbmJsb2NrL2Jsay1jZ3JvdXAuYzoxMTgxOnN0YXRpYyBpbnQgYmxrY2dfcHJpbnRfc3RhdChzdHJ1Y3Qgc2VxX2ZpbGUgKnNmLCB2b2lkICp2KVxuYmxvY2svYmxrLWNncm91cC5jLTExODIte1xuLS1cbmJsb2NrL2Jsay1jZ3JvdXAuYz0xMTk4PXN0YXRpYyBzdHJ1Y3QgY2Z0eXBlIGJsa2NnX2ZpbGVzW10gPSB7XG4tLVxuYmxvY2svYmxrLWNncm91cC5jLTEyMDAtXHRcdC5uYW1lID0gXCYjMzQ7c3RhdFwmIzM0OyxcbmJsb2NrL2Jsay1jZ3JvdXAuYzoxMjAxOlx0XHQuc2VxX3Nob3cgPSBibGtjZ19wcmludF9zdGF0LFxuYmxvY2svYmxrLWNncm91cC5jLTEyMDItXHR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTAyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQmxvY2sgSS9PIENvc3QgU3RhdGlzdGljcyBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYGJsa2NnX2ZpbGVzYCBzdHVmZiwgd2hpY2ggaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBjZ3JvdXAgc3Vic3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgZW50cnkgcG9pbnQgZm9yIHRoaXMgaXMgbGlrZWx5IHJlYWRpbmcgdGhlIGBzdGF0YCBmaWxlIGFzc29jaWF0ZWQgd2l0aCBhIGJsb2NrIGNncm91cC4gSSYjMzk7dmUgcGlucG9pbnRlZCBgaW9jX3BkX3N0YXRgIGFzIGEga2V5IGZ1bmN0aW9uIGhlcmUuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYWRkcmVzcy10YWtlbiBhbmQgdXNlZCBhcyBhIGNhbGxiYWNrIGlzIGNydWNpYWw7IHRoYXQgbWVhbnMgaXQgd29uJiMzOTt0IGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCB3aWxsIGhhdmUgaXRzIG93biBkaXN0aW5jdCBzeW1ib2wuCgpJIGhhZCBjb25zaWRlcmVkIGBibGtjZ19wcmludF9zdGF0YCBhcyBhbiBhbHRlcm5hdGl2ZSBmb2N1cywgYnV0IHNpbmNlIHRoZSBwcm9tcHQgZW1waGFzaXplcyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMsIGBpb2NfcGRfc3RhdGAgaXMgYWN0dWFsbHkgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yIC0gZXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljIGFuZCBhZGRyZXNzIHRha2VuLCBpdCBpc24mIzM5O3QgaW5saW5lZCwgYW5kIGl0JiMzOTtzIGFsc28gdGhlIHNwZWNpZmljIGZ1bmN0aW9uIHRoYXQgd2FzIG1vZGlmaWVkLiBTbywgYGlvY19wZF9zdGF0YCBpcyB0aGUgcmlnaHQgY2hvaWNlLgoKTm93LCBiZWZvcmUgSSBwcm9jZWVkLCBJIG5lZWQgdG8gY2hlY2sgZm9yIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBUaGUgcHJvbXB0IG1lbnRpb25lZCBgQkxLX0NHUk9VUF9JT0NPU1RgLCB3aGljaCBkZXBlbmRzIG9uIGBCTEtfQ0dST1VQYCwgYW5kIGBCTEtfQ0dST1VQYCBpbiB0dXJuIGRlcGVuZHMgb24gYEJMT0NLYC4gVGh1cywgYm90aCBgQkxLX0NHUk9VUF9JT0NPU1RgIGFuZCBgQkxLX0NHUk9VUGAgd2lsbCBiZSBuZWNlc3NhcnkgZm9yIHRoaXMgdG8gd29yay4gSSBzaG91bGQgZG9jdW1lbnQgdGhvc2UgaW4gY2FzZSBJIG5lZWQgdG8gbW9kaWZ5IGFueXRoaW5nLgoKRmluYWxseSwganVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYGlvY19wZF9zdGF0YCBpcyBpbmRlZWQgdGhlICpvbmx5KiBmdW5jdGlvbiB0aGF0IHdhcyBtb2RpZmllZCBpbiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb2NfcGRfc3RhdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL2Jsay1pb2Nvc3QuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9ibGstaW9jb3N0LmM9MzA2Mz1zdGF0aWMgdm9pZCBpb2NfcGRfZnJlZShzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQpXG4tLVxuYmxvY2svYmxrLWlvY29zdC5jLTMwOTAtXG5ibG9jay9ibGstaW9jb3N0LmM6MzA5MTpzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zMDkyLXtcbi0tXG5ibG9jay9ibGstaW9jb3N0LmM9MzU5Mz1zdGF0aWMgc3RydWN0IGJsa2NnX3BvbGljeSBibGtjZ19wb2xpY3lfaW9jb3N0ID0ge1xuLS1cbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNTk5LVx0LnBkX2ZyZWVfZm5cdD0gaW9jX3BkX2ZyZWUsXG5ibG9jay9ibGstaW9jb3N0LmM6MzYwMDpcdC5wZF9zdGF0X2ZuXHQ9IGlvY19wZF9zdGF0LFxuYmxvY2svYmxrLWlvY29zdC5jLTM2MDEtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQxMwoJCQkJCQkJb3V0cHV0OiAxMDYKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGlvY19wZF9zdGF0YCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCwgYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBrZXkgbW9kaWZpY2F0aW9uIGlzIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBpb2NfcGRfc3RhdGAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBvbmx5IHRoaW5nIGFmZmVjdGVkIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGFzY2VydGFpbiByZWFjaGFiaWxpdHkgaW4gYSBjb21tb24gdmlydHVhbGl6ZWQgc2V0dGluZywgYW5kIHllcywgaXQgc2VlbXMgUUVNVSBwcm92aWRlcyBib3RoIGNncm91cHMgYW5kIGJsb2NrIGRldmljZSBhY2Nlc3MuIEkgY2FuIHNlZSB0aGlzIGJlaW5nIHRyaWdnZXJlZCBhcyBkZXNjcmliZWQuCgpUaGUgbmV4dCBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHBhdGNoIGFjdHVhbGx5ICpkbyogYW55dGhpbmcgdXNlZnVsPyBTZWVtcyBsaWtlIGl0IGRvZXMhIEl0JiMzOTtzIGltcGxlbWVudGluZyBhIHNwaW5sb2NrLCB3aGljaCBpbmRpY2F0ZXMgaXQmIzM5O3MgYWRkcmVzc2luZyBhIGdlbnVpbmUgcmFjZSBjb25kaXRpb24sIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHJlYWRpbmcgY2dyb3VwIHN0YXRpc3RpY3MuIFNvLCBpdCYjMzk7cyBhZGRpbmcgYSBsb2NraW5nIG1lY2hhbmlzbSwgd2hpY2ggdGVsbHMgbWUgdGhpcyBpcyBhZGRyZXNzaW5nIGEgY29uY3VycmVuY3kgaXNzdWUuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgcHJlcGFyZSB0aGUgZnV6emluZyBpbmZvcm1hdGlvbi4gQmFzZWQgb24gbXkgYW5hbHlzaXMsIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBUaGUgcHJpbWFyeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGBpb2NfcGRfc3RhdGAgc3ltYm9sLCBzbyBJJiMzOTtsbCBtYWtlIHN1cmUgaXQmIzM5O3MgaW4gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QuIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGNvbmZpZ3VyYXRpb25zLiBCb3RoIGBCTEtfQ0dST1VQYCBhbmQgYEJMS19DR1JPVVBfSU9DT1NUYCBhcmUgY3J1Y2lhbCBmb3IgdGhpcywgc2luY2UgaXQmIzM5O3MgdGhlIGNncm91cCBibG9jayBJTyBjb3N0IGNvbnRyb2xsZXIgdGhhdCYjMzk7cyByZWxldmFudC4KCk15IHJlYXNvbmluZyBpcyBzb2xpZDogdGhlIHBhdGNoIGludHJvZHVjZXMgYSBzcGlubG9jayB0byBgaW9jX3BkX3N0YXRgIHdpdGhpbiB0aGUgYmxvY2sgSU8gY29zdCBjZ3JvdXAgY29udHJvbGxlciwgZWZmZWN0aXZlbHkgcHJldmVudGluZyBhIHJhY2UgY29uZGl0aW9uIHdoZW4gYWNjZXNzaW5nIGNncm91cCBzdGF0aXN0aWNzLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgY29yZSBrZXJuZWwgbG9naWMgYW5kLCBjcnVjaWFsbHksIGlzIHJlYWNoYWJsZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBjaGVja3MgYWxsIG15IGJveGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0NHUk9VUCYjMzQ7LAogICAgJiMzNDtCTEtfQ0dST1VQX0lPQ09TVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lvY19wZF9zdGF0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzcGlubG9jayB0byBgaW9jX3BkX3N0YXRgIGluIHRoZSBibG9jayBJTyBjb3N0IGNncm91cCBjb250cm9sbGVyIHRvIHByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiB3aGVuIHJlYWRpbmcgY2dyb3VwIHN0YXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfQ0dST1VQJiMzNDssCiAgICAmIzM0O0JMS19DR1JPVVBfSU9DT1NUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9jX3BkX3N0YXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIHRvIGBpb2NfcGRfc3RhdGAgaW4gdGhlIGJsb2NrIElPIGNvc3QgY2dyb3VwIGNvbnRyb2xsZXIgdG8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gcmVhZGluZyBjZ3JvdXAgc3RhdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0Mjo0OC43MjY2NTU4NzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzI3ODkzNjI4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQXCIsXG4gICAgXCJCTEtfQ0dST1VQX0lPQ09TVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvY19wZF9zdGF0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIHRvIGBpb2NfcGRfc3RhdGAgaW4gdGhlIGJsb2NrIElPIGNvc3QgY2dyb3VwIGNvbnRyb2xsZXIgdG8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gcmVhZGluZyBjZ3JvdXAgc3RhdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQyOjQ4LjcyNjY2NDE0OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5Nzc0OTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTRjNjczODNkMzdmZmZiODc2YzIwOGYxMTdmNjY0ZWI4Njc4NmY2ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDIwOjQyOjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1pb2Nvc3QuYyBiL2Jsb2NrL2Jsay1pb2Nvc3QuY1xcbmluZGV4IDhiMmFlYmEyZTFlMzkuLmI0OTFhNmFiOThlYTYgMTAwNjQ0XFxuLS0tIGEvYmxvY2svYmxrLWlvY29zdC5jXFxuKysrIGIvYmxvY2svYmxrLWlvY29zdC5jXFxuQEAgLTMwOTMsOCArMzA5MywxMCBAQCBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcXG4gXFx0c3RydWN0IGlvY19ncSAqaW9jZyA9IHBkX3RvX2lvY2cocGQpO1xcbiBcXHRzdHJ1Y3QgaW9jICppb2MgPSBpb2NnLVxcdTAwM2Vpb2M7XFxuIFxcbitcXHRzcGluX2xvY2tfaXJxKFxcdTAwMjZpb2MtXFx1MDAzZWxvY2spO1xcbitcXG4gXFx0aWYgKCFpb2MtXFx1MDAzZWVuYWJsZWQpXFxuLVxcdFxcdHJldHVybjtcXG4rXFx0XFx0Z290byBvdXQ7XFxuIFxcbiBcXHRpZiAoaW9jZy1cXHUwMDNlbGV2ZWwgPT0gMCkge1xcbiBcXHRcXHR1bnNpZ25lZCB2cDEwayA9IERJVjY0X1U2NF9ST1VORF9DTE9TRVNUKFxcbkBAIC0zMTEwLDYgKzMxMTIsOCBAQCBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcXG4gXFx0XFx0XFx0aW9jZy1cXHUwMDNlbGFzdF9zdGF0LndhaXRfdXMsXFxuIFxcdFxcdFxcdGlvY2ctXFx1MDAzZWxhc3Rfc3RhdC5pbmRlYnRfdXMsXFxuIFxcdFxcdFxcdGlvY2ctXFx1MDAzZWxhc3Rfc3RhdC5pbmRlbGF5X3VzKTtcXG4rb3V0OlxcbitcXHRzcGluX3VubG9ja19pcnEoXFx1MDAyNmlvYy1cXHUwMDNlbG9jayk7XFxuIH1cXG4gXFxuIHN0YXRpYyB1NjQgaW9jX3dlaWdodF9wcmZpbGwoc3RydWN0IHNlcV9maWxlICpzZiwgc3RydWN0IGJsa2dfcG9saWN5X2RhdGEgKnBkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0Mjo0OS4yMTc0Mjg5MzJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2Mjc4ODE1Mjk1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfQ0dST1VQXCIsXG4gICAgXCJCTEtfQ0dST1VQX0lPQ09TVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvY19wZF9zdGF0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIHRvIGBpb2NfcGRfc3RhdGAgaW4gdGhlIGJsb2NrIElPIGNvc3QgY2dyb3VwIGNvbnRyb2xsZXIgdG8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gcmVhZGluZyBjZ3JvdXAgc3RhdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE0YzY3MzgzZDM3ZmZmYjg3NmMyMDhmMTE3ZjY2NGViODY3ODZmNmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDIwOjQyOjQ3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWlvY29zdC5jIGIvYmxvY2svYmxrLWlvY29zdC5jXG5pbmRleCA4YjJhZWJhMmUxZTM5Li5iNDkxYTZhYjk4ZWE2IDEwMDY0NFxuLS0tIGEvYmxvY2svYmxrLWlvY29zdC5jXG4rKysgYi9ibG9jay9ibGstaW9jb3N0LmNcbkBAIC0zMDkzLDggKzMwOTMsMTAgQEAgc3RhdGljIHZvaWQgaW9jX3BkX3N0YXQoc3RydWN0IGJsa2dfcG9saWN5X2RhdGEgKnBkLCBzdHJ1Y3Qgc2VxX2ZpbGUgKnMpXG4gXHRzdHJ1Y3QgaW9jX2dxICppb2NnID0gcGRfdG9faW9jZyhwZCk7XG4gXHRzdHJ1Y3QgaW9jICppb2MgPSBpb2NnLVx1MDAzZWlvYztcbiBcbitcdHNwaW5fbG9ja19pcnEoXHUwMDI2aW9jLVx1MDAzZWxvY2spO1xuK1xuIFx0aWYgKCFpb2MtXHUwMDNlZW5hYmxlZClcbi1cdFx0cmV0dXJuO1xuK1x0XHRnb3RvIG91dDtcbiBcbiBcdGlmIChpb2NnLVx1MDAzZWxldmVsID09IDApIHtcbiBcdFx0dW5zaWduZWQgdnAxMGsgPSBESVY2NF9VNjRfUk9VTkRfQ0xPU0VTVChcbkBAIC0zMTEwLDYgKzMxMTIsOCBAQCBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcbiBcdFx0XHRpb2NnLVx1MDAzZWxhc3Rfc3RhdC53YWl0X3VzLFxuIFx0XHRcdGlvY2ctXHUwMDNlbGFzdF9zdGF0LmluZGVidF91cyxcbiBcdFx0XHRpb2NnLVx1MDAzZWxhc3Rfc3RhdC5pbmRlbGF5X3VzKTtcbitvdXQ6XG4rXHRzcGluX3VubG9ja19pcnEoXHUwMDI2aW9jLVx1MDAzZWxvY2spO1xuIH1cbiBcbiBzdGF0aWMgdTY0IGlvY193ZWlnaHRfcHJmaWxsKHN0cnVjdCBzZXFfZmlsZSAqc2YsIHN0cnVjdCBibGtnX3BvbGljeV9kYXRhICpwZCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQyOjQ5LjIxNzQzMTMwMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODczMjI0MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCbG9jayBJTyBDb3N0IENvbnRyb2xsZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBjaGFuZ2VzIHRvIGBibG9jay9ibGstaW9jb3N0LmNgLiBSaWdodCBhd2F5LCBpdCBsb29rcyBsaWtlIHRoZXkncmUgd3JhcHBpbmcgdGhlIGJvZHkgb2YgYGlvY19wZF9zdGF0KClgIHdpdGggYHNwaW5fbG9ja19pcnEoXHUwMDI2aW9jLVx1MDAzZWxvY2spYCBhbmQgYHNwaW5fdW5sb2NrX2lycShcdTAwMjZpb2MtXHUwMDNlbG9jaylgLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIHByb3RlY3RpbmcgYWNjZXNzIHRvIHNvbWUgc2hhcmVkIGRhdGEgd2l0aGluIHRoYXQgZnVuY3Rpb24sIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlIGNncm91cCBibG9jayBJTyBjb250cm9sbGVyIHBvbGljeS5cblxuTGV0IG1lIHRha2UgYSBxdWljayBsb29rIGF0IGBpb2NfcGRfc3RhdCgpYCBpdHNlbGYgd2l0aGluIGBibG9jay9ibGstaW9jb3N0LmNgIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgc3RhdCBjYWxsYmFjayBpcyBkb2luZyBhbmQgd2hhdCBraW5kIG9mIGRhdGEgaXQncyBhY2Nlc3NpbmcgdG8gZnVsbHkgZ3Jhc3AgdGhlIG5lY2Vzc2l0eSBvZiB0aGUgc3BpbmxvY2suIEl0J3MgYWxtb3N0IGNlcnRhaW5seSB0byBtYWludGFpbiBkYXRhIGludGVncml0eSwgYnV0IEkgbmVlZCB0aGUgY29udGV4dCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSBzcGVjaWZpYyByYWNlIGNvbmRpdGlvbnMgdGhleSdyZSBhZGRyZXNzaW5nLiBJJ2xsIGZvY3VzIG9uIHdoYXQgZGF0YSBpcyBiZWluZyBhY2Nlc3NlZCBhbmQgbW9kaWZpZWQsIGFuZCBmcm9tIHdoZXJlLiBLbm93aW5nIHRoZSBkYXRhIHN0cnVjdHVyZSBgaW9jYCBpcyBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMjQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0Mjo1My41MDQ3NTgyMTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0NDc5NzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvY19wZF9zdGF0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL2Jsay1pb2Nvc3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstaW9jb3N0LmM9MzA2Mz1zdGF0aWMgdm9pZCBpb2NfcGRfZnJlZShzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQpXFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmMtMzA5MC1cXG5ibG9jay9ibGstaW9jb3N0LmM6MzA5MTpzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylcXG5ibG9jay9ibGstaW9jb3N0LmMtMzA5Mi17XFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmM9MzU5Mz1zdGF0aWMgc3RydWN0IGJsa2NnX3BvbGljeSBibGtjZ19wb2xpY3lfaW9jb3N0ID0ge1xcbi0tXFxuYmxvY2svYmxrLWlvY29zdC5jLTM1OTktXFx0LnBkX2ZyZWVfZm5cXHQ9IGlvY19wZF9mcmVlLFxcbmJsb2NrL2Jsay1pb2Nvc3QuYzozNjAwOlxcdC5wZF9zdGF0X2ZuXFx0PSBpb2NfcGRfc3RhdCxcXG5ibG9jay9ibGstaW9jb3N0LmMtMzYwMS19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0Mjo1My43MDkyNDQxMTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDg1ODg5NTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgYGlvY19wZF9zdGF0YCAtIEEgV29ydGh3aGlsZSBFbmRlYXZvcj8qKlxuXG5Pa2F5LCBzbyBgaW9jX3BkX3N0YXRgIGlzIGJlaW5nIHVzZWQgd2l0aGluIGBibGtjZ19wb2xpY3lfaW9jb3N0YCBhcyBwYXJ0IG9mIHRoZSBjZ3JvdXAgc3RhdHMgcmVhZGluZyBwcm9jZXNzLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gaXQncyBwYXJ0IG9mIGEgZnVuY3Rpb24gYW5kIGxpa2VseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGxpa2UgYSBsb2NrLCBpcyB0byBjb25zaWRlciBmdXp6aW5nLiBUaGF0J3MgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgZW5zdXJpbmcgcm9idXN0bmVzcy5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gaXQncyAqanVzdCogcmVhZGluZyBzdGF0cywgaXNuJ3QgaXQ/IFBlcmhhcHMgdGhlIHJpc2sgaXMgbG93ZXIgdGhhbiBJIGluaXRpYWxseSB0aG91Z2h0LiBJIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhlIHBvdGVudGlhbCBpbXBhY3QuXG5cblJpZ2h0LCBiYWNrIHRvIGJhc2ljcy4gQ2FuIHRoaXMgZnVuY3Rpb24gZXZlbiBiZSByZWFjaGVkPyBMZXQncyB0cmFjZSBpdC4uLkFoIHllcywgaXQncyB0cmlnZ2VyZWQgd2hlbiByZWFkaW5nIGNncm91cCBzdGF0cy4gVGhhdCBtYWtlcyBpdCBhIHZpYWJsZSBmdXp6aW5nIHRhcmdldC5cblxuQWxyaWdodCwgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCdzIG1vZGlmaWVkIGlzIGBpb2NfcGRfc3RhdGAuIExldCBtZSBnbyBjaGVjayB0aGUgY29uZmlnIGZvciBgYmxrLWlvY29zdC5jYFxuXG5cbiIsIklucHV0VG9rZW5zIjoyODI4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQyOjU4LjE5NTEzNzM0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDkxNTUxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibGstaW9jb3N0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svTWFrZWZpbGU9MjQ9b2JqLSQoQ09ORklHX0JMS19DR1JPVVBfSU9MQVRFTkNZKVxcdCs9IGJsay1pb2xhdGVuY3kub1xcbmJsb2NrL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19CTEtfQ0dST1VQX0lPQ09TVClcXHQrPSBibGstaW9jb3N0Lm9cXG5ibG9jay9NYWtlZmlsZS0yNi1vYmotJChDT05GSUdfTVFfSU9TQ0hFRF9ERUFETElORSlcXHQrPSBtcS1kZWFkbGluZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQyOjU4LjMzMDA2MjkzOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NTQ5NDY4MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgSS9PIENvc3QgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBDT05GSUdfQkxLX0NHUk9VUF9JT0NPU1RgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byBpdHMgZGVwZW5kZW5jaWVzLiBJdCdzIHBvaW50bGVzcyB0byBnbyBmdXJ0aGVyIHdpdGhvdXQga25vd2luZyBleGFjdGx5IHdoYXQgb3RoZXIgb3B0aW9ucyBvciBmZWF0dXJlcyB0aGlzIHRoaW5nIHJlbGllcyBvbiBvciBpbnRlcmFjdHMgd2l0aC4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSB0cmVlIGlzIGZ1bmRhbWVudGFsIGJlZm9yZSBJIGNhbiBldmVuIGJlZ2luIHRvIGFzc2VzcyBpdHMgaW1wbGljYXRpb25zIGZvciBJL08gc2NoZWR1bGluZywgcmVzb3VyY2UgaXNvbGF0aW9uLCBvciBwZXJmb3JtYW5jZS4gV2hhdCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyB3aWxsIHRoaXMgaW1wYWN0PyBXaGF0IG1vZHVsZXMgd2lsbCBiZSBpbnZvbHZlZD8gVGhpcyBpcyB3aGVyZSBJIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzA5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6NDM6MDEuMTg1MDE0MDYzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDU5MDcyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0NHUk9VUF9JT0NPU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9LY29uZmlnPTE0NT1jb25maWcgQkxLX0NHUk9VUF9GQ19BUFBJRFxcbi0tXFxuYmxvY2svS2NvbmZpZy0xNTMtXFxuYmxvY2svS2NvbmZpZzoxNTQ6Y29uZmlnIEJMS19DR1JPVVBfSU9DT1NUXFxuYmxvY2svS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIGNvc3QgbW9kZWwgYmFzZWQgY2dyb3VwIElPIGNvbnRyb2xsZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjAxLjMwNTYwOTk2MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MTIxOTg5ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBCTEtfQ0dST1VQX0lPQ09TVCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgQkxLX0NHUk9VUF9JT0NPU1RgLiBUaW1lIHRvIG1lbnRhbGx5IHRyYWNlIGl0cyBpbXBsaWNhdGlvbnMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZmVhdHVyZSAqZG9lcyouIEl0J3MgYWJvdXQgSS9PIGNvc3QgYWNjb3VudGluZyB3aXRoaW4gY2dyb3Vwcywgd2hpY2ggbWVhbnMgaXQncyBmdW5kYW1lbnRhbCB0byByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBpc29sYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGl0IHNsb3RzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGRlc2lnbi5cblxuSW1tZWRpYXRlbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgdmFyaW91cyBjb21wb25lbnRzIHRoYXQgd291bGQgKnJlbHkqIG9uIHRoaXMuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYW55dGhpbmcgaW52b2x2ZWQgaW4gSS9PIHNjaGVkdWxpbmcsIHRocm90dGxpbmcsIGFuZCBhY2NvdW50aW5nLiBUaGUgYmxvY2sgbGF5ZXIgaXMgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBtZW50YWxseSBtYXAgdGhlIGNhbGwgcGF0aHMuLi4gSXMgdGhpcyB0aWVkIGludG8gdGhlIGVsZXZhdG9yIGNvZGU/IFRoZSByZXF1ZXN0IHF1ZXVlIG1hbmFnZW1lbnQ/IEFyZSB3ZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBkaXNrIHNjaGVkdWxlciBhdCBtdWx0aXBsZSBsZXZlbHM/IEhvdyBkb2VzIHRoaXMgaW50ZWdyYXRlIHdpdGggdGhlIHVuZGVybHlpbmcgYmxvY2sgZGV2aWNlIGRyaXZlcnM/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgc3RvcmFnZSB0ZWNobm9sb2dpZXMgdGhhdCBhcmUgcGFydGljdWxhcmx5IHRhcmdldGVkIGJ5IHRoaXM/IFNvbGlkIHN0YXRlIGRyaXZlcz8gTlZNZT9cblxuVGhlbiwgdGhlIGNncm91cCBpbnRlZ3JhdGlvbiBpdHNlbGYuIFdoaWNoIGNncm91cCBzdWJzeXN0ZW1zIGRvZXMgdGhpcyBpbnRlcmFjdCB3aXRoPyBgYmxraW9gIG9mIGNvdXJzZS4gSXMgdGhlcmUgYW55IGxlYWthZ2Ugb2YgdGhpcyBpbmZvcm1hdGlvbiB0byBvdGhlciBzdWJzeXN0ZW1zLCBsaWtlIGBjcHVgIG9yIGBtZW1vcnlgLCBpbmRpcmVjdGx5IHZpYSB0aGUgSS9PIGNvc3QgbWV0cmljPyBJIHNob3VsZCBjaGVjayBhbmQgc2VlIGlmIHRoZXJlIGlzIGFueSBkZXBlbmRlbmN5IG9uIHRoZSBJL08gc2NoZWR1bGVycyBjaG9zZW4uIEFyZSB0aGVyZSBhbnkgcGFydGljdWxhciBpbXBsaWNhdGlvbnMgZm9yIHRoZSBjb250cm9sIGdyb3VwcyBoaWVyYXJjaHk/IERvZXMgdGhpcyByZWx5IG9uIGFueSBzcGVjaWZpYyBjZ3JvdXAgY29udHJvbGxlciBkYXRhIHN0cnVjdHVyZXMgb3IgQVBJcz9cblxuSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgdGhlIHVzZXJzcGFjZSBpbXBsaWNhdGlvbnMuIEhvdyBpcyB0aGlzIGV4cG9zZWQgdG8gdXNlcnMgdGhyb3VnaCB0aGUgYGJsa2lvYCBjZ3JvdXAgaW50ZXJmYWNlPyBXaGF0IHRvb2xzIG9yIHV0aWxpdGllcyAobGlrZSBgY2dzdGF0c2ApIG1pZ2h0IGRlcGVuZCBvbiB0aGlzIGluZm9ybWF0aW9uPyBXaGF0IGFib3V0IGRlYnVnZ2luZyBhbmQgdHJhY2luZz8gQXJlIHRoZXJlIGFueSB0cmFjZXBvaW50cyBvciBwZXJmIGV2ZW50cyB0aGF0IHJlbHkgb24gdGhpcyBmdW5jdGlvbmFsaXR5PyBIb3cgZG9lcyB0aGlzIGluZmx1ZW5jZSB0aGUgd2F5IHBlcmZvcm1hbmNlIGlzIG1lYXN1cmVkP1xuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gcHJvYmFibHkgY2hlY2sgb3V0IHRoZSBjb2RlIGl0c2VsZiwgYnV0IHRoaXMgaXMgdGhlIGdlbmVyYWwgbWVudGFsIG1hcCB0aGF0IEkgc2hvdWxkIHN0YXJ0IHdpdGguIEknbGwgbmVlZCB0byBsb29rIGZvciBgI2lmZGVmYCBibG9ja3MsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIG1heWJlIGV2ZW4gZGVwZW5kZW5jeSBncmFwaHMsIHRvIHNlZSBob3cgaXQgYWxsIGZpdHMgdG9nZXRoZXIuIFRoZSBnb2FsIGlzIHRvIGJ1aWxkIGEgc29saWQgbWVudGFsIG1vZGVsIG9mIHRoZSBmZWF0dXJlLCBpbmNsdWRpbmcgaXRzIHNjb3BlLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgaXRzIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIGFuZCB1c2Vyc3BhY2UgdG9vbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1OTcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0MzowNS43MTc4MTE0NDdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDkxOTcwNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19DR1JPVVBfSU9DT1NUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9LY29uZmlnPTE0NT1jb25maWcgQkxLX0NHUk9VUF9GQ19BUFBJRFxcbi0tXFxuYmxvY2svS2NvbmZpZy0xNTMtXFxuYmxvY2svS2NvbmZpZzoxNTQ6Y29uZmlnIEJMS19DR1JPVVBfSU9DT1NUXFxuYmxvY2svS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIGNvc3QgbW9kZWwgYmFzZWQgY2dyb3VwIElPIGNvbnRyb2xsZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjA5LjU2NzAxNTUyOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTUwMzY2MzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBEaXZlKipcblxuT2theSwgdGltZSB0byBnZXQgZG93biB0byBidXNpbmVzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgYmxvY2svS2NvbmZpZ2AgZmlsZSBhIGxpdHRsZSBiZXR0ZXIuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGp1bXAgdG8gYXJvdW5kIGxpbmUgMTU0IHRvIHNlZSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuIEknbSBob3BpbmcgdG8gcGlucG9pbnQgYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gc2V0dGluZyBvciBkZXBlbmRlbmN5IEknbSBpbnRlcmVzdGVkIGluIGFuZCB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciBibG9jayBzdWJzeXN0ZW0gY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgdGlkYml0cyB0aGF0IHNlY3Rpb24gaG9sZHMuIEl0IGNvdWxkIGJlIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBkcml2ZXIsIGEgcGVyZm9ybWFuY2UgZmVhdHVyZSwgb3IgcGVyaGFwcyBhIHNlY3VyaXR5IGFzcGVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIxMiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjEyLjUxNzM4NjAxMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYmxvY2svS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNDU6XFx0Y29uZmlnIEJMS19DR1JPVVBfRkNfQVBQSURcXG4gMTQ2OlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IHRvIHRyYWNrIEZDIEkvTyBUcmFmZmljIGFjcm9zcyBjZ3JvdXAgYXBwbGljYXRpb25zXFxcIlxcbiAxNDc6XFx0XFx0ZGVwZW5kcyBvbiBCTEtfQ0dST1VQIFxcdTAwMjZcXHUwMDI2IE5WTUVfRkNcXG4gMTQ4OlxcdFxcdGhlbHBcXG4gMTQ5OlxcdFxcdCAgRW5hYmxpbmcgdGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgc3VwcG9ydCB0byB0cmFjayBGQyBJL08gdHJhZmZpYyBhY3Jvc3NcXG4gMTUwOlxcdFxcdCAgY2dyb3VwIGFwcGxpY2F0aW9ucy4gSXQgZW5hYmxlcyB0aGUgRmFicmljIGFuZCB0aGUgc3RvcmFnZSB0YXJnZXRzIHRvXFxuIDE1MTpcXHRcXHQgIGlkZW50aWZ5LCBtb25pdG9yLCBhbmQgaGFuZGxlIEZDIHRyYWZmaWMgYmFzZWQgb24gVk0gdGFncyBieSBpbnNlcnRpbmdcXG4gMTUyOlxcdFxcdCAgYXBwbGljYXRpb24gc3BlY2lmaWMgaWRlbnRpZmljYXRpb24gaW50byB0aGUgRkMgZnJhbWUuXFxuIDE1MzpcXHRcXG4gMTU0OlxcdGNvbmZpZyBCTEtfQ0dST1VQX0lPQ09TVFxcbiAxNTU6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIGNvc3QgbW9kZWwgYmFzZWQgY2dyb3VwIElPIGNvbnRyb2xsZXJcXFwiXFxuIDE1NjpcXHRcXHRkZXBlbmRzIG9uIEJMS19DR1JPVVBcXG4gMTU3OlxcdFxcdHNlbGVjdCBCTEtfUlFfQUxMT0NfVElNRVxcbiAxNTg6XFx0XFx0aGVscFxcbiAxNTk6XFx0XFx0RW5hYmxpbmcgdGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgLndlaWdodCBpbnRlcmZhY2UgZm9yIGNvc3RcXG4gMTYwOlxcdFxcdG1vZGVsIGJhc2VkIHByb3BvcnRpb25hbCBJTyBjb250cm9sLiAgVGhlIElPIGNvbnRyb2xsZXJcXG4gMTYxOlxcdFxcdGRpc3RyaWJ1dGVzIElPIGNhcGFjaXR5IGJldHdlZW4gZGlmZmVyZW50IGdyb3VwcyBiYXNlZCBvblxcbiAxNjI6XFx0XFx0dGhlaXIgc2hhcmUgb2YgdGhlIG92ZXJhbGwgd2VpZ2h0IGRpc3RyaWJ1dGlvbi5cXG4gMTYzOlxcdFxcbiAxNjQ6XFx0Y29uZmlnIEJMS19DR1JPVVBfSU9QUklPXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjEyLjUxNzQ5MTcxMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDEzMjExMzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgQmxvY2sgSS9PIENvc3QgYW5kIGl0cyBEZXBlbmRlbmNpZXMqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYEJMS19DR1JPVVBfSU9DT1NUYC4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQsIG9idmlvdXNseSwgaXMgdGhhdCBpdCBoaW5nZXMgb24gYEJMS19DR1JPVVBgLiBObyBzdXJwcmlzZSB0aGVyZTsgSS9PIGNvc3RpbmcgaXMgYnVpbHQgb24gdGhlIGZvdW5kYXRpb24gb2YgY29udHJvbCBncm91cHMsIG9mIGNvdXJzZS4gTm93LCBiZWZvcmUgSSBkaXZlIGRlZXBlciBpbnRvIGBCTEtfQ0dST1VQX0lPQ09TVGAgaXRzZWxmLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUgb2YgYEJMS19DR1JPVVBgIGRlcGVuZGVuY2llcy4gV2hhdCBhcmUgdGhlIGtleSBjb21wb25lbnRzIGl0IHJlbGllcyBvbj8gV2hhdCBvdGhlciBmbGFncyBvciBzZXR0aW5ncyBhcmUgZW50YW5nbGVkIHdpdGggaXQ/IFRpbWUgdG8gcXVpY2tseSB0cmFjZSB0aG9zZSBkZXBlbmRlbmNpZXMgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBzdXJwcmlzZXMgZG93biB0aGUgbGluZS4gSSB3YW50IGEgY2xlYW4sIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGxhbmRzY2FwZSBiZWZvcmUgSSBnbyBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzI4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0MzoxNS41MzA3MDU3MjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjE0ODQ2NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19DR1JPVVAkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjE1LjcxNjg2MjgxM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTUwMjQ3MjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIG5haWwgZG93biB3aGVyZSBgY29uZmlnIEJMS19DR1JPVVBgIGxpdmVzIGluIHRoZSBrZXJuZWwncyBLY29uZmlnIHN5c3RlbS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IGl0J3MgbGlrZWx5IHJlbGF0ZWQgdG8gYmxvY2sgZGV2aWNlIG1hbmFnZW1lbnQuIFRoZXJlZm9yZSwgdGhlIGZpcnN0IGxvZ2ljYWwgcGxhY2UgdG8gY2hlY2sgaXMgcHJvYmFibHkgdGhlIGBibG9jay9LY29uZmlnYCBmaWxlLiBJJ2xsIG5lZWQgdG8gcnVuIGEgc2VhcmNoIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlIHRvIGJlIGNlcnRhaW4sIHRob3VnaC4gTGV0J3Mgc2VlIGlmIHRoYXQncyB3aGVyZSB0aGUgZGVmaW5pdGlvbiBpcyBoaWRpbmcuIFRpbWUgdG8gZmlyZSB1cCB0aGUgc2VhcmNoIHRvb2xzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5OTQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0MzoxOC42NjcxMTM1MDZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTM2OTIxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0NHUk9VUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL0tjb25maWc9Mzk9Y29uZmlnIEJMS19SUV9BTExPQ19USU1FXFxuLS1cXG5ibG9jay9LY29uZmlnLTQxLVxcbmJsb2NrL0tjb25maWc6NDI6Y29uZmlnIEJMS19DR1JPVVBfUldTVEFUXFxuYmxvY2svS2NvbmZpZy00My1cXHRib29sXFxuYmxvY2svS2NvbmZpZy00NC1cXG5ibG9jay9LY29uZmlnOjQ1OmNvbmZpZyBCTEtfQ0dST1VQX1BVTlRfQklPXFxuYmxvY2svS2NvbmZpZy00Ni1cXHRib29sXFxuLS1cXG5ibG9jay9LY29uZmlnPTEyNz1jb25maWcgQkxLX1dCVF9NUVxcbi0tXFxuYmxvY2svS2NvbmZpZy0xMzMtXFxuYmxvY2svS2NvbmZpZzoxMzQ6Y29uZmlnIEJMS19DR1JPVVBfSU9MQVRFTkNZXFxuYmxvY2svS2NvbmZpZy0xMzUtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIGxhdGVuY3kgYmFzZWQgY2dyb3VwIElPIHByb3RlY3Rpb25cXFwiXFxuLS1cXG5ibG9jay9LY29uZmlnLTE0NC1cXG5ibG9jay9LY29uZmlnOjE0NTpjb25maWcgQkxLX0NHUk9VUF9GQ19BUFBJRFxcbmJsb2NrL0tjb25maWctMTQ2LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IHRvIHRyYWNrIEZDIEkvTyBUcmFmZmljIGFjcm9zcyBjZ3JvdXAgYXBwbGljYXRpb25zXFxcIlxcbi0tXFxuYmxvY2svS2NvbmZpZy0xNTMtXFxuYmxvY2svS2NvbmZpZzoxNTQ6Y29uZmlnIEJMS19DR1JPVVBfSU9DT1NUXFxuYmxvY2svS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIGNvc3QgbW9kZWwgYmFzZWQgY2dyb3VwIElPIGNvbnRyb2xsZXJcXFwiXFxuLS1cXG5ibG9jay9LY29uZmlnLTE2My1cXG5ibG9jay9LY29uZmlnOjE2NDpjb25maWcgQkxLX0NHUk9VUF9JT1BSSU9cXG5ibG9jay9LY29uZmlnLTE2NS1cXHRib29sIFxcXCJDZ3JvdXAgSS9PIGNvbnRyb2xsZXIgZm9yIGFzc2lnbmluZyBhbiBJL08gcHJpb3JpdHkgY2xhc3NcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjE4Ljc3ODQ4ODA1NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzQ4NzczMTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLY29uZmlnIEV4cGxvcmF0aW9uIEJlZ2lucyoqXG5cbkFscmlnaHQsIHRoZSBpbml0aWFsIGh1bmNoIHBvaW50cyB0b3dhcmRzIG5lZWRpbmcgYSBjb21wcmVoZW5zaXZlIHN3ZWVwLiBJJ20gZ29pbmcgdG8ga2ljayB0aGluZ3Mgb2ZmIGJ5IHNlYXJjaGluZyB3aXRoaW4gdGhlICplbnRpcmUqIEtjb25maWcgdHJlZS4gSSBrbm93IHRoZXJlIGFyZSBwb3RlbnRpYWxseSBodW5kcmVkcywgbWF5YmUgdGhvdXNhbmRzLCBvZiB0aGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIHNjYXR0ZXJlZCBhY3Jvc3MgdGhlIGNvZGViYXNlLCBidXQgSSBuZWVkIHRvIHN0YXJ0IGJyb2FkLiBUaGlzIGFsbC1lbmNvbXBhc3Npbmcgc2VhcmNoIGlzIHRoZSBuZWNlc3NhcnkgZmlyc3Qgc3RlcCB0byBnZXQgYSBsYXkgb2YgdGhlIGxhbmQsIHdpdGhvdXQgbWFraW5nIGFueSBhc3N1bXB0aW9ucyBhYm91dCB3aGVyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIG1pZ2h0IGJlIGRlZmluZWQgb3IgcmVmZXJlbmNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU1MCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjIxLjUyNzI2NDU0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTk4ODA0NjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTEtfQ0dST1VQJFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5pdC9LY29uZmlnPTEwOTk9Y29uZmlnIE1FTUNHX1YxXFxuLS1cXG5pbml0L0tjb25maWctMTExNS1cXG5pbml0L0tjb25maWc6MTExNjpjb25maWcgQkxLX0NHUk9VUFxcbmluaXQvS2NvbmZpZy0xMTE3LVxcdGJvb2wgXFxcIklPIGNvbnRyb2xsZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjI2LjEyNjA3NjExM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODE4NTkyMTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIHBhcnRpY3VsYXIgYXNwZWN0IG9mIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSdtIHRoaW5raW5nLCBgaW5pdC9LY29uZmlnYCBpcyB0aGUgcGxhY2UgdG8gc3RhcnQsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMTE2LiBUaGF0IGFyZWEgbGlrZWx5IGRlYWxzIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBhIHBhcnRpY3VsYXIgbW9kdWxlIEknbSBpbnRlcmVzdGVkIGluLiBJIHNob3VsZCBjaGVjayB0aGF0IHNlY3Rpb24gZm9yIHRoZSByZWxldmFudCBkZWZpbml0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUgd2hhdCBnZW1zIGxpZSBpbiB3YWl0IGluIHRoYXQgcG9ydGlvbiBvZiBgS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3ODUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0MzoyOC45NDQ2NzExOThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5MTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluaXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTEwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMTEwOlxcdFxcdCAgUGxlYXNlIG5vdGUgdGhhdCBmZWF0dXJlIHNldCBvZiB0aGUgbGVnYWN5IG1lbW9yeSBjb250cm9sbGVyIGlzIGxpa2VseVxcbjExMTE6XFx0XFx0ICBnb2luZyB0byBzaHJpbmsgZHVlIHRvIGRlcHJlY2F0aW9uIHByb2Nlc3MuIE5ldyBkZXBsb3ltZW50cyB3aXRoIHYxXFxuMTExMjpcXHRcXHQgIGNvbnRyb2xsZXIgYXJlIGhpZ2hseSBkaXNjb3VyYWdlZC5cXG4xMTEzOlxcdFxcbjExMTQ6XFx0XFx0ICBTYXkgTiBpZiB1bnN1cmUuXFxuMTExNTpcXHRcXG4xMTE2OlxcdGNvbmZpZyBCTEtfQ0dST1VQXFxuMTExNzpcXHRcXHRib29sIFxcXCJJTyBjb250cm9sbGVyXFxcIlxcbjExMTg6XFx0XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbjExMTk6XFx0XFx0ZGVmYXVsdCBuXFxuMTEyMDpcXHRcXHRoZWxwXFxuMTEyMTpcXHRcXHRHZW5lcmljIGJsb2NrIElPIGNvbnRyb2xsZXIgY2dyb3VwIGludGVyZmFjZS4gVGhpcyBpcyB0aGUgY29tbW9uXFxuMTEyMjpcXHRcXHRjZ3JvdXAgaW50ZXJmYWNlIHdoaWNoIHNob3VsZCBiZSB1c2VkIGJ5IHZhcmlvdXMgSU8gY29udHJvbGxpbmdcXG4xMTIzOlxcdFxcdHBvbGljaWVzLlxcbjExMjQ6XFx0XFxuMTEyNTpcXHRcXHRDdXJyZW50bHksIENGUSBJTyBzY2hlZHVsZXIgdXNlcyBpdCB0byByZWNvZ25pemUgdGFzayBncm91cHMgYW5kXFxuMTEyNjpcXHRcXHRjb250cm9sIGRpc2sgYmFuZHdpZHRoIGFsbG9jYXRpb24gKHByb3BvcnRpb25hbCB0aW1lIHNsaWNlIGFsbG9jYXRpb24pXFxuMTEyNzpcXHRcXHR0byBzdWNoIHRhc2sgZ3JvdXBzLiBJdCBpcyBhbHNvIHVzZWQgYnkgYmlvIHRocm90dGxpbmcgbG9naWMgaW5cXG4xMTI4OlxcdFxcdGJsb2NrIGxheWVyIHRvIGltcGxlbWVudCB1cHBlciBsaW1pdCBpbiBJTyByYXRlcyBvbiBhIGRldmljZS5cXG4xMTI5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0MzoyOC45NDQ4NTIwMjhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxNjk4NTE4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBCTEtfQ0dST1VQYCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggZGVhbGluZyB3aXRoIGBCTEtfQ0dST1VQYCBmdW5kYW1lbnRhbGx5IHJlbGllcyBvbiB0aGUgYEJMT0NLYCBjb25maWd1cmF0aW9uLCB0aGF0IG11Y2ggaXMgb2J2aW91cy4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggcmVxdWlyZXMgYEJMS19DR1JPVVBgIGFuZCBgQkxLX0NHUk9VUF9JT0NPU1RgIHRvIGJlIGVuYWJsZWQsIHdoaWNoIGlzbid0IHN1cnByaXNpbmcuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgYXBwZWFycyB0byBiZSBpbiBgaW9jX3BkX3N0YXQoKWAgd2hlcmUgYSBsb2NrIGlzIGFkZGVkLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNvbnNpZGVyIGZ1enppbmcgdGhpcyBjaGFuZ2UsIGFuZCB0aGUgZmFjdCB0aGF0IGl0IGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uLCBtYWtpbmcgaXQgYSBmdW5jdGlvbmFsIGNoYW5nZSwgY2VydGFpbmx5IHZhbGlkYXRlcyB0aGF0IGluc3RpbmN0LiBUaGUgb2J2aW91cyBmb2NhbCBzeW1ib2wgaXMgYGlvY19wZF9zdGF0YC5cblxuTm93LCBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgYGlvY19wZF9zdGF0YCBpcyBzdGF0aWMgb3Igbm90LiBBaCwgeWVzLCBpdCdzIGBzdGF0aWMgdm9pZCBpb2NfcGRfc3RhdChzdHJ1Y3QgYmxrZ19wb2xpY3lfZGF0YSAqcGQsIHN0cnVjdCBzZXFfZmlsZSAqcylgLiBXYWl0LCBpdCAqaXMqIGEgc3RhdGljIGZ1bmN0aW9uLi4uIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncy4gTm9ybWFsbHksIGEgc3RhdGljIGZ1bmN0aW9uIG1pZ2h0IGJlIGlubGluZWQsIG9yIG1pZ2h0IG5vdCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sLiBCdXQgaGFuZyBvbiwgaXQncyBhY3R1YWxseSB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlcjogYC5wZF9zdGF0X2ZuID0gaW9jX3BkX3N0YXQsYC4gVGhhdCdzIGEga2V5IGRldGFpbCEgQmVjYXVzZSBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbiwgaXQgKndvbid0KiBiZSBjb21wbGV0ZWx5IGlubGluZWQgYW5kIHNob3VsZCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sLCBldmVuIGlmIGl0J3Mgc3RhdGljLlxuXG5UaGUgYmlnZ2VyIGlzc3VlIGlzIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiB0YXJnZXQgaXQgZGlyZWN0bHkgaWYgaXQncyBzdGF0aWMuIFRoYXQncyB0aGUgcmVhbCBxdWVzdGlvbi4gSXMgdGhlcmUgYW4gZW50cnkgcG9pbnQ/IEFscmlnaHQsIGxldCBtZSB0cmFjZSB0aGlzLiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHZpYSBgcGRfc3RhdF9mbmAgZnJvbSBgYmxrY2dfcHJpbnRfc3RhdGAuIFJpZ2h0LCBzbyBgYmxrY2dfcHJpbnRfc3RhdGAgaXMgdGhlIGVudHJ5IHBvaW50LCBhbmQgdGhhdCBmdW5jdGlvbiB0aGVuIGNhbGxzIG91ciBgaW9jX3BkX3N0YXRgIHRocm91Z2ggdGhlIGZ1bmN0aW9uIHBvaW50ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNDUsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0MzozNC42NjE4NDAxNDdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzA0Nzg4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwZF9zdGF0X2ZuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstY2dyb3VwLmM9MTEyOT1zdGF0aWMgdm9pZCBibGtjZ19wcmludF9vbmVfc3RhdChzdHJ1Y3QgYmxrY2dfZ3EgKmJsa2csIHN0cnVjdCBzZXFfZmlsZSAqcylcXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMTcxLVxcbmJsb2NrL2Jsay1jZ3JvdXAuYzoxMTcyOlxcdFxcdGlmICghYmxrZy1cXHUwMDNlcGRbaV0gfHwgIXBvbC1cXHUwMDNlcGRfc3RhdF9mbilcXG5ibG9jay9ibGstY2dyb3VwLmMtMTE3My1cXHRcXHRcXHRjb250aW51ZTtcXG5ibG9jay9ibGstY2dyb3VwLmMtMTE3NC1cXG5ibG9jay9ibGstY2dyb3VwLmM6MTE3NTpcXHRcXHRwb2wtXFx1MDAzZXBkX3N0YXRfZm4oYmxrZy1cXHUwMDNlcGRbaV0sIHMpO1xcbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMTc2LVxcdH1cXG4tLVxcbmJsb2NrL2Jsay1jZ3JvdXAuaD0xNzQ9c3RydWN0IGJsa2NnX3BvbGljeSB7XFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmgtMTg5LVxcdGJsa2NnX3BvbF9yZXNldF9wZF9zdGF0c19mblxcdCpwZF9yZXNldF9zdGF0c19mbjtcXG5ibG9jay9ibGstY2dyb3VwLmg6MTkwOlxcdGJsa2NnX3BvbF9zdGF0X3BkX2ZuXFx0XFx0KnBkX3N0YXRfZm47XFxuYmxvY2svYmxrLWNncm91cC5oLTE5MS19O1xcbi0tXFxuYmxvY2svYmxrLWlvY29zdC5jPTM1OTM9c3RhdGljIHN0cnVjdCBibGtjZ19wb2xpY3kgYmxrY2dfcG9saWN5X2lvY29zdCA9IHtcXG4tLVxcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNTk5LVxcdC5wZF9mcmVlX2ZuXFx0PSBpb2NfcGRfZnJlZSxcXG5ibG9jay9ibGstaW9jb3N0LmM6MzYwMDpcXHQucGRfc3RhdF9mblxcdD0gaW9jX3BkX3N0YXQsXFxuYmxvY2svYmxrLWlvY29zdC5jLTM2MDEtfTtcXG4tLVxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYz0xMDU5PXN0YXRpYyBzdHJ1Y3QgYmxrY2dfcG9saWN5IGJsa2NnX3BvbGljeV9pb2xhdGVuY3kgPSB7XFxuLS1cXG5ibG9jay9ibGstaW9sYXRlbmN5LmMtMTA2NC1cXHQucGRfZnJlZV9mblxcdD0gaW9sYXRlbmN5X3BkX2ZyZWUsXFxuYmxvY2svYmxrLWlvbGF0ZW5jeS5jOjEwNjU6XFx0LnBkX3N0YXRfZm5cXHQ9IGlvbGF0ZW5jeV9wZF9zdGF0LFxcbmJsb2NrL2Jsay1pb2xhdGVuY3kuYy0xMDY2LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjM0LjgxODg5MzI4NVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDc0MzAxNDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBibGtjZ19wcmludF9vbmVfc3RhdGAqKlxuXG5SaWdodCwgYGJsa2NnX3ByaW50X29uZV9zdGF0YCBpcyBhIHN0YXRpYyBmdW5jdGlvbiBpbiB0aGUgYmxvY2sgSS9PIGNvbnRyb2xsZXIgY29kZS4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFN0YXRpYyBmdW5jdGlvbnMgbWVhbiB0aGV5J3JlIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlaXIgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggZ2VuZXJhbGx5IHN1Z2dlc3RzIGEgdGFyZ2V0ZWQgcHVycG9zZSBhbmQgbGltaXRlZCBzY29wZS4gSXQncyBhIGtleSBpbmRpY2F0b3IgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBmdW5jdGlvbidzIGV4YWN0IHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB3aG8ncyBhY3R1YWxseSAqdXNpbmcqIHRoaXMgdGhpbmcuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgaXMgYWJzb2x1dGVseSBjcnVjaWFsIHRvIGdyYXNwaW5nIGl0cyBmdW5jdGlvbiBhbmQgcG90ZW50aWFsIGltcGFjdC4gTGV0J3MgZGlnIGluIGFuZCB0cmFjayBkb3duIHRoZSBjYWxsZXJzLiBLbm93aW5nIHdobydzIHVzaW5nIGl0IHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGFjY29tcGxpc2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NjUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0MzozNy44OTMxOTkzNjdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjUwNTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJsa2NnX3ByaW50X29uZV9zdGF0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstY2dyb3VwLmM9MTA4OT1zdGF0aWMgdm9pZCBibGtjZ19maWxsX3Jvb3RfaW9zdGF0cyh2b2lkKVxcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jLTExMjgtXFxuYmxvY2svYmxrLWNncm91cC5jOjExMjk6c3RhdGljIHZvaWQgYmxrY2dfcHJpbnRfb25lX3N0YXQoc3RydWN0IGJsa2NnX2dxICpibGtnLCBzdHJ1Y3Qgc2VxX2ZpbGUgKnMpXFxuYmxvY2svYmxrLWNncm91cC5jLTExMzAte1xcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jPTExODE9c3RhdGljIGludCBibGtjZ19wcmludF9zdGF0KHN0cnVjdCBzZXFfZmlsZSAqc2YsIHZvaWQgKnYpXFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtMTE5Mi1cXHRobGlzdF9mb3JfZWFjaF9lbnRyeShibGtnLCBcXHUwMDI2YmxrY2ctXFx1MDAzZWJsa2dfbGlzdCwgYmxrY2dfbm9kZSlcXG5ibG9jay9ibGstY2dyb3VwLmM6MTE5MzpcXHRcXHRibGtjZ19wcmludF9vbmVfc3RhdChibGtnLCBzZik7XFxuYmxvY2svYmxrLWNncm91cC5jLTExOTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjM3Ljk3NDQ3MjQ5NloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc0MjQ2MDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYGJsa2NnX3ByaW50X3N0YXRgKipcblxuT2theSwgc28gYGJsa2NnX3ByaW50X3N0YXRgIGlzIGFsc28gc3RhdGljLiBSaWdodCwgdGhhdCdzIGEgY2x1ZS4gU3RhdGljIG1lYW5zIGl0J3MgbGltaXRlZCBpbiBzY29wZSwgbGlrZWx5IGludGVybmFsIHRvIGl0cyBjb21waWxhdGlvbiB1bml0LiBTbywgdGhlIGtleSBoZXJlIGlzIHRvIGZpbmQgdGhlIGNhbGxlcnMuIEl0J3MgY29uZmluZWQsIHdoaWNoIG1lYW5zIHRoZSBudW1iZXIgb2YgY2FsbCBzaXRlcyBpcyBwcm9iYWJseSBwcmV0dHkgc21hbGwgYW5kIG1hbmFnZWFibGUuIFRpbWUgdG8gZmlyZSB1cCB0aGUgdG9vbHMgYW5kIHF1aWNrbHkgdHJhY2UgdGhvc2UgZGVwZW5kZW5jaWVzLiBJJ20gZ3Vlc3NpbmcgaXQncyBwYXJ0IG9mIHRoZSBibG9jayBJTyBhY2NvdW50aW5nIG9yIGRlYnVnZ2luZyBpbmZyYXN0cnVjdHVyZSwgYnV0IGZpbmRpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBjb25maXJtIHRoYXQgYW5kIGdpdmUgbWUgdGhlIGZ1bGwgcGljdHVyZS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NDEsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0Mzo0MC44NDg3MjIxM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1MTU5MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJsa2NnX3ByaW50X3N0YXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL2Jsay1jZ3JvdXAuYz0xMDcwPXN0YXRpYyB2b2lkIGJsa2NnX3JzdGF0X2ZsdXNoKHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpjc3MsIGludCBjcHUpXFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtMTA4MC0gKiBjZ3JvdXBzIGFyZSBkZWZpbmVkLiBGb3IgdGhhdCByZWFzb24sIGNzc19yc3RhdF9mbHVzaCBpblxcbmJsb2NrL2Jsay1jZ3JvdXAuYzoxMDgxOiAqIGJsa2NnX3ByaW50X3N0YXQgZG9lcyBub3QgYWN0dWFsbHkgZmlsbCBvdXQgdGhlIGlvc3RhdCBpbiB0aGUgcm9vdFxcbmJsb2NrL2Jsay1jZ3JvdXAuYy0xMDgyLSAqIGNncm91cCdzIGJsa2NnX2dxLlxcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jPTExMjk9c3RhdGljIHZvaWQgYmxrY2dfcHJpbnRfb25lX3N0YXQoc3RydWN0IGJsa2NnX2dxICpibGtnLCBzdHJ1Y3Qgc2VxX2ZpbGUgKnMpXFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmMtMTE4MC1cXG5ibG9jay9ibGstY2dyb3VwLmM6MTE4MTpzdGF0aWMgaW50IGJsa2NnX3ByaW50X3N0YXQoc3RydWN0IHNlcV9maWxlICpzZiwgdm9pZCAqdilcXG5ibG9jay9ibGstY2dyb3VwLmMtMTE4Mi17XFxuLS1cXG5ibG9jay9ibGstY2dyb3VwLmM9MTE5OD1zdGF0aWMgc3RydWN0IGNmdHlwZSBibGtjZ19maWxlc1tdID0ge1xcbi0tXFxuYmxvY2svYmxrLWNncm91cC5jLTEyMDAtXFx0XFx0Lm5hbWUgPSBcXFwic3RhdFxcXCIsXFxuYmxvY2svYmxrLWNncm91cC5jOjEyMDE6XFx0XFx0LnNlcV9zaG93ID0gYmxrY2dfcHJpbnRfc3RhdCxcXG5ibG9jay9ibGstY2dyb3VwLmMtMTIwMi1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDo0Mzo0MS4wMjM4ODY4NThaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ3NjkwMDk5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJsb2NrIEkvTyBDb3N0IFN0YXRpc3RpY3MgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgYmxrY2dfZmlsZXNgIHN0dWZmLCB3aGljaCBpcyByZWdpc3RlcmVkIHdpdGggdGhlIGNncm91cCBzdWJzeXN0ZW0uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBlbnRyeSBwb2ludCBmb3IgdGhpcyBpcyBsaWtlbHkgcmVhZGluZyB0aGUgYHN0YXRgIGZpbGUgYXNzb2NpYXRlZCB3aXRoIGEgYmxvY2sgY2dyb3VwLiBJJ3ZlIHBpbnBvaW50ZWQgYGlvY19wZF9zdGF0YCBhcyBhIGtleSBmdW5jdGlvbiBoZXJlLiBUaGUgZmFjdCB0aGF0IGl0J3MgYWRkcmVzcy10YWtlbiBhbmQgdXNlZCBhcyBhIGNhbGxiYWNrIGlzIGNydWNpYWw7IHRoYXQgbWVhbnMgaXQgd29uJ3QgYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIHdpbGwgaGF2ZSBpdHMgb3duIGRpc3RpbmN0IHN5bWJvbC5cblxuSSBoYWQgY29uc2lkZXJlZCBgYmxrY2dfcHJpbnRfc3RhdGAgYXMgYW4gYWx0ZXJuYXRpdmUgZm9jdXMsIGJ1dCBzaW5jZSB0aGUgcHJvbXB0IGVtcGhhc2l6ZXMgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLCBgaW9jX3BkX3N0YXRgIGlzIGFjdHVhbGx5IHdoYXQgSSdtIGxvb2tpbmcgZm9yIC0gZXZlbiB0aG91Z2ggaXQncyBzdGF0aWMgYW5kIGFkZHJlc3MgdGFrZW4sIGl0IGlzbid0IGlubGluZWQsIGFuZCBpdCdzIGFsc28gdGhlIHNwZWNpZmljIGZ1bmN0aW9uIHRoYXQgd2FzIG1vZGlmaWVkLiBTbywgYGlvY19wZF9zdGF0YCBpcyB0aGUgcmlnaHQgY2hvaWNlLlxuXG5Ob3csIGJlZm9yZSBJIHByb2NlZWQsIEkgbmVlZCB0byBjaGVjayBmb3IgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIFRoZSBwcm9tcHQgbWVudGlvbmVkIGBCTEtfQ0dST1VQX0lPQ09TVGAsIHdoaWNoIGRlcGVuZHMgb24gYEJMS19DR1JPVVBgLCBhbmQgYEJMS19DR1JPVVBgIGluIHR1cm4gZGVwZW5kcyBvbiBgQkxPQ0tgLiBUaHVzLCBib3RoIGBCTEtfQ0dST1VQX0lPQ09TVGAgYW5kIGBCTEtfQ0dST1VQYCB3aWxsIGJlIG5lY2Vzc2FyeSBmb3IgdGhpcyB0byB3b3JrLiBJIHNob3VsZCBkb2N1bWVudCB0aG9zZSBpbiBjYXNlIEkgbmVlZCB0byBtb2RpZnkgYW55dGhpbmcuXG5cbkZpbmFsbHksIGp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYGlvY19wZF9zdGF0YCBpcyBpbmRlZWQgdGhlICpvbmx5KiBmdW5jdGlvbiB0aGF0IHdhcyBtb2RpZmllZCBpbiB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTAyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjQ2LjUwMDc5MTY1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI5OTkxNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9jX3BkX3N0YXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svYmxrLWlvY29zdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL2Jsay1pb2Nvc3QuYz0zMDYzPXN0YXRpYyB2b2lkIGlvY19wZF9mcmVlKHN0cnVjdCBibGtnX3BvbGljeV9kYXRhICpwZClcXG4tLVxcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zMDkwLVxcbmJsb2NrL2Jsay1pb2Nvc3QuYzozMDkxOnN0YXRpYyB2b2lkIGlvY19wZF9zdGF0KHN0cnVjdCBibGtnX3BvbGljeV9kYXRhICpwZCwgc3RydWN0IHNlcV9maWxlICpzKVxcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zMDkyLXtcXG4tLVxcbmJsb2NrL2Jsay1pb2Nvc3QuYz0zNTkzPXN0YXRpYyBzdHJ1Y3QgYmxrY2dfcG9saWN5IGJsa2NnX3BvbGljeV9pb2Nvc3QgPSB7XFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmMtMzU5OS1cXHQucGRfZnJlZV9mblxcdD0gaW9jX3BkX2ZyZWUsXFxuYmxvY2svYmxrLWlvY29zdC5jOjM2MDA6XFx0LnBkX3N0YXRfZm5cXHQ9IGlvY19wZF9zdGF0LFxcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNjAxLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjQ2LjY0Mzc5NjgzOFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTMzMTYzMTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBpb2NfcGRfc3RhdGAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoLCBhbmQgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUga2V5IG1vZGlmaWNhdGlvbiBpcyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgaW9jX3BkX3N0YXRgIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgb25seSB0aGluZyBhZmZlY3RlZCBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc2NlcnRhaW4gcmVhY2hhYmlsaXR5IGluIGEgY29tbW9uIHZpcnR1YWxpemVkIHNldHRpbmcsIGFuZCB5ZXMsIGl0IHNlZW1zIFFFTVUgcHJvdmlkZXMgYm90aCBjZ3JvdXBzIGFuZCBibG9jayBkZXZpY2UgYWNjZXNzLiBJIGNhbiBzZWUgdGhpcyBiZWluZyB0cmlnZ2VyZWQgYXMgZGVzY3JpYmVkLlxuXG5UaGUgbmV4dCBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHBhdGNoIGFjdHVhbGx5ICpkbyogYW55dGhpbmcgdXNlZnVsPyBTZWVtcyBsaWtlIGl0IGRvZXMhIEl0J3MgaW1wbGVtZW50aW5nIGEgc3BpbmxvY2ssIHdoaWNoIGluZGljYXRlcyBpdCdzIGFkZHJlc3NpbmcgYSBnZW51aW5lIHJhY2UgY29uZGl0aW9uLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byByZWFkaW5nIGNncm91cCBzdGF0aXN0aWNzLiBTbywgaXQncyBhZGRpbmcgYSBsb2NraW5nIG1lY2hhbmlzbSwgd2hpY2ggdGVsbHMgbWUgdGhpcyBpcyBhZGRyZXNzaW5nIGEgY29uY3VycmVuY3kgaXNzdWUuXG5cbkFscmlnaHQsIGxldCdzIHByZXBhcmUgdGhlIGZ1enppbmcgaW5mb3JtYXRpb24uIEJhc2VkIG9uIG15IGFuYWx5c2lzLCB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBUaGUgcHJpbWFyeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGBpb2NfcGRfc3RhdGAgc3ltYm9sLCBzbyBJJ2xsIG1ha2Ugc3VyZSBpdCdzIGluIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LiBJJ2xsIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGNvbmZpZ3VyYXRpb25zLiBCb3RoIGBCTEtfQ0dST1VQYCBhbmQgYEJMS19DR1JPVVBfSU9DT1NUYCBhcmUgY3J1Y2lhbCBmb3IgdGhpcywgc2luY2UgaXQncyB0aGUgY2dyb3VwIGJsb2NrIElPIGNvc3QgY29udHJvbGxlciB0aGF0J3MgcmVsZXZhbnQuXG5cbk15IHJlYXNvbmluZyBpcyBzb2xpZDogdGhlIHBhdGNoIGludHJvZHVjZXMgYSBzcGlubG9jayB0byBgaW9jX3BkX3N0YXRgIHdpdGhpbiB0aGUgYmxvY2sgSU8gY29zdCBjZ3JvdXAgY29udHJvbGxlciwgZWZmZWN0aXZlbHkgcHJldmVudGluZyBhIHJhY2UgY29uZGl0aW9uIHdoZW4gYWNjZXNzaW5nIGNncm91cCBzdGF0aXN0aWNzLiBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQsIGNydWNpYWxseSwgaXMgcmVhY2hhYmxlIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGNoZWNrcyBhbGwgbXkgYm94ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0MTMsIk91dHB1dFRva2VucyI6MTA2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjQzOjUxLjc3Njk2Mjg3NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODYxNDc2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0NHUk9VUFwiLFxuICAgIFwiQkxLX0NHUk9VUF9JT0NPU1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpb2NfcGRfc3RhdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzcGlubG9jayB0byBgaW9jX3BkX3N0YXRgIGluIHRoZSBibG9jayBJTyBjb3N0IGNncm91cCBjb250cm9sbGVyIHRvIHByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiB3aGVuIHJlYWRpbmcgY2dyb3VwIHN0YXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19DR1JPVVBcIixcbiAgICBcIkJMS19DR1JPVVBfSU9DT1NUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW9jX3BkX3N0YXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc3BpbmxvY2sgdG8gYGlvY19wZF9zdGF0YCBpbiB0aGUgYmxvY2sgSU8gY29zdCBjZ3JvdXAgY29udHJvbGxlciB0byBwcmV2ZW50IGEgcmFjZSBjb25kaXRpb24gd2hlbiByZWFkaW5nIGNncm91cCBzdGF0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmzlnv[1] Phase: Succeeded StartedAt: 2026-08-02 20:44:03 +0000 UTC FinishedAt: 2026-08-02 20:44:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 20:44:03 +0000 UTC FinishedAt: 2026-08-02 20:44:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2] Phase: Succeeded StartedAt: 2026-08-02 20:44:03 +0000 UTC FinishedAt: 2026-08-03 00:55:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-02 20:44:03 +0000 UTC FinishedAt: 2026-08-03 00:55:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-02 20:44:04 +0000 UTC FinishedAt: 2026-08-02 20:44:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-02 20:44:04 +0000 UTC FinishedAt: 2026-08-02 20:44:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowmzlnv/series-workflowmzlnv-convert-artifact-2351012170/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-02 20:44:14 +0000 UTC FinishedAt: 2026-08-02 21:10:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-02 20:44:14 +0000 UTC FinishedAt: 2026-08-02 21:10:51 +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:*72e90c21-5bdd-4f5a-87f9-ed76c502ea43,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-workflowmzlnv/series-workflowmzlnv-convert-artifact-2351012170/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": "0d1f7597-9a3b-4b3e-88b2-32d42792b77f", "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-workflowmzlnv/series-workflowmzlnv-build-action-3212194104/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-02 20:44:14 +0000 UTC FinishedAt: 2026-08-02 21:10:41 +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:*72e90c21-5bdd-4f5a-87f9-ed76c502ea43,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-workflowmzlnv/series-workflowmzlnv-convert-artifact-2351012170/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": "0d1f7597-9a3b-4b3e-88b2-32d42792b77f", "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-workflowmzlnv/series-workflowmzlnv-build-action-3212194104/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-02 21:10:51 +0000 UTC FinishedAt: 2026-08-02 21:10:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-02 21:10:51 +0000 UTC FinishedAt: 2026-08-02 21:10:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-02 21:10:51 +0000 UTC FinishedAt: 2026-08-02 21:11:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-02 21:10:51 +0000 UTC FinishedAt: 2026-08-02 21:10:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowmzlnv/series-workflowmzlnv-convert-artifact-1325268197/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-02 21:11:01 +0000 UTC FinishedAt: 2026-08-02 21:13:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-02 21:11:01 +0000 UTC FinishedAt: 2026-08-02 21:12:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0d1f7597-9a3b-4b3e-88b2-32d42792b77f,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-workflowmzlnv/series-workflowmzlnv-build-action-3212194104/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-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-02 21:13:00 +0000 UTC FinishedAt: 2026-08-02 21:13:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-02 21:13:00 +0000 UTC FinishedAt: 2026-08-02 21:13:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-02 21:13:00 +0000 UTC FinishedAt: 2026-08-02 21:49:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-02 21:13:00 +0000 UTC FinishedAt: 2026-08-02 21:49:29 +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:*72e90c21-5bdd-4f5a-87f9-ed76c502ea43,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-workflowmzlnv/series-workflowmzlnv-convert-artifact-1325268197/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": "926c7aec-7cdb-423e-b0b9-3e432757ebaa", "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-workflowmzlnv/series-workflowmzlnv-build-action-3946893617/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-02 21:13:00 +0000 UTC FinishedAt: 2026-08-02 21:49:19 +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:*72e90c21-5bdd-4f5a-87f9-ed76c502ea43,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-workflowmzlnv/series-workflowmzlnv-convert-artifact-1325268197/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": "926c7aec-7cdb-423e-b0b9-3e432757ebaa", "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-workflowmzlnv/series-workflowmzlnv-build-action-3946893617/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-02 21:49:29 +0000 UTC FinishedAt: 2026-08-02 21:49:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-02 21:49:29 +0000 UTC FinishedAt: 2026-08-02 21:49:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-02 21:49:29 +0000 UTC FinishedAt: 2026-08-02 21:51:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-02 21:49:29 +0000 UTC FinishedAt: 2026-08-02 21:51:14 +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:*926c7aec-7cdb-423e-b0b9-3e432757ebaa,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-workflowmzlnv/series-workflowmzlnv-build-action-3946893617/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-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-02 21:51:23 +0000 UTC FinishedAt: 2026-08-03 00:55:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-02 21:51:23 +0000 UTC FinishedAt: 2026-08-03 00:55:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"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:*0d1f7597-9a3b-4b3e-88b2-32d42792b77f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*926c7aec-7cdb-423e-b0b9-3e432757ebaa,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-workflowmzlnv/series-workflowmzlnv-build-action-3212194104/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-workflowmzlnv/series-workflowmzlnv-build-action-3946893617/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-02 21:51:23 +0000 UTC FinishedAt: 2026-08-02 21:51:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-02 21:51:23 +0000 UTC FinishedAt: 2026-08-02 21:51:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"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-workflowmzlnv/series-workflowmzlnv-convert-artifact-4261655914/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-02 21:51:23 +0000 UTC FinishedAt: 2026-08-02 21:51:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-02 21:51:23 +0000 UTC FinishedAt: 2026-08-02 21:51:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-02 21:51:23 +0000 UTC FinishedAt: 2026-08-02 21:51:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-02 21:51:34 +0000 UTC FinishedAt: 2026-08-03 00:55:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmzlnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ioc_pd_stat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_CGROUP","BLK_CGROUP_IOCOST"],"series_id":"2c5e54d8-5a0b-45fa-bb17-6893c9d5875e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-02 21:51:34 +0000 UTC FinishedAt: 2026-08-03 00:55:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0d1f7597-9a3b-4b3e-88b2-32d42792b77f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*926c7aec-7cdb-423e-b0b9-3e432757ebaa,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-workflowmzlnv/series-workflowmzlnv-build-action-3212194104/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-workflowmzlnv/series-workflowmzlnv-build-action-3946893617/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-workflowmzlnv/series-workflowmzlnv-convert-artifact-4261655914/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,}