Name: series-workflowsqmhz Phase: Succeeded StartedAt: 2026-08-03 14:35:06 +0000 UTC FinishedAt: 2026-08-03 18:44:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[0] Phase: Succeeded StartedAt: 2026-08-03 14:35:06 +0000 UTC FinishedAt: 2026-08-03 14:55:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 14:35:06 +0000 UTC FinishedAt: 2026-08-03 14:55:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "c6da675d-3666-4711-8f07-38faae1a6ec6" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "jbd2_journal_wait_updates", "jbd2_journal_commit_transaction", "jbd2_journal_lock_updates" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzJiMzNDssCiAgICAmIzM0O2piZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb24mIzM0OywKICAgICYjMzQ7amJkMl9qb3VybmFsX2xvY2tfdXBkYXRlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb29wIGNvbmRpdGlvbiBpbiBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AsIGEgY29yZSBzeW5jaHJvbml6YXRpb24gZnVuY3Rpb24gaW4gdGhlIEpCRDIgam91cm5hbGluZyBsYXllciB1c2VkIGJ5IGV4dDQuIEl0IGNoYW5nZXMgdGhlIG9yZGVyIG9mIGNoZWNraW5nIGB0X3VwZGF0ZXNgIGFuZCBgcHJlcGFyZV90b193YWl0YCwgd2hpY2ggYWZmZWN0cyBob3cgdHJhbnNhY3Rpb24gY29tbWl0cyB3YWl0IGZvciBvdXRzdGFuZGluZyB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgb3IgaGFuZ3MgZHVyaW5nIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdiOTUyMTczMjIzMTdlNTkyZDE3ZjI3M2I0ZWI2NzRlOGM4YzFjZGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDE0OjUzOjU3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2piZDIvdHJhbnNhY3Rpb24uYyBiL2ZzL2piZDIvdHJhbnNhY3Rpb24uY1xuaW5kZXggNWNjN2QwOTdiMmFjOC4uMGYxOTNkMDJhMDU0NyAxMDA2NDRcbi0tLSBhL2ZzL2piZDIvdHJhbnNhY3Rpb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvamJkMi90cmFuc2FjdGlvbi5jXG5AQCAtODMxLDE1ICYjNDM7ODMxLDEyIEBAIHZvaWQgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXG4gXHRcdCAqL1xuIFx0XHR0cmFuc2FjdGlvbl90ICp0cmFuc2FjdGlvbiA9IGpvdXJuYWwtXHUwMDNlal9ydW5uaW5nX3RyYW5zYWN0aW9uO1xuIFxuLVx0XHRpZiAoIXRyYW5zYWN0aW9uKVxuJiM0MztcdFx0aWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoXHUwMDI2dHJhbnNhY3Rpb24tXHUwMDNldF91cGRhdGVzKSlcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0cHJlcGFyZV90b193YWl0KFx1MDAyNmpvdXJuYWwtXHUwMDNlal93YWl0X3VwZGF0ZXMsIFx1MDAyNndhaXQsXG4gXHRcdFx0XHRUQVNLX1VOSU5URVJSVVBUSUJMRSk7XG4tXHRcdGlmICghYXRvbWljX3JlYWQoXHUwMDI2dHJhbnNhY3Rpb24tXHUwMDNldF91cGRhdGVzKSkge1xuLVx0XHRcdGZpbmlzaF93YWl0KFx1MDAyNmpvdXJuYWwtXHUwMDNlal93YWl0X3VwZGF0ZXMsIFx1MDAyNndhaXQpO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHR9XG4mIzQzO1xuIFx0XHR3cml0ZV91bmxvY2soXHUwMDI2am91cm5hbC1cdTAwM2VqX3N0YXRlX2xvY2spO1xuIFx0XHRzY2hlZHVsZSgpO1xuIFx0XHRmaW5pc2hfd2FpdChcdTAwMjZqb3VybmFsLVx1MDAzZWpfd2FpdF91cGRhdGVzLCBcdTAwMjZ3YWl0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2piZDJfam91cm5hbF93YWl0X3VwZGF0ZXMmIzM0OywKICAgICYjMzQ7amJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbiYjMzQ7LAogICAgJiMzNDtqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3YWl0IGxvb3AgY29uZGl0aW9uIGluIGBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzYCwgYSBjb3JlIHN5bmNocm9uaXphdGlvbiBmdW5jdGlvbiBpbiB0aGUgSkJEMiBqb3VybmFsaW5nIGxheWVyIHVzZWQgYnkgZXh0NC4gSXQgY2hhbmdlcyB0aGUgb3JkZXIgb2YgY2hlY2tpbmcgYHRfdXBkYXRlc2AgYW5kIGBwcmVwYXJlX3RvX3dhaXRgLCB3aGljaCBhZmZlY3RzIGhvdyB0cmFuc2FjdGlvbiBjb21taXRzIHdhaXQgZm9yIG91dHN0YW5kaW5nIHVwZGF0ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucyBvciBoYW5ncyBkdXJpbmcgZmlsZXN5c3RlbSBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2I5NTIxNzMyMjMxN2U1OTJkMTdmMjczYjRlYjY3NGU4YzhjMWNkZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMTQ6NTM6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9qYmQyL3RyYW5zYWN0aW9uLmMgYi9mcy9qYmQyL3RyYW5zYWN0aW9uLmMKaW5kZXggNWNjN2QwOTdiMmFjOC4uMGYxOTNkMDJhMDU0NyAxMDA2NDQKLS0tIGEvZnMvamJkMi90cmFuc2FjdGlvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2piZDIvdHJhbnNhY3Rpb24uYwpAQCAtODMxLDE1ICYjNDM7ODMxLDEyIEBAIHZvaWQgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpCiAJCSAqLwogCQl0cmFuc2FjdGlvbl90ICp0cmFuc2FjdGlvbiA9IGpvdXJuYWwtJmd0O2pfcnVubmluZ190cmFuc2FjdGlvbjsKIAotCQlpZiAoIXRyYW5zYWN0aW9uKQomIzQzOwkJaWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoJmFtcDt0cmFuc2FjdGlvbi0mZ3Q7dF91cGRhdGVzKSkKIAkJCWJyZWFrOwogCiAJCXByZXBhcmVfdG9fd2FpdCgmYW1wO2pvdXJuYWwtJmd0O2pfd2FpdF91cGRhdGVzLCAmYW1wO3dhaXQsCiAJCQkJVEFTS19VTklOVEVSUlVQVElCTEUpOwotCQlpZiAoIWF0b21pY19yZWFkKCZhbXA7dHJhbnNhY3Rpb24tJmd0O3RfdXBkYXRlcykpIHsKLQkJCWZpbmlzaF93YWl0KCZhbXA7am91cm5hbC0mZ3Q7al93YWl0X3VwZGF0ZXMsICZhbXA7d2FpdCk7Ci0JCQlicmVhazsKLQkJfQomIzQzOwogCQl3cml0ZV91bmxvY2soJmFtcDtqb3VybmFsLSZndDtqX3N0YXRlX2xvY2spOwogCQlzY2hlZHVsZSgpOwogCQlmaW5pc2hfd2FpdCgmYW1wO2pvdXJuYWwtJmd0O2pfd2FpdF91cGRhdGVzLCAmYW1wO3dhaXQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVHJhbnNhY3Rpb24gVXBkYXRlIFdhaXQgQ29uZGl0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2Agd2l0aGluIGBmcy9qYmQyL3RyYW5zYWN0aW9uLmNgLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgdGhlIHN1YnRsZSBjaGFuZ2UgaXMgd29ydGggZGlnZ2luZyBpbnRvLiBQcmV2aW91c2x5LCB0aGUgY29kZSB3YWl0ZWQgZm9yIHRyYW5zYWN0aW9uIHVwZGF0ZXMgdXNpbmcgYSBsb29wLiBUaGUgbG9vcCYjMzk7cyBleGl0IGNvbmRpdGlvbiB1c2VkIHRvIGJlIGEgYml0Li4uIHNlcGFyYXRlZCwgc2hhbGwgd2Ugc2F5LiBGaXJzdCwgaXQgY2hlY2tlZCBpZiBgdHJhbnNhY3Rpb25gIHdhcyB2YWxpZCBiZWZvcmUgY2FsbGluZyBgcHJlcGFyZV90b193YWl0YC4gVGhlbiwgKmFmdGVyKiB0aGF0IGNhbGwsIGl0JiMzOTtkIGNoZWNrIGlmIGBhdG9taWNfcmVhZCgmYW1wO3RyYW5zYWN0aW9uLSZndDt0X3VwZGF0ZXMpYCB3YXMgbm9uLXplcm8uIEVzc2VudGlhbGx5LCBtYWtpbmcgc3VyZSB0aGVyZSBhcmUgYWN0dWFsbHkgdXBkYXRlcyB0byB3YWl0IGZvci4KClRoaXMgcGF0Y2gsIGhvd2V2ZXIsIHJlZmFjdG9ycyB0aGF0IGxvZ2ljLiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIG5vdyB0byBjaGVjayBgIXRyYW5zYWN0aW9uIHx8ICFhdG9taWNfcmVhZCgmYW1wO3RyYW5zYWN0aW9uLSZndDt0X3VwZGF0ZXMpYCAqYmVmb3JlKiB0aGUgYHByZXBhcmVfdG9fd2FpdGAuIFRoaXMgbWVhbnMgaXQgc2hvcnQtY2lyY3VpdHMgdGhlIHdhaXQgaWYgdGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgTlVMTCBvciB0aGVyZSBhcmUgbm8gdXBkYXRlcyB0byB3YWl0IGZvciwgcG90ZW50aWFsbHkgb3B0aW1pemluZyB0aGUgcGF0aCBieSBza2lwcGluZyB0aGUgYHByZXBhcmVfdG9fd2FpdGAgY2FsbCBpZiBpdCBpc24mIzM5O3QgbmVjZXNzYXJ5LiBJdCYjMzk7cyBhIG1pbm9yIGNoYW5nZSBpbiB0aGUgcGxhY2VtZW50IG9mIHRoZSBjaGVjaywgYnV0IGl0IGxvb2tzIGxpa2UgYSBuaWNlIG9wdGltaXphdGlvbiB0byBwb3RlbnRpYWxseSBwcmV2ZW50IGEgc3B1cmlvdXMgd2FrZS11cCBpbiBhIGNvcm5lciBjYXNlLiBJJiMzOTtkIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb250ZXh0cyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBhc3Nlc3MgdGhlIGFjdHVhbCBpbXBhY3QsIGJ1dCBvbiB0aGUgc3VyZmFjZSwgdGhpcyBsb29rcyBsaWtlIGEgY2xlYW5lciwgbW9yZSBlZmZpY2llbnQgd2F5IHRvIGhhbmRsZSB0aGUgd2FpdCBjb25kaXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7amJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2piZDIvdHJhbnNhY3Rpb24uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODExPUVYUE9SVF9TWU1CT0woamJkMl9qb3VybmFsX3Jlc3RhcnQpO1xuLS1cbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04MTYtICovXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6ODE3OnZvaWQgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtODE4LXtcbi0tXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODU3PXZvaWQgamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXG4tLVxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTg3Mi1cdC8qIFdhaXQgdW50aWwgdGhlcmUgYXJlIG5vIHJ1bm5pbmcgdF91cGRhdGVzICovXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6ODczOlx0amJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsKTtcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04NzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzNQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGEgS2VybmVsIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBtb2RpZmljYXRpb24gdG8gYGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNgLiBSaWdodCBhd2F5LCB0aGF0IHJhaXNlcyBhIGZsYWcuIFRoaXMgaXMgY29yZSBKQkQyIHN0dWZmLCB3aGljaCBtZWFucyBpdCYjMzk7cyBmdW5kYW1lbnRhbCB0byBleHQ0IGFuZCBvY2ZzMiwgdHdvIHZlcnkgd2lkZWx5IHVzZWQgZmlsZXN5c3RlbXMuIEFueSBjaGFuZ2UgZG93biBoZXJlIGluIHRoZSBKQkQyIHN1YnN5c3RlbSBpcyBhIGhpZ2gtaW1wYWN0IG1vZGlmaWNhdGlvbi4gU2luY2UgdGhpcyB0b3VjaGVzIGtlcm5lbCBsb2dpYywgaXQgKmFic29sdXRlbHkqIG5lZWRzIHJpZ29yb3VzIHRlc3RpbmcuIE15IGd1dCByZWFjdGlvbiBpcyB0aGF0IHdlIG5lZWQgdG8gZnV6eiB0aGlzIGFnZ3Jlc3NpdmVseS4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgY2hhbmdlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgc3VidGxlIGNvcnJ1cHRpb24gb3IgY29uY3VycmVuY3kgYnVncy4gQmVmb3JlIGdvaW5nIGFueSBmdXJ0aGVyLCBsZXQgbWUgZ28gY2hlY2sgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWdzIGFuZCBzZWUgd2hhdCB0aGUgc2V0dGluZ3MgYXJlIGZvciBKQkQyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoaXMgY2hhbmdlIGFuZCBob3cgd2lkZWx5IGl0JiMzOTtzIGRlcGxveWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBKQkQyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvamJkMi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2piZDIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvamJkMi9LY29uZmlnOjI6Y29uZmlnIEpCRDJcbmZzL2piZDIvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5mcy9qYmQyL0tjb25maWctMTktXG5mcy9qYmQyL0tjb25maWc6MjA6Y29uZmlnIEpCRDJfREVCVUdcbmZzL2piZDIvS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7SkJEMiAoZXh0NCkgZGVidWdnaW5nIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQ5CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgSkJEMiBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIHNvIEpCRDIgaXMgZmxhZ2dlZCBhcyBiZWluZyBlc3NlbnRpYWwgZm9yIEVYVDQgYW5kIE9DRlMyLiBJbnRlcmVzdGluZy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIuIFRoZSBmaXJzdCBwbGFjZSB0byBnbywgbmF0dXJhbGx5LCBpcyB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgdGhvc2UgZmlsZXN5c3RlbXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpleGFjdGx5KiBob3cgSkJEMiBpcyBicm91Z2h0IGludG8gdGhlIHBpY3R1cmUgaW4gZWFjaCBjYXNlLiBLbm93aW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgaG93IEpCRDIgaXMgd292ZW4gaW4uIFRpbWUgdG8gY3JhY2sgb3BlbiBgZnMvZXh0NC9LY29uZmlnYCBhbmQgYGZzL29jZnMyL0tjb25maWdgIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgc3lzdGVtIGlzIHRlbGxpbmcgdXMuIFRoaXMgaXMgbGlrZWx5IHRoZSBiZXN0IHBhdGggZm9yIHVuZGVyc3RhbmRpbmcgaG93IEpCRDIgaXMgbGlua2VkIGluLCBlaXRoZXIgZGlyZWN0bHkgb3IgdHJhbnNpdGl2ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBKQkQyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZz0yPWNvbmZpZyBFWFQ0X0ZTXG4tLVxuZnMvZXh0NC9LY29uZmlnLTQtXHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL2V4dDQvS2NvbmZpZzo1Olx0c2VsZWN0IEpCRDJcbmZzL2V4dDQvS2NvbmZpZy02LVx0c2VsZWN0IENSQzE2XG4tLVxuZnMvb2NmczIvS2NvbmZpZz0yPWNvbmZpZyBPQ0ZTMl9GU1xuLS1cbmZzL29jZnMyL0tjb25maWctNS1cdHNlbGVjdCBCVUZGRVJfSEVBRFxuZnMvb2NmczIvS2NvbmZpZzo2Olx0c2VsZWN0IEpCRDJcbmZzL29jZnMyL0tjb25maWctNy1cdHNlbGVjdCBDUkMzMlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NDYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IEVYVDQgYW5kIEpvdXJuYWxpbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gRW5hYmxpbmcgYEVYVDRfRlNgIGlzIGEgc29saWQgZmlyc3Qgc3RlcDsgYSBnb29kIGJhc2UgY29uZmlndXJhdGlvbiB0byBzdGFydCB3aXRoLCBvYnZpb3VzbHkuIE5vdywgdGhlIGtleSBzeW1ib2wgSSBuZWVkIHRvIGZvY3VzIG9uIHJpZ2h0IG5vdyBpcyBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AuIFVuZGVyc3RhbmRpbmcgdGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBiZSBjcnVjaWFsIGluIHRyYWNraW5nIGRvd24gYW55IHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIG9yIHBvdGVudGlhbCBpc3N1ZXMuIFRoZSBuZXh0IHF1ZXN0aW9uIGlzOiBpcyB0aGlzIHN5bWJvbCBhY3R1YWxseSBleHBvc2VkPyBUaW1lIHRvIGNoZWNrIGlmIGBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzYCBpcyBleHBvcnRlZCwgdG8gbWFrZSBzdXJlIGl0JiMzOTtzIGFjY2Vzc2libGUgd2hlcmUgSSBuZWVkIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9qYmQyL3RyYW5zYWN0aW9uLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODkzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBFeHBvcnQgSXNzdWUgaW4gdGhlIEpvdXJuYWxpbmcgTGF5ZXIqKgoKUmlnaHQsIHNvbWV0aGluZyYjMzk7cyBub3QgcXVpdGUgcmlnaHQuIFRoZSBjb2RlIGlzbiYjMzk7dCBiZWhhdmluZyBhcyBleHBlY3RlZCBhbmQgSSYjMzk7bSBzdXNwZWN0aW5nIGFuIGV4cG9ydC1yZWxhdGVkIGlzc3VlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGpvdXJuYWxpbmcgbGF5ZXIsIHNwZWNpZmljYWxseSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgZmlsZSBzeXN0ZW0uIExldCYjMzk7cyBzdGFydCB3aXRoIGBmcy9qYmQyL3RyYW5zYWN0aW9uLmNgIHNpbmNlIHRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIGpvdXJuYWxpbmcgcHJvY2Vzcy4gSSYjMzk7bSBnb2luZyB0byBqdW1wIGluIGFyb3VuZCBsaW5lIDgxNy4gVGhhdCBhcmVhIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgdHJhbnNhY3Rpb24gbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsbHkgd2hlcmUgdGhlIGV4cG9ydCBwcm9jZXNzIG9yIGl0cyBhYnNlbmNlIHdvdWxkIGJlIHJlZmxlY3RlZC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9qYmQyL3RyYW5zYWN0aW9uLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDgxMDpcdH1cbiA4MTE6XHRFWFBPUlRfU1lNQk9MKGpiZDJfam91cm5hbF9yZXN0YXJ0KTtcbiA4MTI6XHRcbiA4MTM6XHQvKlxuIDgxNDpcdCAqIFdhaXRzIGZvciBhbnkgb3V0c3RhbmRpbmcgdF91cGRhdGVzIHRvIGZpbmlzaC5cbiA4MTU6XHQgKiBUaGlzIGlzIGNhbGxlZCB3aXRoIHdyaXRlIGpfc3RhdGVfbG9jayBoZWxkLlxuIDgxNjpcdCAqL1xuIDgxNzpcdHZvaWQgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXG4gODE4Olx0e1xuIDgxOTpcdFx0REVGSU5FX1dBSVQod2FpdCk7XG4gODIwOlx0XG4gODIxOlx0XHR3aGlsZSAoMSkge1xuIDgyMjpcdFx0XHQvKlxuIDgyMzpcdFx0XHQgKiBOb3RlIHRoYXQgdGhlIHJ1bm5pbmcgdHJhbnNhY3Rpb24gY2FuIGdldCBmcmVlZCB1bmRlciB1cyBpZlxuIDgyNDpcdFx0XHQgKiB0aGlzIHRyYW5zYWN0aW9uIGlzIGdldHRpbmcgY29tbWl0dGVkIGluXG4gODI1Olx0XHRcdCAqIGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb24oKSAtXHUwMDNlXG4gODI2Olx0XHRcdCAqIGpiZDJfam91cm5hbF9mcmVlX3RyYW5zYWN0aW9uKCkuIFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdoZW4gd2VcbiA4Mjc6XHRcdFx0ICogcmVsZWFzZSBqX3N0YXRlX2xvY2sgLVx1MDAzZSBzY2hlZHVsZSgpIC1cdTAwM2UgYWNxdWlyZSBqX3N0YXRlX2xvY2suXG4gODI4Olx0XHRcdCAqIEhlbmNlIHdlIHNob3VsZCBldmVyeXRpbWUgcmV0cmlldmUgbmV3IGpfcnVubmluZ190cmFuc2FjdGlvblxuIDgyOTpcdFx0XHQgKiB2YWx1ZSAoYWZ0ZXIgal9zdGF0ZV9sb2NrIHJlbGVhc2UgYWNxdWlyZSBjeWNsZSksIGVsc2UgaXQgbWF5XG4gODMwOlx0XHRcdCAqIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUgb2Ygb2xkIGZyZWVkIHRyYW5zYWN0aW9uLlxuIDgzMTpcdFx0XHQgKi9cbiA4MzI6XHRcdFx0dHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb24gPSBqb3VybmFsLVx1MDAzZWpfcnVubmluZ190cmFuc2FjdGlvbjtcbiA4MzM6XHRcbiA4MzQ6XHRcdFx0aWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoXHUwMDI2dHJhbnNhY3Rpb24tXHUwMDNldF91cGRhdGVzKSlcbiA4MzU6XHRcdFx0XHRicmVhaztcbiA4MzY6XHRcbiA4Mzc6XHRcdFx0cHJlcGFyZV90b193YWl0KFx1MDAyNmpvdXJuYWwtXHUwMDNlal93YWl0X3VwZGF0ZXMsIFx1MDAyNndhaXQsXG4gODM4Olx0XHRcdFx0XHRUQVNLX1VOSU5URVJSVVBUSUJMRSk7XG4gODM5Olx0XG4gODQwOlx0XHRcdHdyaXRlX3VubG9jayhcdTAwMjZqb3VybmFsLVx1MDAzZWpfc3RhdGVfbG9jayk7XG4gODQxOlx0XHRcdHNjaGVkdWxlKCk7XG4gODQyOlx0XHRcdGZpbmlzaF93YWl0KFx1MDAyNmpvdXJuYWwtXHUwMDNlal93YWl0X3VwZGF0ZXMsIFx1MDAyNndhaXQpO1xuIDg0MzpcdFx0XHR3cml0ZV9sb2NrKFx1MDAyNmpvdXJuYWwtXHUwMDNlal9zdGF0ZV9sb2NrKTtcbiA4NDQ6XHRcdH1cbiA4NDU6XHR9XG4gODQ2Olx0XG4gODQ3Olx0LyoqXG4gODQ4Olx0ICogamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlcyAoKSAtIGVzdGFibGlzaCBhIHRyYW5zYWN0aW9uIGJhcnJpZXIuXG4gODQ5Olx0ICogQGpvdXJuYWw6ICBKb3VybmFsIHRvIGVzdGFibGlzaCBhIGJhcnJpZXIgb24uXG4gODUwOlx0ICpcbiA4NTE6XHQgKiBUaGlzIGxvY2tzIG91dCBhbnkgZnVydGhlciB1cGRhdGVzIGZyb20gYmVpbmcgc3RhcnRlZCwgYW5kIGJsb2Nrc1xuIDg1MjpcdCAqIHVudGlsIGFsbCBleGlzdGluZyB1cGRhdGVzIGhhdmUgY29tcGxldGVkLCByZXR1cm5pbmcgb25seSBvbmNlIHRoZVxuIDg1MzpcdCAqIGpvdXJuYWwgaXMgaW4gYSBxdWllc2NlbnQgc3RhdGUgd2l0aCBubyB1cGRhdGVzIHJ1bm5pbmcuXG4gODU0Olx0ICpcbiA4NTU6XHQgKiBUaGUgam91cm5hbCBsb2NrIHNob3VsZCBub3QgYmUgaGVsZCBvbiBlbnRyeS5cbiA4NTY6XHQgKi9cbiA4NTc6XHR2b2lkIGpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXMoam91cm5hbF90ICpqb3VybmFsKVxuIDg1ODpcdHtcbiA4NTk6XHRcdGpiZDJfbWlnaHRfd2FpdF9mb3JfY29tbWl0KGpvdXJuYWwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODU3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBDb2RlJiMzOTtzIFZpc2liaWxpdHkqKgoKQWxyaWdodCwgc28gdGhpcyBmdW5jdGlvbi4uLiBpdCYjMzk7cyBub3QgZXhwbGljaXRseSBkZWNsYXJlZCBhcyBleHBvcnRlZCwgd2hpY2ggaXMgdGhlIGZpcnN0IHRoaW5nIEkgY2hlY2suIEJ1dCwgaG9sZCBvbiBhIHNlYywgaXQmIzM5O3MgKm5vdCogc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIElzIGl0IG1heWJlIGJlaW5nIGV4cG9ydGVkIHRocm91Z2ggc29tZSBvdGhlciByb3V0ZSwgZGVmaW5lZCBpbiBhIGRpZmZlcmVudCBmaWxlPyBMZXQmIzM5O3MgcnVsZSB0aGF0IG91dCBxdWlja2x5LiBPa2F5LCBubywgdGhlIGV4cG9ydCBpcyBub3QgZGVjbGFyZWQgaW4gYW5vdGhlciBmaWxlLgoKV2FpdCwgSSByZWNhbGwgc2VlaW5nIGBqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzYCBzb21ld2hlcmUuIE5vdywgKnRoYXQmIzM5O3MqIGFuIGV4cG9ydGVkIGZ1bmN0aW9uLCBhbmQgSSBuZWVkIHRvIGJlIHN1cmUuIExldCYjMzk7cyBtYWtlIGNlcnRhaW4gdGhhdCBmdW5jdGlvbiBpcyBleHBvcnRlZCwganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9qYmQyL3RyYW5zYWN0aW9uLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTM5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpYWdub3N0aWMgV29ya2Zsb3cgaW4gRmlsZSBFeHBvcnQgRXhhbWluYXRpb24qKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgc3RlcCBpbiBhbnkgZmlsZSBpbnRlZ3JpdHkgY2hlY2sgaXMgdG8gZXN0YWJsaXNoIHRoZSBiYXNpYyBmbG93IG9mIG9wZXJhdGlvbnMuIEdpdmVuIHdoYXQmIzM5O3Mgb24gbXkgbWVudGFsIHNjaGVtYXRpYywgbXkgaW1tZWRpYXRlIHN1c3BpY2lvbiBpcyB0aGF0IHRoZSBleHBvcnQgcm91dGluZSwgb3IgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBwcm9jZXNzLCBtaWdodCBiZSBhcHBlbmRpbmcgaXRzIG91dHB1dCBhdCB0aGUgYWJzb2x1dGUgZW5kIG9mIHRoZSB0YXJnZXQgZmlsZS4gSXQmIzM5O3MgdGhlIG1vc3QgY29tbW9uIGFuZCBlYXNpbHkgb3Zlcmxvb2tlZCBwb2ludCBmb3IgYSBwcm9jZXNzIHRvIGR1bXAgaXRzIGZpbmFsIHdvcmsuIEEgcXVpY2sgc2FuaXR5IGNoZWNrIGZvciB0aGlzICYjMzk7ZW5kLW9mLWZpbGUmIzM5OyAoRU9GKSBleHBvcnQgaW1wbGVtZW50YXRpb24gaXMgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBiZWZvcmUgSSBtb3ZlIG9uIHRvIG1vcmUgZWxhYm9yYXRlIGRpYWdub3Npcy4gSSYjMzk7bGwgbmVlZCB0byB2ZXJpZnkgaWYgdGhlIGZpbGUgc2l6ZSBjaGFuZ2VzIGNvcnJlc3BvbmQgdG8gZXhwZWN0ZWQgZGF0YSBzaXplIGluIHRoZSBsYXRlciBzdGFnZXMgb2YgdGhpcyBkaWFnbm9zdGljLiBJJiMzOTtsbCBnbyBkaWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9qYmQyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzODgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKldhaXQsIFRoYXQmIzM5O3MgRXhwb3J0ZWQ/KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkmIzM5O20ganVzdCBwYXJzaW5nIHRocm91Z2ggdGhpcyBhbmQgc29tZXRoaW5nJiMzOTtzIG5vdCBxdWl0ZSByaWdodC4gYGpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXNgLi4uIHRoYXQmIzM5O3MgKmV4cG9ydGVkKj8gSSYjMzk7bSBwcmV0dHkgc3VyZSBJIGtub3cgd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgZm9yLiBJdCBzaG91bGQgYmUgaW50ZXJuYWwgdG8gdGhlIGpvdXJuYWwgbGF5ZXIsIHNob3VsZG4mIzM5O3QgaXQ/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpdCYjMzk7cyBkZWVwbHkgaW52b2x2ZWQgaW4gdGhlIGxvdy1sZXZlbCBsb2NraW5nIGFuZCB1cGRhdGVzIHdpdGhpbiB0aGUgam91cm5hbC4gRXhwb3NpbmcgdGhhdC4uLiB0aGF0IGZlZWxzIGxpa2UgYSBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSwgb3IgYXQgdGhlIHZlcnkgbGVhc3QsIGEgc2lnbmlmaWNhbnQgYWJzdHJhY3Rpb24gbGVhay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogaXQmIzM5O3MgYmVpbmcgZXhwb3J0ZWQuIElzIHRoaXMgc29tZSBsZWdhY3kgYXJ0aWZhY3Q/IElzIGl0IHBhcnQgb2YgYSBzdXBwb3J0ZWQgaW50ZXJmYWNlIEkmIzM5O20gbm90IGF3YXJlIG9mPyBPciBpcyBpdCBhIGJ1ZywgYSBtaXNjb25maWd1cmF0aW9uLCBvciwgZXZlbiB3b3JzZSwgYSBkZWxpYmVyYXRlIGJhY2tkb29yPyBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRoYXQmIzM5O3MgY2FsbGluZyB0aGF0IGFuZCBmaWd1cmUgb3V0IHRoZSBjb250ZXh0LiBUaGlzIGNvdWxkIGJlIGEgc2lnbmlmaWNhbnQgcHJvYmxlbS4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2piZDIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2piZDIvam91cm5hbC5jPTU5PUVYUE9SVF9TWU1CT0woamJkMl9qb3VybmFsX3N0b3ApO1xuZnMvamJkMi9qb3VybmFsLmM6NjA6RVhQT1JUX1NZTUJPTChqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzKTtcbmZzL2piZDIvam91cm5hbC5jLTYxLUVYUE9SVF9TWU1CT0woamJkMl9qb3VybmFsX3VubG9ja191cGRhdGVzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc2NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBKb3VybmFsIFVwZGF0ZSBXYWl0ZXJzKioKCk9rYXksIHNvIEkmIzM5O3ZlIHBpbnBvaW50ZWQgdGhlIHJlbGV2YW50IGNvZGU7IHRoZSBgZnMvamJkMi9qb3VybmFsLmNgIGZpbGUuIFJpZ2h0LCBJIHNlZSB0aGF0IGBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzYCBpcyBhIG5vbi1zdGF0aWMgZnVuY3Rpb24g4oCTIHRoYXQmIzM5O3MgZXhjZWxsZW50LiBJdCBtZWFucyBpdCYjMzk7cyBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCwgbWFraW5nIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBpbnZlc3RpZ2F0aW9uLiBUaGF0JiMzOTtzIGEgc29saWQgZm9jdXMgc3ltYm9sLiBTaW1pbGFybHksIGBqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzYCBsb29rcyBsaWtlIGFub3RoZXIgaW1wb3J0YW50IGZ1bmN0aW9uIHJlbGF0ZWQgdG8gdGhpcyBhcmVhLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIGtlZXAgdHJhY2sgb2YgdGhhdCBvbmUuCgpOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBpZGVudGlmeSB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGdyYXNwIG9mIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gdGhlIGpvdXJuYWwgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdobyYjMzk7cyB3YWl0aW5nIGZvciB0aG9zZSB1cGRhdGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvamJkMi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvamJkMi9jb21taXQuYz0zNzY9dm9pZCBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uKGpvdXJuYWxfdCAqam91cm5hbClcbi0tXG5mcy9qYmQyL2NvbW1pdC5jLTQ4MS1cdC8vIHdhaXRzIGZvciBhbnkgdF91cGRhdGVzIHRvIGZpbmlzaFxuZnMvamJkMi9jb21taXQuYzo0ODI6XHRqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzKGpvdXJuYWwpO1xuZnMvamJkMi9jb21taXQuYy00ODMtXG4tLVxuZnMvamJkMi90cmFuc2FjdGlvbi5jPTgxMT1FWFBPUlRfU1lNQk9MKGpiZDJfam91cm5hbF9yZXN0YXJ0KTtcbi0tXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtODE2LSAqL1xuZnMvamJkMi90cmFuc2FjdGlvbi5jOjgxNzp2b2lkIGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXMoam91cm5hbF90ICpqb3VybmFsKVxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTgxOC17XG4tLVxuZnMvamJkMi90cmFuc2FjdGlvbi5jPTg1Nz12b2lkIGpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXMoam91cm5hbF90ICpqb3VybmFsKVxuLS1cbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04NzItXHQvKiBXYWl0IHVudGlsIHRoZXJlIGFyZSBubyBydW5uaW5nIHRfdXBkYXRlcyAqL1xuZnMvamJkMi90cmFuc2FjdGlvbi5jOjg3MzpcdGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXMoam91cm5hbCk7XG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtODc0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mzg0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEpCRDIgUGF0Y2g6IFJhY2UgQ29uZGl0aW9uIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBhbmQgYGpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXNgIGp1bXAgb3V0IGFzIGludGVyZXN0aW5nIHN5bWJvbHMuIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBpcyBkZWZpbml0ZWx5IGEgY29yZSBmdW5jdGlvbiBpbiBKQkQyLCBzbyBsZXQmIzM5O3MgZGlnIGluLiBUaGUgcGF0Y2ggZGVzY3JpcHRpb24gbWVudGlvbnMgYSByYWNlIGNvbmRpdGlvbiwgb3IgcGVyaGFwcyBhIGJ1ZywgcmVsYXRlZCB0byBob3cgYHByZXBhcmVfdG9fd2FpdGAgaXMgYmVpbmcgdXNlZC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIGBwcmVwYXJlX3RvX3dhaXRgIHdhcyBjYWxsZWQgKmJlZm9yZSogY2hlY2tpbmcgYCFhdG9taWNfcmVhZCgmYW1wO3RyYW5zYWN0aW9uLSZndDt0X3VwZGF0ZXMpYC4gSWYgYHRfdXBkYXRlc2Agd2FzIHplcm8sIGl0IHdvdWxkIGNhbGwgYGZpbmlzaF93YWl0YCBhbmQgYnJlYWsgb3V0IG9mIHRoZSBsb29wLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgb3JpZ2luYWwgY29kZSBibG9jayBhbmQgdGhlIG5ldyBjb2RlLiBUaGUgb3JpZ2luYWwgd2FzIGxpa2UgdGhpczoKYGBgYwoJCXByZXBhcmVfdG9fd2FpdCgmYW1wO2pvdXJuYWwtJmd0O2pfd2FpdF91cGRhdGVzLCAmYW1wO3dhaXQsCgkJCQlUQVNLX1VOSU5URVJSVVBUSUJMRSk7CgkJaWYgKCFhdG9taWNfcmVhZCgmYW1wO3RyYW5zYWN0aW9uLSZndDt0X3VwZGF0ZXMpKSB7CgkJCWZpbmlzaF93YWl0KCZhbXA7am91cm5hbC0mZ3Q7al93YWl0X3VwZGF0ZXMsICZhbXA7d2FpdCk7CgkJCWJyZWFrOwoJCX0KYGBgClRoZSBuZXcgY29kZSBzaW1wbGlmaWVzIGl0IHRvOgpgYGBjCgkJaWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoJmFtcDt0cmFuc2FjdGlvbi0mZ3Q7dF91cGRhdGVzKSkKCQkJYnJlYWs7CgoJCXByZXBhcmVfdG9fd2FpdCgmYW1wO2pvdXJuYWwtJmd0O2pfd2FpdF91cGRhdGVzLCAmYW1wO3dhaXQsCgkJCQlUQVNLX1VOSU5URVJSVVBUSUJMRSk7CmBgYAoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3YWl0Li4uIGlmIGB0X3VwZGF0ZXNgIGJlY29tZXMgemVybyAqYWZ0ZXIqIHRoZSBjaGVjayBidXQgKmJlZm9yZSogdGhlIGBwcmVwYXJlX3RvX3dhaXRgIGNhbGwsIHdvdWxkbiYjMzk7dCBpdCBzdGlsbCBzbGVlcD8gTm8sIGBwcmVwYXJlX3RvX3dhaXRgIGNoYW5nZXMgdGhlIHRhc2sgc3RhdGUsIGJ1dCBoYW5nIG9uLCB0aGV5IG1vdmVkIHRoZSBgYXRvbWljX3JlYWRgIGNoZWNrICpiZWZvcmUqIHRoZSBgcHJlcGFyZV90b193YWl0YC4gSWYgd2UgZG8gYSBxdWljayBjaGVjaywgYW5kIHRoZW4sIGB0X3VwZGF0ZXNgIGdvZXMgdG8gemVybywgdGhlIGNhbGwgdG8gYHNjaGVkdWxlKClgIHdpbGwgcG90ZW50aWFsbHkgc2xlZXAgdGhlIHRhc2sgZm9yZXZlci4gQnV0IHRoYXQmIzM5O3Mgbm90IHJpZ2h0LgoKQWgsIHdhaXQgYSBzZWNvbmQuLi4gdGhpcyBsb29wIGlzIGxpa2VseSBydW5uaW5nIHdoaWxlIGEgbG9jayBpcyBoZWxkLCBgal9zdGF0ZV9sb2NrYCAtIGl0JiMzOTtzIGEgd3JpdGUgbG9jaywgc28gdGhlIHVubG9jayBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIGBwcmVwYXJlX3RvX3dhaXRgLiBTbywgd2hpbGUgdGhhdCBsb2NrIGlzIGhlbGQsIGB0X3VwZGF0ZXNgICpzaG91bGRuJiMzOTt0KiBjaGFuZ2UsIHJpZ2h0PyBMZXQmIzM5O3MgY2hlY2suIFNpbmNlIHRoZSB1bmxvY2sgaXMgY2FsbGVkIGFmdGVyIGBwcmVwYXJlX3RvX3dhaXRgLCBgdF91cGRhdGVzYCAqY2Fubm90KiBjaGFuZ2Ugd2hpbGUgdGhlIGxvY2sgaXMgaGVsZC4gU28sIGlzIHRoYXQgdHJ1ZT8gTGV0JiMzOTtzIGNvbmZpcm0gYnkgY2hlY2tpbmcgd2hlcmUgYHRfdXBkYXRlc2AgaXMgbW9kaWZpZWQ7IGl0IGhhcyB0byBiZSBtb2RpZmllZCBieSBgamJkMl9qb3VybmFsX3N0b3BgLCBhbmQgdGhhdCBmdW5jdGlvbiB0YWtlcyBgal9zdGF0ZV9sb2NrYC4gU28sIHRoaXMgcGF0Y2ggcHJldmVudHMgYSByYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdG9taWNfLip0X3VwZGF0ZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9qYmQyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9qYmQyL2NoZWNrcG9pbnQuYz03MDI9dm9pZCBfX2piZDJfam91cm5hbF9kcm9wX3RyYW5zYWN0aW9uKGpvdXJuYWxfdCAqam91cm5hbCwgdHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb24pXG4tLVxuZnMvamJkMi9jaGVja3BvaW50LmMtNzIxLVx0Sl9BU1NFUlQodHJhbnNhY3Rpb24tXHUwMDNldF9jaGVja3BvaW50X2xpc3QgPT0gTlVMTCk7XG5mcy9qYmQyL2NoZWNrcG9pbnQuYzo3MjI6XHRKX0FTU0VSVChhdG9taWNfcmVhZChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpID09IDApO1xuZnMvamJkMi9jaGVja3BvaW50LmMtNzIzLVx0Sl9BU1NFUlQoam91cm5hbC1cdTAwM2VqX2NvbW1pdHRpbmdfdHJhbnNhY3Rpb24gIT0gdHJhbnNhY3Rpb24pO1xuLS1cbmZzL2piZDIvdHJhbnNhY3Rpb24uYz04MD1zdGF0aWMgdm9pZCBqYmQyX2dldF90cmFuc2FjdGlvbihqb3VybmFsX3QgKmpvdXJuYWwsXG4tLVxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTg3LVx0dHJhbnNhY3Rpb24tXHUwMDNldF9leHBpcmVzID0gamlmZmllcyAmIzQzOyBqb3VybmFsLVx1MDAzZWpfY29tbWl0X2ludGVydmFsO1xuZnMvamJkMi90cmFuc2FjdGlvbi5jOjg4Olx0YXRvbWljX3NldChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMsIDApO1xuZnMvamJkMi90cmFuc2FjdGlvbi5jLTg5LVx0YXRvbWljX3NldChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X291dHN0YW5kaW5nX2NyZWRpdHMsXG4tLVxuZnMvamJkMi90cmFuc2FjdGlvbi5jPTMxMj1zdGF0aWMgaW50IHN0YXJ0X3RoaXNfaGFuZGxlKGpvdXJuYWxfdCAqam91cm5hbCwgaGFuZGxlX3QgKmhhbmRsZSxcbi0tXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtNDM0LVx0aGFuZGxlLVx1MDAzZWhfc3RhcnRfamlmZmllcyA9IGppZmZpZXM7XG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6NDM1Olx0YXRvbWljX2luYyhcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpO1xuZnMvamJkMi90cmFuc2FjdGlvbi5jLTQzNi1cdGF0b21pY19pbmMoXHUwMDI2dHJhbnNhY3Rpb24tXHUwMDNldF9oYW5kbGVfY291bnQpO1xuLS1cbmZzL2piZDIvdHJhbnNhY3Rpb24uYz02OTg9c3RhdGljIHZvaWQgc3RvcF90aGlzX2hhbmRsZShoYW5kbGVfdCAqaGFuZGxlKVxuLS1cbmZzL2piZDIvdHJhbnNhY3Rpb24uYy03MDQtXHRKX0FTU0VSVChqb3VybmFsX2N1cnJlbnRfaGFuZGxlKCkgPT0gaGFuZGxlKTtcbmZzL2piZDIvdHJhbnNhY3Rpb24uYzo3MDU6XHRKX0FTU0VSVChhdG9taWNfcmVhZChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpIFx1MDAzZSAwKTtcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy03MDYtXHRjdXJyZW50LVx1MDAzZWpvdXJuYWxfaW5mbyA9IE5VTEw7XG4tLVxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTczMS1cdFx0XHRcdFx0XHR0cmFuc2FjdGlvbik7XG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6NzMyOlx0aWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoXHUwMDI2dHJhbnNhY3Rpb24tXHUwMDNldF91cGRhdGVzKSlcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy03MzMtXHRcdHdha2VfdXAoXHUwMDI2am91cm5hbC1cdTAwM2VqX3dhaXRfdXBkYXRlcyk7XG4tLVxuZnMvamJkMi90cmFuc2FjdGlvbi5jPTgxNz12b2lkIGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXMoam91cm5hbF90ICpqb3VybmFsKVxuLS1cbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04MzMtXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6ODM0Olx0XHRpZiAoIXRyYW5zYWN0aW9uIHx8ICFhdG9taWNfcmVhZChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpKVxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTgzNS1cdFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE4NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uY3VycmVuY3kgaW4gdGhlIEpvdXJuYWxpbmcgQ29kZSoqCgpPa2F5LCBzbyBgc3RvcF90aGlzX2hhbmRsZWAgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSSBzZWUgdGhhdCBpdCB1c2VzIGBhdG9taWNfZGVjX2FuZF90ZXN0KCZhbXA7dHJhbnNhY3Rpb24tJmd0O3RfdXBkYXRlcylgIHRvIGRlY3JlbWVudCBhIGNvdW50ZXIsIGFuZCBpZiBpdCBoaXRzIHplcm8sIGl0IHdha2VzIHVwIGEgd2FpdGluZyBwcm9jZXNzIHZpYSBgd2FrZV91cCgmYW1wO2pvdXJuYWwtJmd0O2pfd2FpdF91cGRhdGVzKWAuIE15IGZpcnN0IHRob3VnaHQgaXM6IHdhaXQsIGlzIHRoaXMgaGFwcGVuaW5nIHdpdGhvdXQgaG9sZGluZyBgal9zdGF0ZV9sb2NrYD8gVGhhdCBjb3VsZCBiZSBhIHJlY2lwZSBmb3IgcmFjZSBjb25kaXRpb25zIGlmIG5vdCBoYW5kbGVkIGNhcmVmdWxseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmN1cnJlbmN5IGltcGxpY2F0aW9ucyBoZXJlLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGZvciBgc3RvcF90aGlzX2hhbmRsZWAgdG8gY29uZmlybS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgYXRvbWljIG9wZXJhdGlvbiBjb3JyZWN0bHkgbWFuYWdlcyB0aGUgc3luY2hyb25pemF0aW9uLCBvciBpZiB0aGVyZSYjMzk7cyBhbnkgc3VidGxlIHJhY2UgY29uZGl0aW9uIHRoYXQgSSYjMzk7bSBtaXNzaW5nLiBUaGlzIHdhcnJhbnRzIGNhcmVmdWwgc2NydXRpbnk7IGEgc3VidGxlIGJ1ZyBpbiB0aGlzIGFyZWEgY2FuIGJlIGNhdGFzdHJvcGhpYyBmb3IgZGF0YSBpbnRlZ3JpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvamJkMi90cmFuc2FjdGlvbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjk4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2OTg6XHRzdGF0aWMgdm9pZCBzdG9wX3RoaXNfaGFuZGxlKGhhbmRsZV90ICpoYW5kbGUpXG4gNjk5Olx0e1xuIDcwMDpcdFx0dHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb24gPSBoYW5kbGUtXHUwMDNlaF90cmFuc2FjdGlvbjtcbiA3MDE6XHRcdGpvdXJuYWxfdCAqam91cm5hbCA9IHRyYW5zYWN0aW9uLVx1MDAzZXRfam91cm5hbDtcbiA3MDI6XHRcdGludCByZXZva2VzO1xuIDcwMzpcdFxuIDcwNDpcdFx0Sl9BU1NFUlQoam91cm5hbF9jdXJyZW50X2hhbmRsZSgpID09IGhhbmRsZSk7XG4gNzA1Olx0XHRKX0FTU0VSVChhdG9taWNfcmVhZChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpIFx1MDAzZSAwKTtcbiA3MDY6XHRcdGN1cnJlbnQtXHUwMDNlam91cm5hbF9pbmZvID0gTlVMTDtcbiA3MDc6XHRcdC8qXG4gNzA4Olx0XHQgKiBTdWJ0cmFjdCBuZWNlc3NhcnkgcmV2b2tlIGRlc2NyaXB0b3IgYmxvY2tzIGZyb20gaGFuZGxlIGNyZWRpdHMuIFdlXG4gNzA5Olx0XHQgKiB0YWtlIGNhcmUgdG8gYWNjb3VudCBvbmx5IGZvciByZXZva2UgZGVzY3JpcHRvciBibG9ja3MgdGhlXG4gNzEwOlx0XHQgKiB0cmFuc2FjdGlvbiB3aWxsIHJlYWxseSBuZWVkIGFzIGxhcmdlIHNlcXVlbmNlcyBvZiB0cmFuc2FjdGlvbnMgd2l0aFxuIDcxMTpcdFx0ICogc21hbGwgbnVtYmVycyBvZiByZXZva2VzIGFyZSByZWxhdGl2ZWx5IGNvbW1vbi5cbiA3MTI6XHRcdCAqL1xuIDcxMzpcdFx0cmV2b2tlcyA9IGhhbmRsZS1cdTAwM2VoX3Jldm9rZV9jcmVkaXRzX3JlcXVlc3RlZCAtIGhhbmRsZS1cdTAwM2VoX3Jldm9rZV9jcmVkaXRzO1xuIDcxNDpcdFx0aWYgKHJldm9rZXMpIHtcbiA3MTU6XHRcdFx0aW50IHRfcmV2b2tlcywgcmV2b2tlX2Rlc2NyaXB0b3JzO1xuIDcxNjpcdFx0XHRpbnQgcnJfcGVyX2JsayA9IGpvdXJuYWwtXHUwMDNlal9yZXZva2VfcmVjb3Jkc19wZXJfYmxvY2s7XG4gNzE3Olx0XG4gNzE4Olx0XHRcdFdBUk5fT05fT05DRShESVZfUk9VTkRfVVAocmV2b2tlcywgcnJfcGVyX2JsaylcbiA3MTk6XHRcdFx0XHRcdFx1MDAzZSBoYW5kbGUtXHUwMDNlaF90b3RhbF9jcmVkaXRzKTtcbiA3MjA6XHRcdFx0dF9yZXZva2VzID0gYXRvbWljX2FkZF9yZXR1cm4ocmV2b2tlcyxcbiA3MjE6XHRcdFx0XHRcdFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfb3V0c3RhbmRpbmdfcmV2b2tlcyk7XG4gNzIyOlx0XHRcdHJldm9rZV9kZXNjcmlwdG9ycyA9XG4gNzIzOlx0XHRcdFx0RElWX1JPVU5EX1VQKHRfcmV2b2tlcywgcnJfcGVyX2JsaykgLVxuIDcyNDpcdFx0XHRcdERJVl9ST1VORF9VUCh0X3Jldm9rZXMgLSByZXZva2VzLCBycl9wZXJfYmxrKTtcbiA3MjU6XHRcdFx0aGFuZGxlLVx1MDAzZWhfdG90YWxfY3JlZGl0cyAtPSByZXZva2VfZGVzY3JpcHRvcnM7XG4gNzI2Olx0XHR9XG4gNzI3Olx0XHRhdG9taWNfc3ViKGhhbmRsZS1cdTAwM2VoX3RvdGFsX2NyZWRpdHMsXG4gNzI4Olx0XHRcdCAgIFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfb3V0c3RhbmRpbmdfY3JlZGl0cyk7XG4gNzI5Olx0XHRpZiAoaGFuZGxlLVx1MDAzZWhfcnN2X2hhbmRsZSlcbiA3MzA6XHRcdFx0X19qYmQyX2pvdXJuYWxfdW5yZXNlcnZlX2hhbmRsZShoYW5kbGUtXHUwMDNlaF9yc3ZfaGFuZGxlLFxuIDczMTpcdFx0XHRcdFx0XHRcdHRyYW5zYWN0aW9uKTtcbiA3MzI6XHRcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfdXBkYXRlcykpXG4gNzMzOlx0XHRcdHdha2VfdXAoXHUwMDI2am91cm5hbC1cdTAwM2VqX3dhaXRfdXBkYXRlcyk7XG4gNzM0Olx0XG4gNzM1Olx0XHRyd3NlbV9yZWxlYXNlKFx1MDAyNmpvdXJuYWwtXHUwMDNlal90cmFuc19jb21taXRfbWFwLCBfVEhJU19JUF8pO1xuIDczNjpcdFx0LypcbiA3Mzc6XHRcdCAqIFNjb3BlIG9mIHRoZSBHRlBfTk9GUyBjb250ZXh0IGlzIG92ZXIgaGVyZSBhbmQgc28gd2UgY2FuIHJlc3RvcmUgdGhlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxOTIKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogMTM5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgUmFjZSBDb25kaXRpb24gaW4gSkJEMiBUcmFuc2FjdGlvbiBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGluIGBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzYCwgYW5kIGltbWVkaWF0ZWx5LCBteSBzcGlkZXkgc2Vuc2VzIGFyZSB0aW5nbGluZy4gIEkgc2VlIHRoYXQgYHN0b3BfdGhpc19oYW5kbGVgICpkb2VzbiYjMzk7dCogaG9sZCBgal9zdGF0ZV9sb2NrYCwgd2hpY2ggbWVhbnMgYHRfdXBkYXRlc2AgaXMgcG90ZW50aWFsbHkgYmVpbmcgbW9kaWZpZWQgY29uY3VycmVudGx5LiBUaGF0JiMzOTtzIHRoZSBmaXJzdCByZWQgZmxhZy4gIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBjaGVja2luZyBgIWF0b21pY19yZWFkKCZhbXA7dHJhbnNhY3Rpb24tJmd0O3RfdXBkYXRlcylgICphZnRlciogdGhlIGBwcmVwYXJlX3RvX3dhaXRgIGNhbGwsIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCBhbmQgY29ycmVjdCB3YWl0IHF1ZXVlIHBhdHRlcm46IGFkZCB0byB0aGUgcXVldWUsIGNoZWNrIHRoZSBjb25kaXRpb24sIHBvdGVudGlhbGx5IHNjaGVkdWxlLgoKVGhlIHBhdGNoLCBob3dldmVyLCBzaGlmdHMgdGhpbmdzLiBJdCBub3cgY2hlY2tzIGAhdHJhbnNhY3Rpb24gfHwgIWF0b21pY19yZWFkKCZhbXA7dHJhbnNhY3Rpb24tJmd0O3RfdXBkYXRlcylgICpiZWZvcmUqIGBwcmVwYXJlX3RvX3dhaXRgLiBXYWl0IGEgc2Vjb25k4oCmIHRoYXQgc21lbGxzIGxpa2UgYSBjbGFzc2ljIHJhY2UuIElmIGB0X3VwZGF0ZXNgIGdvZXMgdG8gemVybyAqYWZ0ZXIqIHRoYXQgaW5pdGlhbCBjaGVjayBidXQgKmJlZm9yZSogYHByZXBhcmVfdG9fd2FpdGAgaXMgY2FsbGVkLCB0aGUgd2FrZXVwIHNpZ25hbCB3aWxsIGJlIGxvc3QhIGBwcmVwYXJlX3RvX3dhaXRgIHdpbGwgdGhlbiBhZGQgdGhlIHRhc2sgdG8gdGhlIHdhaXQgcXVldWUsIHNldCBpdCB0byBgVEFTS19VTklOVEVSUlVQVElCTEVgLCBhbmQgY2FsbCBgc2NoZWR1bGUoKWAsIGxlYWRpbmcgdG8gYW4gaW5kZWZpbml0ZSBzbGVlcC4gVGhpcyAqaGFzKiB0byBiZSBhIGJ1ZyEKCkFuZCB0aGVuIEkgcmVhbGl6ZS4uLiBpcyB0aGUgcGF0Y2ggY29ycmVjdD8gQWZ0ZXIgcmV2aWV3aW5nIHRoZSBjaGFuZ2UgYWdhaW4gYW5kIHRoaW5raW5nIGFib3V0IGhvdyBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AgaXMgY2FsbGVkLCBpdCByZXF1aXJlcyB0aGUgYGpfc3RhdGVfbG9ja2AgdG8gYmUgaGVsZCB3aGVuIHRoZSB3YWtldXAgaXMgY2FsbGVkLiBCdXQgYHN0b3BfdGhpc19oYW5kbGVgIGRvZXNuJiMzOTt0IHRha2UgdGhhdCBsb2NrIHNvIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHByb2JsZW0gaXMuICBUaGUgb3JpZ2luYWwgY29kZSBjYWxsZWQgYHByZXBhcmVfdG9fd2FpdGAgKmJlZm9yZSogdGhlIGNoZWNrLCBhbmQgdGhlIG5ldyBjb2RlIGludHJvZHVjZXMgYSByYWNlISAgSSBjYW4gdmlzdWFsaXplIHRoZSBwb3RlbnRpYWwgc2NlbmFyaW86IGB0X3VwZGF0ZXNgIGJlY29tZXMgemVybyBiZWZvcmUgYHByZXBhcmVfdG9fd2FpdGAsIGB3YWtlX3VwYCBoYXBwZW5zLCBidXQgaXQgZG9lc24mIzM5O3QgZmluZCB0aGUgdGFzayBpbiB0aGUgd2FpdCBxdWV1ZSBhbmQgZG9lcyBub3RoaW5nLiBUaGVuIGBwcmVwYXJlX3RvX3dhaXRgIGFkZHMgdGhlIHNsZWVwaW5nIHRhc2suIFRoZSB0YXNrIHNsZWVwcyBmb3JldmVyLgoKSG93ZXZlciwgSSYjMzk7bSBub3QgaGVyZSB0byBqdWRnZSB0aGUgcGF0Y2gmIzM5O3MgY29ycmVjdG5lc3MsIG9yIHRvIGZpeCB0aGUgY29kZSwgSSBhbSBoZXJlIHRvIGRlY2lkZSBpZiB0aGlzIHJlcXVpcmVzIGZ1enppbmchIENvbnNpZGVyaW5nIHRoYXQgdGhpcyBpcyBKQkQyLCBhIGNvcmUgam91cm5hbGluZyBsYXllciB1c2VkIGJ5IGV4dDQgKGFuZCBwb3RlbnRpYWxseSBvdGhlciBmaWxlc3lzdGVtcyBpZiBjb25maWd1cmVkKSwgYW5kIGJlY2F1c2UgdGhpcyBjaGFuZ2VzIGEgY3JpdGljYWwgc3luY2hyb25pemF0aW9uIHBvaW50IGluIGEgY29yZSBmdW5jdGlvbiwgSSBoYXZlIHRvIGNvbmNsdWRlIHRoYXQgdGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1enppbmcuIEEgaGFuZyBsaWtlIHRoaXMgd291bGQgYmUgY2F0YXN0cm9waGljIGZvciBhIGZpbGVzeXN0ZW0sIGFuZCBmdXp6aW5nIGlzIHRoZSBiZXN0IHdheSB0byB1bmNvdmVyIHN1Y2ggcHJvYmxlbXMuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uLiBgRVhUNF9GU2Agc2hvdWxkIGJlIGVub3VnaCwgYXMgaXQgcHVsbHMgaW4gYEpCRDJgLiBJbmRlZWQsIGl0IGRvZXMhIEFuZCBgQ09ORklHX09DRlMyX0ZTYCBhbHNvLCBidXQgSSYjMzk7bGwgc3RpY2sgdG8gYEVYVDRfRlNgIHRvIGtlZXAgaXQgc2ltcGxlLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gZW5hYmxlIGBFWFQ0X0ZTYCBpbiBteSBgRW5hYmxlQ29uZmlnc2AuCgpJIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBmb2N1cyBzeW1ib2xzIGZvciB0aGUgZnV6emVyLiBJdCYjMzk7cyBvYnZpb3VzbHkgYGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNgLiBBbHNvIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hhdCBjYWxscyB0aGUgZnVuY3Rpb24sIGFuZCBgamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlc2AgdG8gY292ZXIgdGhlIHN1cnJvdW5kaW5nIGNvZGUuCgpDaGVja2luZyByZWFjaGFiaWxpdHk6IEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBjYWxscyB0aGUgdGFyZ2V0IGZ1bmN0aW9uLCBhbmQgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHBlcmlvZGljYWxseSBvciBvbiBmc3luYy4gR29vZCwgaXQmIzM5O3MgYSBjcml0aWNhbCBjb21taXQgZnVuY3Rpb24uIEkmIzM5O2xsIG1ha2Ugc3VyZSBgRVhUNF9GU2AgaXMgc3VmZmljaWVudCBhbmQgYWxzbyB0aGF0IG5vdGhpbmcgZWxzZSBpcyBuZWVkZWQuICBZZXMsIGBFWFQ0X0ZTYCBkb2VzIHRoZSB0cmljay4KCkFscmlnaHQsIGxldCYjMzk7cyByZXZpZXcgdGhlIHBhdGNoIG9uZSBtb3JlIHRpbWUsIG1ha2Ugc3VyZSBJIGRpZG4mIzM5O3QgbWlzcyBhbnl0aGluZy4gWWVwLCBmdW5jdGlvbmFsIGNoYW5nZSBpbiBgZnMvamJkMi90cmFuc2FjdGlvbi5jYCwgZXhhY3RseSBhcyBleHBlY3RlZC4gTm93LCBpdCYjMzk7cyBjbGVhciB0aGlzIGlzIGEgaGlnaC1wcmlvcml0eSBmdXp6aW5nIHRhcmdldCwgZ2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgZGF0YSBjb3JydXB0aW9uIG9yIGhhbmdzIGlmIHRoaXMgcmFjZSBjb25kaXRpb24gbWFuaWZlc3RzLiBJJiMzOTtsbCB1c2UgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCB0byBkZWZpbmUgdGhlIGZ1enppbmcgcmVxdWlyZW1lbnRzIGZvciB0aGlzIHBvdGVudGlhbCBidWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7amJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyYjMzQ7LAogICAgJiMzNDtqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uJiMzNDssCiAgICAmIzM0O2piZDJfam91cm5hbF9sb2NrX3VwZGF0ZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdhaXQgbG9vcCBjb25kaXRpb24gaW4gYGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNgLCBhIGNvcmUgc3luY2hyb25pemF0aW9uIGZ1bmN0aW9uIGluIHRoZSBKQkQyIGpvdXJuYWxpbmcgbGF5ZXIgdXNlZCBieSBleHQ0LiBJdCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBjaGVja2luZyBgdF91cGRhdGVzYCBhbmQgYHByZXBhcmVfdG9fd2FpdGAsIHdoaWNoIGFmZmVjdHMgaG93IHRyYW5zYWN0aW9uIGNvbW1pdHMgd2FpdCBmb3Igb3V0c3RhbmRpbmcgdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zIG9yIGhhbmdzIGR1cmluZyBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzJiMzNDssCiAgICAmIzM0O2piZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb24mIzM0OywKICAgICYjMzQ7amJkMl9qb3VybmFsX2xvY2tfdXBkYXRlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb29wIGNvbmRpdGlvbiBpbiBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AsIGEgY29yZSBzeW5jaHJvbml6YXRpb24gZnVuY3Rpb24gaW4gdGhlIEpCRDIgam91cm5hbGluZyBsYXllciB1c2VkIGJ5IGV4dDQuIEl0IGNoYW5nZXMgdGhlIG9yZGVyIG9mIGNoZWNraW5nIGB0X3VwZGF0ZXNgIGFuZCBgcHJlcGFyZV90b193YWl0YCwgd2hpY2ggYWZmZWN0cyBob3cgdHJhbnNhY3Rpb24gY29tbWl0cyB3YWl0IGZvciBvdXRzdGFuZGluZyB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgb3IgaGFuZ3MgZHVyaW5nIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjUzOjU4LjEwODMyNzAxOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMDgxNTUxMTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzXCIsXG4gICAgXCJqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uXCIsXG4gICAgXCJqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdhaXQgbG9vcCBjb25kaXRpb24gaW4gYGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNgLCBhIGNvcmUgc3luY2hyb25pemF0aW9uIGZ1bmN0aW9uIGluIHRoZSBKQkQyIGpvdXJuYWxpbmcgbGF5ZXIgdXNlZCBieSBleHQ0LiBJdCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBjaGVja2luZyBgdF91cGRhdGVzYCBhbmQgYHByZXBhcmVfdG9fd2FpdGAsIHdoaWNoIGFmZmVjdHMgaG93IHRyYW5zYWN0aW9uIGNvbW1pdHMgd2FpdCBmb3Igb3V0c3RhbmRpbmcgdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgb3IgaGFuZ3MgZHVyaW5nIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6NTM6NTguMTA4MzMzOTE5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjkwNjM3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3Yjk1MjE3MzIyMzE3ZTU5MmQxN2YyNzNiNGViNjc0ZThjOGMxY2RmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMTQ6NTM6NTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvamJkMi90cmFuc2FjdGlvbi5jIGIvZnMvamJkMi90cmFuc2FjdGlvbi5jXFxuaW5kZXggNWNjN2QwOTdiMmFjOC4uMGYxOTNkMDJhMDU0NyAxMDA2NDRcXG4tLS0gYS9mcy9qYmQyL3RyYW5zYWN0aW9uLmNcXG4rKysgYi9mcy9qYmQyL3RyYW5zYWN0aW9uLmNcXG5AQCAtODMxLDE1ICs4MzEsMTIgQEAgdm9pZCBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzKGpvdXJuYWxfdCAqam91cm5hbClcXG4gXFx0XFx0ICovXFxuIFxcdFxcdHRyYW5zYWN0aW9uX3QgKnRyYW5zYWN0aW9uID0gam91cm5hbC1cXHUwMDNlal9ydW5uaW5nX3RyYW5zYWN0aW9uO1xcbiBcXG4tXFx0XFx0aWYgKCF0cmFuc2FjdGlvbilcXG4rXFx0XFx0aWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoXFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X3VwZGF0ZXMpKVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuIFxcdFxcdHByZXBhcmVfdG9fd2FpdChcXHUwMDI2am91cm5hbC1cXHUwMDNlal93YWl0X3VwZGF0ZXMsIFxcdTAwMjZ3YWl0LFxcbiBcXHRcXHRcXHRcXHRUQVNLX1VOSU5URVJSVVBUSUJMRSk7XFxuLVxcdFxcdGlmICghYXRvbWljX3JlYWQoXFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X3VwZGF0ZXMpKSB7XFxuLVxcdFxcdFxcdGZpbmlzaF93YWl0KFxcdTAwMjZqb3VybmFsLVxcdTAwM2VqX3dhaXRfdXBkYXRlcywgXFx1MDAyNndhaXQpO1xcbi1cXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0fVxcbitcXG4gXFx0XFx0d3JpdGVfdW5sb2NrKFxcdTAwMjZqb3VybmFsLVxcdTAwM2VqX3N0YXRlX2xvY2spO1xcbiBcXHRcXHRzY2hlZHVsZSgpO1xcbiBcXHRcXHRmaW5pc2hfd2FpdChcXHUwMDI2am91cm5hbC1cXHUwMDNlal93YWl0X3VwZGF0ZXMsIFxcdTAwMjZ3YWl0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6NTM6NTguMzc4MTMwMjQ1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODA4MTE3Mzg5OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNcIixcbiAgICBcImpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25cIixcbiAgICBcImpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb29wIGNvbmRpdGlvbiBpbiBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AsIGEgY29yZSBzeW5jaHJvbml6YXRpb24gZnVuY3Rpb24gaW4gdGhlIEpCRDIgam91cm5hbGluZyBsYXllciB1c2VkIGJ5IGV4dDQuIEl0IGNoYW5nZXMgdGhlIG9yZGVyIG9mIGNoZWNraW5nIGB0X3VwZGF0ZXNgIGFuZCBgcHJlcGFyZV90b193YWl0YCwgd2hpY2ggYWZmZWN0cyBob3cgdHJhbnNhY3Rpb24gY29tbWl0cyB3YWl0IGZvciBvdXRzdGFuZGluZyB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucyBvciBoYW5ncyBkdXJpbmcgZmlsZXN5c3RlbSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3Yjk1MjE3MzIyMzE3ZTU5MmQxN2YyNzNiNGViNjc0ZThjOGMxY2RmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxNDo1Mzo1NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2piZDIvdHJhbnNhY3Rpb24uYyBiL2ZzL2piZDIvdHJhbnNhY3Rpb24uY1xuaW5kZXggNWNjN2QwOTdiMmFjOC4uMGYxOTNkMDJhMDU0NyAxMDA2NDRcbi0tLSBhL2ZzL2piZDIvdHJhbnNhY3Rpb24uY1xuKysrIGIvZnMvamJkMi90cmFuc2FjdGlvbi5jXG5AQCAtODMxLDE1ICs4MzEsMTIgQEAgdm9pZCBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzKGpvdXJuYWxfdCAqam91cm5hbClcbiBcdFx0ICovXG4gXHRcdHRyYW5zYWN0aW9uX3QgKnRyYW5zYWN0aW9uID0gam91cm5hbC1cdTAwM2VqX3J1bm5pbmdfdHJhbnNhY3Rpb247XG4gXG4tXHRcdGlmICghdHJhbnNhY3Rpb24pXG4rXHRcdGlmICghdHJhbnNhY3Rpb24gfHwgIWF0b21pY19yZWFkKFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfdXBkYXRlcykpXG4gXHRcdFx0YnJlYWs7XG4gXG4gXHRcdHByZXBhcmVfdG9fd2FpdChcdTAwMjZqb3VybmFsLVx1MDAzZWpfd2FpdF91cGRhdGVzLCBcdTAwMjZ3YWl0LFxuIFx0XHRcdFx0VEFTS19VTklOVEVSUlVQVElCTEUpO1xuLVx0XHRpZiAoIWF0b21pY19yZWFkKFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfdXBkYXRlcykpIHtcbi1cdFx0XHRmaW5pc2hfd2FpdChcdTAwMjZqb3VybmFsLVx1MDAzZWpfd2FpdF91cGRhdGVzLCBcdTAwMjZ3YWl0KTtcbi1cdFx0XHRicmVhaztcbi1cdFx0fVxuK1xuIFx0XHR3cml0ZV91bmxvY2soXHUwMDI2am91cm5hbC1cdTAwM2VqX3N0YXRlX2xvY2spO1xuIFx0XHRzY2hlZHVsZSgpO1xuIFx0XHRmaW5pc2hfd2FpdChcdTAwMjZqb3VybmFsLVx1MDAzZWpfd2FpdF91cGRhdGVzLCBcdTAwMjZ3YWl0KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjUzOjU4LjM3ODEzMTUyNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MjA5MzQ5NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUcmFuc2FjdGlvbiBVcGRhdGUgV2FpdCBDb25kaXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2Agd2l0aGluIGBmcy9qYmQyL3RyYW5zYWN0aW9uLmNgLiBJdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCB0aGUgc3VidGxlIGNoYW5nZSBpcyB3b3J0aCBkaWdnaW5nIGludG8uIFByZXZpb3VzbHksIHRoZSBjb2RlIHdhaXRlZCBmb3IgdHJhbnNhY3Rpb24gdXBkYXRlcyB1c2luZyBhIGxvb3AuIFRoZSBsb29wJ3MgZXhpdCBjb25kaXRpb24gdXNlZCB0byBiZSBhIGJpdC4uLiBzZXBhcmF0ZWQsIHNoYWxsIHdlIHNheS4gRmlyc3QsIGl0IGNoZWNrZWQgaWYgYHRyYW5zYWN0aW9uYCB3YXMgdmFsaWQgYmVmb3JlIGNhbGxpbmcgYHByZXBhcmVfdG9fd2FpdGAuIFRoZW4sICphZnRlciogdGhhdCBjYWxsLCBpdCdkIGNoZWNrIGlmIGBhdG9taWNfcmVhZChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpYCB3YXMgbm9uLXplcm8uIEVzc2VudGlhbGx5LCBtYWtpbmcgc3VyZSB0aGVyZSBhcmUgYWN0dWFsbHkgdXBkYXRlcyB0byB3YWl0IGZvci5cblxuVGhpcyBwYXRjaCwgaG93ZXZlciwgcmVmYWN0b3JzIHRoYXQgbG9naWMuIFRoZSBjcnVjaWFsIHBhcnQgaXMgbm93IHRvIGNoZWNrIGAhdHJhbnNhY3Rpb24gfHwgIWF0b21pY19yZWFkKFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfdXBkYXRlcylgICpiZWZvcmUqIHRoZSBgcHJlcGFyZV90b193YWl0YC4gVGhpcyBtZWFucyBpdCBzaG9ydC1jaXJjdWl0cyB0aGUgd2FpdCBpZiB0aGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBOVUxMIG9yIHRoZXJlIGFyZSBubyB1cGRhdGVzIHRvIHdhaXQgZm9yLCBwb3RlbnRpYWxseSBvcHRpbWl6aW5nIHRoZSBwYXRoIGJ5IHNraXBwaW5nIHRoZSBgcHJlcGFyZV90b193YWl0YCBjYWxsIGlmIGl0IGlzbid0IG5lY2Vzc2FyeS4gSXQncyBhIG1pbm9yIGNoYW5nZSBpbiB0aGUgcGxhY2VtZW50IG9mIHRoZSBjaGVjaywgYnV0IGl0IGxvb2tzIGxpa2UgYSBuaWNlIG9wdGltaXphdGlvbiB0byBwb3RlbnRpYWxseSBwcmV2ZW50IGEgc3B1cmlvdXMgd2FrZS11cCBpbiBhIGNvcm5lciBjYXNlLiBJJ2QgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvbnRleHRzIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGFzc2VzcyB0aGUgYWN0dWFsIGltcGFjdCwgYnV0IG9uIHRoZSBzdXJmYWNlLCB0aGlzIGxvb2tzIGxpa2UgYSBjbGVhbmVyLCBtb3JlIGVmZmljaWVudCB3YXkgdG8gaGFuZGxlIHRoZSB3YWl0IGNvbmRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjAzLjI5OTA2OTQxMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjczMTc2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2piZDIvdHJhbnNhY3Rpb24uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODExPUVYUE9SVF9TWU1CT0woamJkMl9qb3VybmFsX3Jlc3RhcnQpO1xcbi0tXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTgxNi0gKi9cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6ODE3OnZvaWQgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTgxOC17XFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODU3PXZvaWQgamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtODcyLVxcdC8qIFdhaXQgdW50aWwgdGhlcmUgYXJlIG5vIHJ1bm5pbmcgdF91cGRhdGVzICovXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jOjg3MzpcXHRqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzKGpvdXJuYWwpO1xcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04NzQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjAzLjM0MTgwODA4MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTQ5Njk3NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgYSBLZXJuZWwgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBtb2RpZmljYXRpb24gdG8gYGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNgLiBSaWdodCBhd2F5LCB0aGF0IHJhaXNlcyBhIGZsYWcuIFRoaXMgaXMgY29yZSBKQkQyIHN0dWZmLCB3aGljaCBtZWFucyBpdCdzIGZ1bmRhbWVudGFsIHRvIGV4dDQgYW5kIG9jZnMyLCB0d28gdmVyeSB3aWRlbHkgdXNlZCBmaWxlc3lzdGVtcy4gQW55IGNoYW5nZSBkb3duIGhlcmUgaW4gdGhlIEpCRDIgc3Vic3lzdGVtIGlzIGEgaGlnaC1pbXBhY3QgbW9kaWZpY2F0aW9uLiBTaW5jZSB0aGlzIHRvdWNoZXMga2VybmVsIGxvZ2ljLCBpdCAqYWJzb2x1dGVseSogbmVlZHMgcmlnb3JvdXMgdGVzdGluZy4gTXkgZ3V0IHJlYWN0aW9uIGlzIHRoYXQgd2UgbmVlZCB0byBmdXp6IHRoaXMgYWdncmVzc2l2ZWx5LiBJJ20gZ29pbmcgdG8gd2FudCB0byBtYWtlIHN1cmUgdGhlIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgc3VidGxlIGNvcnJ1cHRpb24gb3IgY29uY3VycmVuY3kgYnVncy4gQmVmb3JlIGdvaW5nIGFueSBmdXJ0aGVyLCBsZXQgbWUgZ28gY2hlY2sgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWdzIGFuZCBzZWUgd2hhdCB0aGUgc2V0dGluZ3MgYXJlIGZvciBKQkQyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoaXMgY2hhbmdlIGFuZCBob3cgd2lkZWx5IGl0J3MgZGVwbG95ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MzUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDo1NDowNy4xNTY3Nzk3NDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwODUzNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEpCRDJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvamJkMi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2piZDIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2piZDIvS2NvbmZpZzoyOmNvbmZpZyBKQkQyXFxuZnMvamJkMi9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmZzL2piZDIvS2NvbmZpZy0xOS1cXG5mcy9qYmQyL0tjb25maWc6MjA6Y29uZmlnIEpCRDJfREVCVUdcXG5mcy9qYmQyL0tjb25maWctMjEtXFx0Ym9vbCBcXFwiSkJEMiAoZXh0NCkgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjA3LjE5ODg2ODg1NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTAyMDM1MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgSkJEMiBEZXBlbmRlbmNpZXMqKlxuXG5SaWdodCwgc28gSkJEMiBpcyBmbGFnZ2VkIGFzIGJlaW5nIGVzc2VudGlhbCBmb3IgRVhUNCBhbmQgT0NGUzIuIEludGVyZXN0aW5nLiBMZXQncyBkaWcgZGVlcGVyLiBUaGUgZmlyc3QgcGxhY2UgdG8gZ28sIG5hdHVyYWxseSwgaXMgdGhlIEtjb25maWcgZmlsZXMgZm9yIHRob3NlIGZpbGVzeXN0ZW1zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqZXhhY3RseSogaG93IEpCRDIgaXMgYnJvdWdodCBpbnRvIHRoZSBwaWN0dXJlIGluIGVhY2ggY2FzZS4gS25vd2luZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyBKQkQyIGlzIHdvdmVuIGluLiBUaW1lIHRvIGNyYWNrIG9wZW4gYGZzL2V4dDQvS2NvbmZpZ2AgYW5kIGBmcy9vY2ZzMi9LY29uZmlnYCBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIHN5c3RlbSBpcyB0ZWxsaW5nIHVzLiBUaGlzIGlzIGxpa2VseSB0aGUgYmVzdCBwYXRoIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBKQkQyIGlzIGxpbmtlZCBpbiwgZWl0aGVyIGRpcmVjdGx5IG9yIHRyYW5zaXRpdmVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI0OSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjEwLjY0OTA3NDc1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTUzNDk1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgSkJEMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9LY29uZmlnPTI9Y29uZmlnIEVYVDRfRlNcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy00LVxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL2V4dDQvS2NvbmZpZzo1OlxcdHNlbGVjdCBKQkQyXFxuZnMvZXh0NC9LY29uZmlnLTYtXFx0c2VsZWN0IENSQzE2XFxuLS1cXG5mcy9vY2ZzMi9LY29uZmlnPTI9Y29uZmlnIE9DRlMyX0ZTXFxuLS1cXG5mcy9vY2ZzMi9LY29uZmlnLTUtXFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuZnMvb2NmczIvS2NvbmZpZzo2OlxcdHNlbGVjdCBKQkQyXFxuZnMvb2NmczIvS2NvbmZpZy03LVxcdHNlbGVjdCBDUkMzMlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDo1NDoxMC43MjA2MTM3NDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQwNDcxMTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IEVYVDQgYW5kIEpvdXJuYWxpbmcqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIEVuYWJsaW5nIGBFWFQ0X0ZTYCBpcyBhIHNvbGlkIGZpcnN0IHN0ZXA7IGEgZ29vZCBiYXNlIGNvbmZpZ3VyYXRpb24gdG8gc3RhcnQgd2l0aCwgb2J2aW91c2x5LiBOb3csIHRoZSBrZXkgc3ltYm9sIEkgbmVlZCB0byBmb2N1cyBvbiByaWdodCBub3cgaXMgYGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNgLiBVbmRlcnN0YW5kaW5nIHRoaXMgZnVuY3Rpb24gaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBpbiB0cmFja2luZyBkb3duIGFueSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgbmV4dCBxdWVzdGlvbiBpczogaXMgdGhpcyBzeW1ib2wgYWN0dWFsbHkgZXhwb3NlZD8gVGltZSB0byBjaGVjayBpZiBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AgaXMgZXhwb3J0ZWQsIHRvIG1ha2Ugc3VyZSBpdCdzIGFjY2Vzc2libGUgd2hlcmUgSSBuZWVkIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQ2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6NTQ6MTQuMDYxMDg3MzgxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTg4OTk5OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9qYmQyL3RyYW5zYWN0aW9uLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjE0LjEwMjk4NzQyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDAzMzYxNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgRXhwb3J0IElzc3VlIGluIHRoZSBKb3VybmFsaW5nIExheWVyKipcblxuUmlnaHQsIHNvbWV0aGluZydzIG5vdCBxdWl0ZSByaWdodC4gVGhlIGNvZGUgaXNuJ3QgYmVoYXZpbmcgYXMgZXhwZWN0ZWQgYW5kIEknbSBzdXNwZWN0aW5nIGFuIGV4cG9ydC1yZWxhdGVkIGlzc3VlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGpvdXJuYWxpbmcgbGF5ZXIsIHNwZWNpZmljYWxseSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgZmlsZSBzeXN0ZW0uIExldCdzIHN0YXJ0IHdpdGggYGZzL2piZDIvdHJhbnNhY3Rpb24uY2Agc2luY2UgdGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBqb3VybmFsaW5nIHByb2Nlc3MuIEknbSBnb2luZyB0byBqdW1wIGluIGFyb3VuZCBsaW5lIDgxNy4gVGhhdCBhcmVhIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgdHJhbnNhY3Rpb24gbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsbHkgd2hlcmUgdGhlIGV4cG9ydCBwcm9jZXNzIG9yIGl0cyBhYnNlbmNlIHdvdWxkIGJlIHJlZmxlY3RlZC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODkzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6NTQ6MTguMDQzMzI2MTI0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Njc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9qYmQyL3RyYW5zYWN0aW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODEwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODEwOlxcdH1cXG4gODExOlxcdEVYUE9SVF9TWU1CT0woamJkMl9qb3VybmFsX3Jlc3RhcnQpO1xcbiA4MTI6XFx0XFxuIDgxMzpcXHQvKlxcbiA4MTQ6XFx0ICogV2FpdHMgZm9yIGFueSBvdXRzdGFuZGluZyB0X3VwZGF0ZXMgdG8gZmluaXNoLlxcbiA4MTU6XFx0ICogVGhpcyBpcyBjYWxsZWQgd2l0aCB3cml0ZSBqX3N0YXRlX2xvY2sgaGVsZC5cXG4gODE2OlxcdCAqL1xcbiA4MTc6XFx0dm9pZCBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzKGpvdXJuYWxfdCAqam91cm5hbClcXG4gODE4OlxcdHtcXG4gODE5OlxcdFxcdERFRklORV9XQUlUKHdhaXQpO1xcbiA4MjA6XFx0XFxuIDgyMTpcXHRcXHR3aGlsZSAoMSkge1xcbiA4MjI6XFx0XFx0XFx0LypcXG4gODIzOlxcdFxcdFxcdCAqIE5vdGUgdGhhdCB0aGUgcnVubmluZyB0cmFuc2FjdGlvbiBjYW4gZ2V0IGZyZWVkIHVuZGVyIHVzIGlmXFxuIDgyNDpcXHRcXHRcXHQgKiB0aGlzIHRyYW5zYWN0aW9uIGlzIGdldHRpbmcgY29tbWl0dGVkIGluXFxuIDgyNTpcXHRcXHRcXHQgKiBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uKCkgLVxcdTAwM2VcXG4gODI2OlxcdFxcdFxcdCAqIGpiZDJfam91cm5hbF9mcmVlX3RyYW5zYWN0aW9uKCkuIFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdoZW4gd2VcXG4gODI3OlxcdFxcdFxcdCAqIHJlbGVhc2Ugal9zdGF0ZV9sb2NrIC1cXHUwMDNlIHNjaGVkdWxlKCkgLVxcdTAwM2UgYWNxdWlyZSBqX3N0YXRlX2xvY2suXFxuIDgyODpcXHRcXHRcXHQgKiBIZW5jZSB3ZSBzaG91bGQgZXZlcnl0aW1lIHJldHJpZXZlIG5ldyBqX3J1bm5pbmdfdHJhbnNhY3Rpb25cXG4gODI5OlxcdFxcdFxcdCAqIHZhbHVlIChhZnRlciBqX3N0YXRlX2xvY2sgcmVsZWFzZSBhY3F1aXJlIGN5Y2xlKSwgZWxzZSBpdCBtYXlcXG4gODMwOlxcdFxcdFxcdCAqIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUgb2Ygb2xkIGZyZWVkIHRyYW5zYWN0aW9uLlxcbiA4MzE6XFx0XFx0XFx0ICovXFxuIDgzMjpcXHRcXHRcXHR0cmFuc2FjdGlvbl90ICp0cmFuc2FjdGlvbiA9IGpvdXJuYWwtXFx1MDAzZWpfcnVubmluZ190cmFuc2FjdGlvbjtcXG4gODMzOlxcdFxcbiA4MzQ6XFx0XFx0XFx0aWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoXFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X3VwZGF0ZXMpKVxcbiA4MzU6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDgzNjpcXHRcXG4gODM3OlxcdFxcdFxcdHByZXBhcmVfdG9fd2FpdChcXHUwMDI2am91cm5hbC1cXHUwMDNlal93YWl0X3VwZGF0ZXMsIFxcdTAwMjZ3YWl0LFxcbiA4Mzg6XFx0XFx0XFx0XFx0XFx0VEFTS19VTklOVEVSUlVQVElCTEUpO1xcbiA4Mzk6XFx0XFxuIDg0MDpcXHRcXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNmpvdXJuYWwtXFx1MDAzZWpfc3RhdGVfbG9jayk7XFxuIDg0MTpcXHRcXHRcXHRzY2hlZHVsZSgpO1xcbiA4NDI6XFx0XFx0XFx0ZmluaXNoX3dhaXQoXFx1MDAyNmpvdXJuYWwtXFx1MDAzZWpfd2FpdF91cGRhdGVzLCBcXHUwMDI2d2FpdCk7XFxuIDg0MzpcXHRcXHRcXHR3cml0ZV9sb2NrKFxcdTAwMjZqb3VybmFsLVxcdTAwM2VqX3N0YXRlX2xvY2spO1xcbiA4NDQ6XFx0XFx0fVxcbiA4NDU6XFx0fVxcbiA4NDY6XFx0XFxuIDg0NzpcXHQvKipcXG4gODQ4OlxcdCAqIGpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXMgKCkgLSBlc3RhYmxpc2ggYSB0cmFuc2FjdGlvbiBiYXJyaWVyLlxcbiA4NDk6XFx0ICogQGpvdXJuYWw6ICBKb3VybmFsIHRvIGVzdGFibGlzaCBhIGJhcnJpZXIgb24uXFxuIDg1MDpcXHQgKlxcbiA4NTE6XFx0ICogVGhpcyBsb2NrcyBvdXQgYW55IGZ1cnRoZXIgdXBkYXRlcyBmcm9tIGJlaW5nIHN0YXJ0ZWQsIGFuZCBibG9ja3NcXG4gODUyOlxcdCAqIHVudGlsIGFsbCBleGlzdGluZyB1cGRhdGVzIGhhdmUgY29tcGxldGVkLCByZXR1cm5pbmcgb25seSBvbmNlIHRoZVxcbiA4NTM6XFx0ICogam91cm5hbCBpcyBpbiBhIHF1aWVzY2VudCBzdGF0ZSB3aXRoIG5vIHVwZGF0ZXMgcnVubmluZy5cXG4gODU0OlxcdCAqXFxuIDg1NTpcXHQgKiBUaGUgam91cm5hbCBsb2NrIHNob3VsZCBub3QgYmUgaGVsZCBvbiBlbnRyeS5cXG4gODU2OlxcdCAqL1xcbiA4NTc6XFx0dm9pZCBqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzKGpvdXJuYWxfdCAqam91cm5hbClcXG4gODU4OlxcdHtcXG4gODU5OlxcdFxcdGpiZDJfbWlnaHRfd2FpdF9mb3JfY29tbWl0KGpvdXJuYWwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDo1NDoxOC4wNDM0NzQ5NDRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzOTk3NjcwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBDb2RlJ3MgVmlzaWJpbGl0eSoqXG5cbkFscmlnaHQsIHNvIHRoaXMgZnVuY3Rpb24uLi4gaXQncyBub3QgZXhwbGljaXRseSBkZWNsYXJlZCBhcyBleHBvcnRlZCwgd2hpY2ggaXMgdGhlIGZpcnN0IHRoaW5nIEkgY2hlY2suIEJ1dCwgaG9sZCBvbiBhIHNlYywgaXQncyAqbm90KiBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSXMgaXQgbWF5YmUgYmVpbmcgZXhwb3J0ZWQgdGhyb3VnaCBzb21lIG90aGVyIHJvdXRlLCBkZWZpbmVkIGluIGEgZGlmZmVyZW50IGZpbGU/IExldCdzIHJ1bGUgdGhhdCBvdXQgcXVpY2tseS4gT2theSwgbm8sIHRoZSBleHBvcnQgaXMgbm90IGRlY2xhcmVkIGluIGFub3RoZXIgZmlsZS5cblxuV2FpdCwgSSByZWNhbGwgc2VlaW5nIGBqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzYCBzb21ld2hlcmUuIE5vdywgKnRoYXQncyogYW4gZXhwb3J0ZWQgZnVuY3Rpb24sIGFuZCBJIG5lZWQgdG8gYmUgc3VyZS4gTGV0J3MgbWFrZSBjZXJ0YWluIHRoYXQgZnVuY3Rpb24gaXMgZXhwb3J0ZWQsIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg1NywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6NTQ6MjEuOTgzNDU0NTE4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQ2NzAzOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9qYmQyL3RyYW5zYWN0aW9uLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjIyLjAyOTkyNzUzN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTY2NjQ2MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGlhZ25vc3RpYyBXb3JrZmxvdyBpbiBGaWxlIEV4cG9ydCBFeGFtaW5hdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIHN0ZXAgaW4gYW55IGZpbGUgaW50ZWdyaXR5IGNoZWNrIGlzIHRvIGVzdGFibGlzaCB0aGUgYmFzaWMgZmxvdyBvZiBvcGVyYXRpb25zLiBHaXZlbiB3aGF0J3Mgb24gbXkgbWVudGFsIHNjaGVtYXRpYywgbXkgaW1tZWRpYXRlIHN1c3BpY2lvbiBpcyB0aGF0IHRoZSBleHBvcnQgcm91dGluZSwgb3IgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBwcm9jZXNzLCBtaWdodCBiZSBhcHBlbmRpbmcgaXRzIG91dHB1dCBhdCB0aGUgYWJzb2x1dGUgZW5kIG9mIHRoZSB0YXJnZXQgZmlsZS4gSXQncyB0aGUgbW9zdCBjb21tb24gYW5kIGVhc2lseSBvdmVybG9va2VkIHBvaW50IGZvciBhIHByb2Nlc3MgdG8gZHVtcCBpdHMgZmluYWwgd29yay4gQSBxdWljayBzYW5pdHkgY2hlY2sgZm9yIHRoaXMgJ2VuZC1vZi1maWxlJyAoRU9GKSBleHBvcnQgaW1wbGVtZW50YXRpb24gaXMgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBiZWZvcmUgSSBtb3ZlIG9uIHRvIG1vcmUgZWxhYm9yYXRlIGRpYWdub3Npcy4gSSdsbCBuZWVkIHRvIHZlcmlmeSBpZiB0aGUgZmlsZSBzaXplIGNoYW5nZXMgY29ycmVzcG9uZCB0byBleHBlY3RlZCBkYXRhIHNpemUgaW4gdGhlIGxhdGVyIHN0YWdlcyBvZiB0aGlzIGRpYWdub3N0aWMuIEknbGwgZ28gZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEzOSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjI3Ljk5NjU3NjIwN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU4NTg1NzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvamJkMi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjI4LjA0MjQ0MzM0NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTY5MDY3OTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKldhaXQsIFRoYXQncyBFeHBvcnRlZD8qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJJ20ganVzdCBwYXJzaW5nIHRocm91Z2ggdGhpcyBhbmQgc29tZXRoaW5nJ3Mgbm90IHF1aXRlIHJpZ2h0LiBgamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlc2AuLi4gdGhhdCdzICpleHBvcnRlZCo/IEknbSBwcmV0dHkgc3VyZSBJIGtub3cgd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgZm9yLiBJdCBzaG91bGQgYmUgaW50ZXJuYWwgdG8gdGhlIGpvdXJuYWwgbGF5ZXIsIHNob3VsZG4ndCBpdD8gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGl0J3MgZGVlcGx5IGludm9sdmVkIGluIHRoZSBsb3ctbGV2ZWwgbG9ja2luZyBhbmQgdXBkYXRlcyB3aXRoaW4gdGhlIGpvdXJuYWwuIEV4cG9zaW5nIHRoYXQuLi4gdGhhdCBmZWVscyBsaWtlIGEgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCBhIHNpZ25pZmljYW50IGFic3RyYWN0aW9uIGxlYWsuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIGl0J3MgYmVpbmcgZXhwb3J0ZWQuIElzIHRoaXMgc29tZSBsZWdhY3kgYXJ0aWZhY3Q/IElzIGl0IHBhcnQgb2YgYSBzdXBwb3J0ZWQgaW50ZXJmYWNlIEknbSBub3QgYXdhcmUgb2Y/IE9yIGlzIGl0IGEgYnVnLCBhIG1pc2NvbmZpZ3VyYXRpb24sIG9yLCBldmVuIHdvcnNlLCBhIGRlbGliZXJhdGUgYmFja2Rvb3I/IEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdGhhdCdzIGNhbGxpbmcgdGhhdCBhbmQgZmlndXJlIG91dCB0aGUgY29udGV4dC4gVGhpcyBjb3VsZCBiZSBhIHNpZ25pZmljYW50IHByb2JsZW0uIFRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzODgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDo1NDozMi4wMTE1MTM1OTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjA2OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvamJkMi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvamJkMi9qb3VybmFsLmM9NTk9RVhQT1JUX1NZTUJPTChqYmQyX2pvdXJuYWxfc3RvcCk7XFxuZnMvamJkMi9qb3VybmFsLmM6NjA6RVhQT1JUX1NZTUJPTChqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzKTtcXG5mcy9qYmQyL2pvdXJuYWwuYy02MS1FWFBPUlRfU1lNQk9MKGpiZDJfam91cm5hbF91bmxvY2tfdXBkYXRlcyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjMyLjA1NDEyNTAzOVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDEzNTE5ODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBKb3VybmFsIFVwZGF0ZSBXYWl0ZXJzKipcblxuT2theSwgc28gSSd2ZSBwaW5wb2ludGVkIHRoZSByZWxldmFudCBjb2RlOyB0aGUgYGZzL2piZDIvam91cm5hbC5jYCBmaWxlLiBSaWdodCwgSSBzZWUgdGhhdCBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AgaXMgYSBub24tc3RhdGljIGZ1bmN0aW9uIOKAkyB0aGF0J3MgZXhjZWxsZW50LiBJdCBtZWFucyBpdCdzIGFjY2Vzc2libGUgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBtYWtpbmcgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGludmVzdGlnYXRpb24uIFRoYXQncyBhIHNvbGlkIGZvY3VzIHN5bWJvbC4gU2ltaWxhcmx5LCBgamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlc2AgbG9va3MgbGlrZSBhbm90aGVyIGltcG9ydGFudCBmdW5jdGlvbiByZWxhdGVkIHRvIHRoaXMgYXJlYS4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIGtlZXAgdHJhY2sgb2YgdGhhdCBvbmUuXG5cbk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGlkZW50aWZ5IHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzYC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBncmFwaCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgZ3Jhc3Agb2YgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBqb3VybmFsIHN5c3RlbS4gTGV0J3Mgc2VlIHdobydzIHdhaXRpbmcgZm9yIHRob3NlIHVwZGF0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NjQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDo1NDozNi4wNjc2NDg2MjJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTgxODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvamJkMi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvamJkMi9jb21taXQuYz0zNzY9dm9pZCBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uKGpvdXJuYWxfdCAqam91cm5hbClcXG4tLVxcbmZzL2piZDIvY29tbWl0LmMtNDgxLVxcdC8vIHdhaXRzIGZvciBhbnkgdF91cGRhdGVzIHRvIGZpbmlzaFxcbmZzL2piZDIvY29tbWl0LmM6NDgyOlxcdGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXMoam91cm5hbCk7XFxuZnMvamJkMi9jb21taXQuYy00ODMtXFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODExPUVYUE9SVF9TWU1CT0woamJkMl9qb3VybmFsX3Jlc3RhcnQpO1xcbi0tXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTgxNi0gKi9cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6ODE3OnZvaWQgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTgxOC17XFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODU3PXZvaWQgamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtODcyLVxcdC8qIFdhaXQgdW50aWwgdGhlcmUgYXJlIG5vIHJ1bm5pbmcgdF91cGRhdGVzICovXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jOjg3MzpcXHRqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzKGpvdXJuYWwpO1xcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04NzQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjM2LjExNTYzNDI2MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDI0ODA1MzIzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBKQkQyIFBhdGNoOiBSYWNlIENvbmRpdGlvbiBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGFuZCBgamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlc2AganVtcCBvdXQgYXMgaW50ZXJlc3Rpbmcgc3ltYm9scy4gYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGlzIGRlZmluaXRlbHkgYSBjb3JlIGZ1bmN0aW9uIGluIEpCRDIsIHNvIGxldCdzIGRpZyBpbi4gVGhlIHBhdGNoIGRlc2NyaXB0aW9uIG1lbnRpb25zIGEgcmFjZSBjb25kaXRpb24sIG9yIHBlcmhhcHMgYSBidWcsIHJlbGF0ZWQgdG8gaG93IGBwcmVwYXJlX3RvX3dhaXRgIGlzIGJlaW5nIHVzZWQuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSBgcHJlcGFyZV90b193YWl0YCB3YXMgY2FsbGVkICpiZWZvcmUqIGNoZWNraW5nIGAhYXRvbWljX3JlYWQoXHUwMDI2dHJhbnNhY3Rpb24tXHUwMDNldF91cGRhdGVzKWAuIElmIGB0X3VwZGF0ZXNgIHdhcyB6ZXJvLCBpdCB3b3VsZCBjYWxsIGBmaW5pc2hfd2FpdGAgYW5kIGJyZWFrIG91dCBvZiB0aGUgbG9vcC5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBvcmlnaW5hbCBjb2RlIGJsb2NrIGFuZCB0aGUgbmV3IGNvZGUuIFRoZSBvcmlnaW5hbCB3YXMgbGlrZSB0aGlzOlxuYGBgY1xuXHRcdHByZXBhcmVfdG9fd2FpdChcdTAwMjZqb3VybmFsLVx1MDAzZWpfd2FpdF91cGRhdGVzLCBcdTAwMjZ3YWl0LFxuXHRcdFx0XHRUQVNLX1VOSU5URVJSVVBUSUJMRSk7XG5cdFx0aWYgKCFhdG9taWNfcmVhZChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpKSB7XG5cdFx0XHRmaW5pc2hfd2FpdChcdTAwMjZqb3VybmFsLVx1MDAzZWpfd2FpdF91cGRhdGVzLCBcdTAwMjZ3YWl0KTtcblx0XHRcdGJyZWFrO1xuXHRcdH1cbmBgYFxuVGhlIG5ldyBjb2RlIHNpbXBsaWZpZXMgaXQgdG86XG5gYGBjXG5cdFx0aWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoXHUwMDI2dHJhbnNhY3Rpb24tXHUwMDNldF91cGRhdGVzKSlcblx0XHRcdGJyZWFrO1xuXG5cdFx0cHJlcGFyZV90b193YWl0KFx1MDAyNmpvdXJuYWwtXHUwMDNlal93YWl0X3VwZGF0ZXMsIFx1MDAyNndhaXQsXG5cdFx0XHRcdFRBU0tfVU5JTlRFUlJVUFRJQkxFKTtcbmBgYFxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMsIHdhaXQuLi4gaWYgYHRfdXBkYXRlc2AgYmVjb21lcyB6ZXJvICphZnRlciogdGhlIGNoZWNrIGJ1dCAqYmVmb3JlKiB0aGUgYHByZXBhcmVfdG9fd2FpdGAgY2FsbCwgd291bGRuJ3QgaXQgc3RpbGwgc2xlZXA/IE5vLCBgcHJlcGFyZV90b193YWl0YCBjaGFuZ2VzIHRoZSB0YXNrIHN0YXRlLCBidXQgaGFuZyBvbiwgdGhleSBtb3ZlZCB0aGUgYGF0b21pY19yZWFkYCBjaGVjayAqYmVmb3JlKiB0aGUgYHByZXBhcmVfdG9fd2FpdGAuIElmIHdlIGRvIGEgcXVpY2sgY2hlY2ssIGFuZCB0aGVuLCBgdF91cGRhdGVzYCBnb2VzIHRvIHplcm8sIHRoZSBjYWxsIHRvIGBzY2hlZHVsZSgpYCB3aWxsIHBvdGVudGlhbGx5IHNsZWVwIHRoZSB0YXNrIGZvcmV2ZXIuIEJ1dCB0aGF0J3Mgbm90IHJpZ2h0LlxuXG5BaCwgd2FpdCBhIHNlY29uZC4uLiB0aGlzIGxvb3AgaXMgbGlrZWx5IHJ1bm5pbmcgd2hpbGUgYSBsb2NrIGlzIGhlbGQsIGBqX3N0YXRlX2xvY2tgIC0gaXQncyBhIHdyaXRlIGxvY2ssIHNvIHRoZSB1bmxvY2sgc2hvdWxkIGJlIGNhbGxlZCBhZnRlciBgcHJlcGFyZV90b193YWl0YC4gU28sIHdoaWxlIHRoYXQgbG9jayBpcyBoZWxkLCBgdF91cGRhdGVzYCAqc2hvdWxkbid0KiBjaGFuZ2UsIHJpZ2h0PyBMZXQncyBjaGVjay4gU2luY2UgdGhlIHVubG9jayBpcyBjYWxsZWQgYWZ0ZXIgYHByZXBhcmVfdG9fd2FpdGAsIGB0X3VwZGF0ZXNgICpjYW5ub3QqIGNoYW5nZSB3aGlsZSB0aGUgbG9jayBpcyBoZWxkLiBTbywgaXMgdGhhdCB0cnVlPyBMZXQncyBjb25maXJtIGJ5IGNoZWNraW5nIHdoZXJlIGB0X3VwZGF0ZXNgIGlzIG1vZGlmaWVkOyBpdCBoYXMgdG8gYmUgbW9kaWZpZWQgYnkgYGpiZDJfam91cm5hbF9zdG9wYCwgYW5kIHRoYXQgZnVuY3Rpb24gdGFrZXMgYGpfc3RhdGVfbG9ja2AuIFNvLCB0aGlzIHBhdGNoIHByZXZlbnRzIGEgcmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDo1NDo0Ni4zNjM2OTAxNjlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMDQzODg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0b21pY18uKnRfdXBkYXRlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9qYmQyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9qYmQyL2NoZWNrcG9pbnQuYz03MDI9dm9pZCBfX2piZDJfam91cm5hbF9kcm9wX3RyYW5zYWN0aW9uKGpvdXJuYWxfdCAqam91cm5hbCwgdHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb24pXFxuLS1cXG5mcy9qYmQyL2NoZWNrcG9pbnQuYy03MjEtXFx0Sl9BU1NFUlQodHJhbnNhY3Rpb24tXFx1MDAzZXRfY2hlY2twb2ludF9saXN0ID09IE5VTEwpO1xcbmZzL2piZDIvY2hlY2twb2ludC5jOjcyMjpcXHRKX0FTU0VSVChhdG9taWNfcmVhZChcXHUwMDI2dHJhbnNhY3Rpb24tXFx1MDAzZXRfdXBkYXRlcykgPT0gMCk7XFxuZnMvamJkMi9jaGVja3BvaW50LmMtNzIzLVxcdEpfQVNTRVJUKGpvdXJuYWwtXFx1MDAzZWpfY29tbWl0dGluZ190cmFuc2FjdGlvbiAhPSB0cmFuc2FjdGlvbik7XFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODA9c3RhdGljIHZvaWQgamJkMl9nZXRfdHJhbnNhY3Rpb24oam91cm5hbF90ICpqb3VybmFsLFxcbi0tXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTg3LVxcdHRyYW5zYWN0aW9uLVxcdTAwM2V0X2V4cGlyZXMgPSBqaWZmaWVzICsgam91cm5hbC1cXHUwMDNlal9jb21taXRfaW50ZXJ2YWw7XFxuZnMvamJkMi90cmFuc2FjdGlvbi5jOjg4OlxcdGF0b21pY19zZXQoXFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X3VwZGF0ZXMsIDApO1xcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04OS1cXHRhdG9taWNfc2V0KFxcdTAwMjZ0cmFuc2FjdGlvbi1cXHUwMDNldF9vdXRzdGFuZGluZ19jcmVkaXRzLFxcbi0tXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jPTMxMj1zdGF0aWMgaW50IHN0YXJ0X3RoaXNfaGFuZGxlKGpvdXJuYWxfdCAqam91cm5hbCwgaGFuZGxlX3QgKmhhbmRsZSxcXG4tLVxcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy00MzQtXFx0aGFuZGxlLVxcdTAwM2VoX3N0YXJ0X2ppZmZpZXMgPSBqaWZmaWVzO1xcbmZzL2piZDIvdHJhbnNhY3Rpb24uYzo0MzU6XFx0YXRvbWljX2luYyhcXHUwMDI2dHJhbnNhY3Rpb24tXFx1MDAzZXRfdXBkYXRlcyk7XFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTQzNi1cXHRhdG9taWNfaW5jKFxcdTAwMjZ0cmFuc2FjdGlvbi1cXHUwMDNldF9oYW5kbGVfY291bnQpO1xcbi0tXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jPTY5OD1zdGF0aWMgdm9pZCBzdG9wX3RoaXNfaGFuZGxlKGhhbmRsZV90ICpoYW5kbGUpXFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtNzA0LVxcdEpfQVNTRVJUKGpvdXJuYWxfY3VycmVudF9oYW5kbGUoKSA9PSBoYW5kbGUpO1xcbmZzL2piZDIvdHJhbnNhY3Rpb24uYzo3MDU6XFx0Sl9BU1NFUlQoYXRvbWljX3JlYWQoXFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X3VwZGF0ZXMpIFxcdTAwM2UgMCk7XFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTcwNi1cXHRjdXJyZW50LVxcdTAwM2Vqb3VybmFsX2luZm8gPSBOVUxMO1xcbi0tXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTczMS1cXHRcXHRcXHRcXHRcXHRcXHR0cmFuc2FjdGlvbik7XFxuZnMvamJkMi90cmFuc2FjdGlvbi5jOjczMjpcXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcXHUwMDI2dHJhbnNhY3Rpb24tXFx1MDAzZXRfdXBkYXRlcykpXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTczMy1cXHRcXHR3YWtlX3VwKFxcdTAwMjZqb3VybmFsLVxcdTAwM2VqX3dhaXRfdXBkYXRlcyk7XFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODE3PXZvaWQgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtODMzLVxcbmZzL2piZDIvdHJhbnNhY3Rpb24uYzo4MzQ6XFx0XFx0aWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoXFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X3VwZGF0ZXMpKVxcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04MzUtXFx0XFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjQ2LjQxNjczODU3N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTI2MTQxOTkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbmN1cnJlbmN5IGluIHRoZSBKb3VybmFsaW5nIENvZGUqKlxuXG5Pa2F5LCBzbyBgc3RvcF90aGlzX2hhbmRsZWAgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSSBzZWUgdGhhdCBpdCB1c2VzIGBhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfdXBkYXRlcylgIHRvIGRlY3JlbWVudCBhIGNvdW50ZXIsIGFuZCBpZiBpdCBoaXRzIHplcm8sIGl0IHdha2VzIHVwIGEgd2FpdGluZyBwcm9jZXNzIHZpYSBgd2FrZV91cChcdTAwMjZqb3VybmFsLVx1MDAzZWpfd2FpdF91cGRhdGVzKWAuIE15IGZpcnN0IHRob3VnaHQgaXM6IHdhaXQsIGlzIHRoaXMgaGFwcGVuaW5nIHdpdGhvdXQgaG9sZGluZyBgal9zdGF0ZV9sb2NrYD8gVGhhdCBjb3VsZCBiZSBhIHJlY2lwZSBmb3IgcmFjZSBjb25kaXRpb25zIGlmIG5vdCBoYW5kbGVkIGNhcmVmdWxseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmN1cnJlbmN5IGltcGxpY2F0aW9ucyBoZXJlLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGZvciBgc3RvcF90aGlzX2hhbmRsZWAgdG8gY29uZmlybS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgYXRvbWljIG9wZXJhdGlvbiBjb3JyZWN0bHkgbWFuYWdlcyB0aGUgc3luY2hyb25pemF0aW9uLCBvciBpZiB0aGVyZSdzIGFueSBzdWJ0bGUgcmFjZSBjb25kaXRpb24gdGhhdCBJJ20gbWlzc2luZy4gVGhpcyB3YXJyYW50cyBjYXJlZnVsIHNjcnV0aW55OyBhIHN1YnRsZSBidWcgaW4gdGhpcyBhcmVhIGNhbiBiZSBjYXRhc3Ryb3BoaWMgZm9yIGRhdGEgaW50ZWdyaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTg3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6NTU6MDEuNjc4MTYwNzYxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9qYmQyL3RyYW5zYWN0aW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjk4LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjk4OlxcdHN0YXRpYyB2b2lkIHN0b3BfdGhpc19oYW5kbGUoaGFuZGxlX3QgKmhhbmRsZSlcXG4gNjk5OlxcdHtcXG4gNzAwOlxcdFxcdHRyYW5zYWN0aW9uX3QgKnRyYW5zYWN0aW9uID0gaGFuZGxlLVxcdTAwM2VoX3RyYW5zYWN0aW9uO1xcbiA3MDE6XFx0XFx0am91cm5hbF90ICpqb3VybmFsID0gdHJhbnNhY3Rpb24tXFx1MDAzZXRfam91cm5hbDtcXG4gNzAyOlxcdFxcdGludCByZXZva2VzO1xcbiA3MDM6XFx0XFxuIDcwNDpcXHRcXHRKX0FTU0VSVChqb3VybmFsX2N1cnJlbnRfaGFuZGxlKCkgPT0gaGFuZGxlKTtcXG4gNzA1OlxcdFxcdEpfQVNTRVJUKGF0b21pY19yZWFkKFxcdTAwMjZ0cmFuc2FjdGlvbi1cXHUwMDNldF91cGRhdGVzKSBcXHUwMDNlIDApO1xcbiA3MDY6XFx0XFx0Y3VycmVudC1cXHUwMDNlam91cm5hbF9pbmZvID0gTlVMTDtcXG4gNzA3OlxcdFxcdC8qXFxuIDcwODpcXHRcXHQgKiBTdWJ0cmFjdCBuZWNlc3NhcnkgcmV2b2tlIGRlc2NyaXB0b3IgYmxvY2tzIGZyb20gaGFuZGxlIGNyZWRpdHMuIFdlXFxuIDcwOTpcXHRcXHQgKiB0YWtlIGNhcmUgdG8gYWNjb3VudCBvbmx5IGZvciByZXZva2UgZGVzY3JpcHRvciBibG9ja3MgdGhlXFxuIDcxMDpcXHRcXHQgKiB0cmFuc2FjdGlvbiB3aWxsIHJlYWxseSBuZWVkIGFzIGxhcmdlIHNlcXVlbmNlcyBvZiB0cmFuc2FjdGlvbnMgd2l0aFxcbiA3MTE6XFx0XFx0ICogc21hbGwgbnVtYmVycyBvZiByZXZva2VzIGFyZSByZWxhdGl2ZWx5IGNvbW1vbi5cXG4gNzEyOlxcdFxcdCAqL1xcbiA3MTM6XFx0XFx0cmV2b2tlcyA9IGhhbmRsZS1cXHUwMDNlaF9yZXZva2VfY3JlZGl0c19yZXF1ZXN0ZWQgLSBoYW5kbGUtXFx1MDAzZWhfcmV2b2tlX2NyZWRpdHM7XFxuIDcxNDpcXHRcXHRpZiAocmV2b2tlcykge1xcbiA3MTU6XFx0XFx0XFx0aW50IHRfcmV2b2tlcywgcmV2b2tlX2Rlc2NyaXB0b3JzO1xcbiA3MTY6XFx0XFx0XFx0aW50IHJyX3Blcl9ibGsgPSBqb3VybmFsLVxcdTAwM2VqX3Jldm9rZV9yZWNvcmRzX3Blcl9ibG9jaztcXG4gNzE3OlxcdFxcbiA3MTg6XFx0XFx0XFx0V0FSTl9PTl9PTkNFKERJVl9ST1VORF9VUChyZXZva2VzLCBycl9wZXJfYmxrKVxcbiA3MTk6XFx0XFx0XFx0XFx0XFx0XFx1MDAzZSBoYW5kbGUtXFx1MDAzZWhfdG90YWxfY3JlZGl0cyk7XFxuIDcyMDpcXHRcXHRcXHR0X3Jldm9rZXMgPSBhdG9taWNfYWRkX3JldHVybihyZXZva2VzLFxcbiA3MjE6XFx0XFx0XFx0XFx0XFx0XFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X291dHN0YW5kaW5nX3Jldm9rZXMpO1xcbiA3MjI6XFx0XFx0XFx0cmV2b2tlX2Rlc2NyaXB0b3JzID1cXG4gNzIzOlxcdFxcdFxcdFxcdERJVl9ST1VORF9VUCh0X3Jldm9rZXMsIHJyX3Blcl9ibGspIC1cXG4gNzI0OlxcdFxcdFxcdFxcdERJVl9ST1VORF9VUCh0X3Jldm9rZXMgLSByZXZva2VzLCBycl9wZXJfYmxrKTtcXG4gNzI1OlxcdFxcdFxcdGhhbmRsZS1cXHUwMDNlaF90b3RhbF9jcmVkaXRzIC09IHJldm9rZV9kZXNjcmlwdG9ycztcXG4gNzI2OlxcdFxcdH1cXG4gNzI3OlxcdFxcdGF0b21pY19zdWIoaGFuZGxlLVxcdTAwM2VoX3RvdGFsX2NyZWRpdHMsXFxuIDcyODpcXHRcXHRcXHQgICBcXHUwMDI2dHJhbnNhY3Rpb24tXFx1MDAzZXRfb3V0c3RhbmRpbmdfY3JlZGl0cyk7XFxuIDcyOTpcXHRcXHRpZiAoaGFuZGxlLVxcdTAwM2VoX3Jzdl9oYW5kbGUpXFxuIDczMDpcXHRcXHRcXHRfX2piZDJfam91cm5hbF91bnJlc2VydmVfaGFuZGxlKGhhbmRsZS1cXHUwMDNlaF9yc3ZfaGFuZGxlLFxcbiA3MzE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0dHJhbnNhY3Rpb24pO1xcbiA3MzI6XFx0XFx0aWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoXFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X3VwZGF0ZXMpKVxcbiA3MzM6XFx0XFx0XFx0d2FrZV91cChcXHUwMDI2am91cm5hbC1cXHUwMDNlal93YWl0X3VwZGF0ZXMpO1xcbiA3MzQ6XFx0XFxuIDczNTpcXHRcXHRyd3NlbV9yZWxlYXNlKFxcdTAwMjZqb3VybmFsLVxcdTAwM2VqX3RyYW5zX2NvbW1pdF9tYXAsIF9USElTX0lQXyk7XFxuIDczNjpcXHRcXHQvKlxcbiA3Mzc6XFx0XFx0ICogU2NvcGUgb2YgdGhlIEdGUF9OT0ZTIGNvbnRleHQgaXMgb3ZlciBoZXJlIGFuZCBzbyB3ZSBjYW4gcmVzdG9yZSB0aGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6NTU6MDEuNjc4MjkzNTAxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NDI0Njc3Mzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbiBpbiBKQkQyIFRyYW5zYWN0aW9uIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGluIGBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzYCwgYW5kIGltbWVkaWF0ZWx5LCBteSBzcGlkZXkgc2Vuc2VzIGFyZSB0aW5nbGluZy4gIEkgc2VlIHRoYXQgYHN0b3BfdGhpc19oYW5kbGVgICpkb2Vzbid0KiBob2xkIGBqX3N0YXRlX2xvY2tgLCB3aGljaCBtZWFucyBgdF91cGRhdGVzYCBpcyBwb3RlbnRpYWxseSBiZWluZyBtb2RpZmllZCBjb25jdXJyZW50bHkuIFRoYXQncyB0aGUgZmlyc3QgcmVkIGZsYWcuICBUaGUgb3JpZ2luYWwgY29kZSB3YXMgY2hlY2tpbmcgYCFhdG9taWNfcmVhZChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpYCAqYWZ0ZXIqIHRoZSBgcHJlcGFyZV90b193YWl0YCBjYWxsLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgYW5kIGNvcnJlY3Qgd2FpdCBxdWV1ZSBwYXR0ZXJuOiBhZGQgdG8gdGhlIHF1ZXVlLCBjaGVjayB0aGUgY29uZGl0aW9uLCBwb3RlbnRpYWxseSBzY2hlZHVsZS5cblxuVGhlIHBhdGNoLCBob3dldmVyLCBzaGlmdHMgdGhpbmdzLiBJdCBub3cgY2hlY2tzIGAhdHJhbnNhY3Rpb24gfHwgIWF0b21pY19yZWFkKFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfdXBkYXRlcylgICpiZWZvcmUqIGBwcmVwYXJlX3RvX3dhaXRgLiBXYWl0IGEgc2Vjb25k4oCmIHRoYXQgc21lbGxzIGxpa2UgYSBjbGFzc2ljIHJhY2UuIElmIGB0X3VwZGF0ZXNgIGdvZXMgdG8gemVybyAqYWZ0ZXIqIHRoYXQgaW5pdGlhbCBjaGVjayBidXQgKmJlZm9yZSogYHByZXBhcmVfdG9fd2FpdGAgaXMgY2FsbGVkLCB0aGUgd2FrZXVwIHNpZ25hbCB3aWxsIGJlIGxvc3QhIGBwcmVwYXJlX3RvX3dhaXRgIHdpbGwgdGhlbiBhZGQgdGhlIHRhc2sgdG8gdGhlIHdhaXQgcXVldWUsIHNldCBpdCB0byBgVEFTS19VTklOVEVSUlVQVElCTEVgLCBhbmQgY2FsbCBgc2NoZWR1bGUoKWAsIGxlYWRpbmcgdG8gYW4gaW5kZWZpbml0ZSBzbGVlcC4gVGhpcyAqaGFzKiB0byBiZSBhIGJ1ZyFcblxuQW5kIHRoZW4gSSByZWFsaXplLi4uIGlzIHRoZSBwYXRjaCBjb3JyZWN0PyBBZnRlciByZXZpZXdpbmcgdGhlIGNoYW5nZSBhZ2FpbiBhbmQgdGhpbmtpbmcgYWJvdXQgaG93IGBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzYCBpcyBjYWxsZWQsIGl0IHJlcXVpcmVzIHRoZSBgal9zdGF0ZV9sb2NrYCB0byBiZSBoZWxkIHdoZW4gdGhlIHdha2V1cCBpcyBjYWxsZWQuIEJ1dCBgc3RvcF90aGlzX2hhbmRsZWAgZG9lc24ndCB0YWtlIHRoYXQgbG9jayBzbyB0aGF0J3Mgd2hlcmUgdGhlIHByb2JsZW0gaXMuICBUaGUgb3JpZ2luYWwgY29kZSBjYWxsZWQgYHByZXBhcmVfdG9fd2FpdGAgKmJlZm9yZSogdGhlIGNoZWNrLCBhbmQgdGhlIG5ldyBjb2RlIGludHJvZHVjZXMgYSByYWNlISAgSSBjYW4gdmlzdWFsaXplIHRoZSBwb3RlbnRpYWwgc2NlbmFyaW86IGB0X3VwZGF0ZXNgIGJlY29tZXMgemVybyBiZWZvcmUgYHByZXBhcmVfdG9fd2FpdGAsIGB3YWtlX3VwYCBoYXBwZW5zLCBidXQgaXQgZG9lc24ndCBmaW5kIHRoZSB0YXNrIGluIHRoZSB3YWl0IHF1ZXVlIGFuZCBkb2VzIG5vdGhpbmcuIFRoZW4gYHByZXBhcmVfdG9fd2FpdGAgYWRkcyB0aGUgc2xlZXBpbmcgdGFzay4gVGhlIHRhc2sgc2xlZXBzIGZvcmV2ZXIuXG5cbkhvd2V2ZXIsIEknbSBub3QgaGVyZSB0byBqdWRnZSB0aGUgcGF0Y2gncyBjb3JyZWN0bmVzcywgb3IgdG8gZml4IHRoZSBjb2RlLCBJIGFtIGhlcmUgdG8gZGVjaWRlIGlmIHRoaXMgcmVxdWlyZXMgZnV6emluZyEgQ29uc2lkZXJpbmcgdGhhdCB0aGlzIGlzIEpCRDIsIGEgY29yZSBqb3VybmFsaW5nIGxheWVyIHVzZWQgYnkgZXh0NCAoYW5kIHBvdGVudGlhbGx5IG90aGVyIGZpbGVzeXN0ZW1zIGlmIGNvbmZpZ3VyZWQpLCBhbmQgYmVjYXVzZSB0aGlzIGNoYW5nZXMgYSBjcml0aWNhbCBzeW5jaHJvbml6YXRpb24gcG9pbnQgaW4gYSBjb3JlIGZ1bmN0aW9uLCBJIGhhdmUgdG8gY29uY2x1ZGUgdGhhdCB0aGlzIGRlZmluaXRlbHkgd2FycmFudHMgZnV6emluZy4gQSBoYW5nIGxpa2UgdGhpcyB3b3VsZCBiZSBjYXRhc3Ryb3BoaWMgZm9yIGEgZmlsZXN5c3RlbSwgYW5kIGZ1enppbmcgaXMgdGhlIGJlc3Qgd2F5IHRvIHVuY292ZXIgc3VjaCBwcm9ibGVtcy5cblxuTGV0J3MgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uLiBgRVhUNF9GU2Agc2hvdWxkIGJlIGVub3VnaCwgYXMgaXQgcHVsbHMgaW4gYEpCRDJgLiBJbmRlZWQsIGl0IGRvZXMhIEFuZCBgQ09ORklHX09DRlMyX0ZTYCBhbHNvLCBidXQgSSdsbCBzdGljayB0byBgRVhUNF9GU2AgdG8ga2VlcCBpdCBzaW1wbGUuIEknbGwgbWFrZSBzdXJlIHRvIGVuYWJsZSBgRVhUNF9GU2AgaW4gbXkgYEVuYWJsZUNvbmZpZ3NgLlxuXG5JIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBmb2N1cyBzeW1ib2xzIGZvciB0aGUgZnV6emVyLiBJdCdzIG9idmlvdXNseSBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AuIEFsc28gYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGJlY2F1c2UgdGhhdCdzIHdoYXQgY2FsbHMgdGhlIGZ1bmN0aW9uLCBhbmQgYGpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXNgIHRvIGNvdmVyIHRoZSBzdXJyb3VuZGluZyBjb2RlLlxuXG5DaGVja2luZyByZWFjaGFiaWxpdHk6IEkndmUgY29uZmlybWVkIHRoYXQgYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGNhbGxzIHRoZSB0YXJnZXQgZnVuY3Rpb24sIGFuZCB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgcGVyaW9kaWNhbGx5IG9yIG9uIGZzeW5jLiBHb29kLCBpdCdzIGEgY3JpdGljYWwgY29tbWl0IGZ1bmN0aW9uLiBJJ2xsIG1ha2Ugc3VyZSBgRVhUNF9GU2AgaXMgc3VmZmljaWVudCBhbmQgYWxzbyB0aGF0IG5vdGhpbmcgZWxzZSBpcyBuZWVkZWQuICBZZXMsIGBFWFQ0X0ZTYCBkb2VzIHRoZSB0cmljay5cblxuQWxyaWdodCwgbGV0J3MgcmV2aWV3IHRoZSBwYXRjaCBvbmUgbW9yZSB0aW1lLCBtYWtlIHN1cmUgSSBkaWRuJ3QgbWlzcyBhbnl0aGluZy4gWWVwLCBmdW5jdGlvbmFsIGNoYW5nZSBpbiBgZnMvamJkMi90cmFuc2FjdGlvbi5jYCwgZXhhY3RseSBhcyBleHBlY3RlZC4gTm93LCBpdCdzIGNsZWFyIHRoaXMgaXMgYSBoaWdoLXByaW9yaXR5IGZ1enppbmcgdGFyZ2V0LCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciBkYXRhIGNvcnJ1cHRpb24gb3IgaGFuZ3MgaWYgdGhpcyByYWNlIGNvbmRpdGlvbiBtYW5pZmVzdHMuIEknbGwgdXNlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgdG8gZGVmaW5lIHRoZSBmdXp6aW5nIHJlcXVpcmVtZW50cyBmb3IgdGhpcyBwb3RlbnRpYWwgYnVnLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTkyLCJPdXRwdXRUb2tlbnMiOjE2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDo1NToxOS4xMDI5NzQ0ODhaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Njg5MTE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNcIixcbiAgICBcImpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25cIixcbiAgICBcImpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb29wIGNvbmRpdGlvbiBpbiBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AsIGEgY29yZSBzeW5jaHJvbml6YXRpb24gZnVuY3Rpb24gaW4gdGhlIEpCRDIgam91cm5hbGluZyBsYXllciB1c2VkIGJ5IGV4dDQuIEl0IGNoYW5nZXMgdGhlIG9yZGVyIG9mIGNoZWNraW5nIGB0X3VwZGF0ZXNgIGFuZCBgcHJlcGFyZV90b193YWl0YCwgd2hpY2ggYWZmZWN0cyBob3cgdHJhbnNhY3Rpb24gY29tbWl0cyB3YWl0IGZvciBvdXRzdGFuZGluZyB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucyBvciBoYW5ncyBkdXJpbmcgZmlsZXN5c3RlbSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzXCIsXG4gICAgXCJqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uXCIsXG4gICAgXCJqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdhaXQgbG9vcCBjb25kaXRpb24gaW4gYGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNgLCBhIGNvcmUgc3luY2hyb25pemF0aW9uIGZ1bmN0aW9uIGluIHRoZSBKQkQyIGpvdXJuYWxpbmcgbGF5ZXIgdXNlZCBieSBleHQ0LiBJdCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBjaGVja2luZyBgdF91cGRhdGVzYCBhbmQgYHByZXBhcmVfdG9fd2FpdGAsIHdoaWNoIGFmZmVjdHMgaG93IHRyYW5zYWN0aW9uIGNvbW1pdHMgd2FpdCBmb3Igb3V0c3RhbmRpbmcgdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgb3IgaGFuZ3MgZHVyaW5nIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowsqmhz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 14:35:06 +0000 UTC FinishedAt: 2026-08-03 14:55:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "c6da675d-3666-4711-8f07-38faae1a6ec6" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "jbd2_journal_wait_updates", "jbd2_journal_commit_transaction", "jbd2_journal_lock_updates" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzJiMzNDssCiAgICAmIzM0O2piZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb24mIzM0OywKICAgICYjMzQ7amJkMl9qb3VybmFsX2xvY2tfdXBkYXRlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb29wIGNvbmRpdGlvbiBpbiBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AsIGEgY29yZSBzeW5jaHJvbml6YXRpb24gZnVuY3Rpb24gaW4gdGhlIEpCRDIgam91cm5hbGluZyBsYXllciB1c2VkIGJ5IGV4dDQuIEl0IGNoYW5nZXMgdGhlIG9yZGVyIG9mIGNoZWNraW5nIGB0X3VwZGF0ZXNgIGFuZCBgcHJlcGFyZV90b193YWl0YCwgd2hpY2ggYWZmZWN0cyBob3cgdHJhbnNhY3Rpb24gY29tbWl0cyB3YWl0IGZvciBvdXRzdGFuZGluZyB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgb3IgaGFuZ3MgZHVyaW5nIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdiOTUyMTczMjIzMTdlNTkyZDE3ZjI3M2I0ZWI2NzRlOGM4YzFjZGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDE0OjUzOjU3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2piZDIvdHJhbnNhY3Rpb24uYyBiL2ZzL2piZDIvdHJhbnNhY3Rpb24uY1xuaW5kZXggNWNjN2QwOTdiMmFjOC4uMGYxOTNkMDJhMDU0NyAxMDA2NDRcbi0tLSBhL2ZzL2piZDIvdHJhbnNhY3Rpb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvamJkMi90cmFuc2FjdGlvbi5jXG5AQCAtODMxLDE1ICYjNDM7ODMxLDEyIEBAIHZvaWQgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXG4gXHRcdCAqL1xuIFx0XHR0cmFuc2FjdGlvbl90ICp0cmFuc2FjdGlvbiA9IGpvdXJuYWwtXHUwMDNlal9ydW5uaW5nX3RyYW5zYWN0aW9uO1xuIFxuLVx0XHRpZiAoIXRyYW5zYWN0aW9uKVxuJiM0MztcdFx0aWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoXHUwMDI2dHJhbnNhY3Rpb24tXHUwMDNldF91cGRhdGVzKSlcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0cHJlcGFyZV90b193YWl0KFx1MDAyNmpvdXJuYWwtXHUwMDNlal93YWl0X3VwZGF0ZXMsIFx1MDAyNndhaXQsXG4gXHRcdFx0XHRUQVNLX1VOSU5URVJSVVBUSUJMRSk7XG4tXHRcdGlmICghYXRvbWljX3JlYWQoXHUwMDI2dHJhbnNhY3Rpb24tXHUwMDNldF91cGRhdGVzKSkge1xuLVx0XHRcdGZpbmlzaF93YWl0KFx1MDAyNmpvdXJuYWwtXHUwMDNlal93YWl0X3VwZGF0ZXMsIFx1MDAyNndhaXQpO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHR9XG4mIzQzO1xuIFx0XHR3cml0ZV91bmxvY2soXHUwMDI2am91cm5hbC1cdTAwM2VqX3N0YXRlX2xvY2spO1xuIFx0XHRzY2hlZHVsZSgpO1xuIFx0XHRmaW5pc2hfd2FpdChcdTAwMjZqb3VybmFsLVx1MDAzZWpfd2FpdF91cGRhdGVzLCBcdTAwMjZ3YWl0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2piZDJfam91cm5hbF93YWl0X3VwZGF0ZXMmIzM0OywKICAgICYjMzQ7amJkMl9qb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbiYjMzQ7LAogICAgJiMzNDtqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3YWl0IGxvb3AgY29uZGl0aW9uIGluIGBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzYCwgYSBjb3JlIHN5bmNocm9uaXphdGlvbiBmdW5jdGlvbiBpbiB0aGUgSkJEMiBqb3VybmFsaW5nIGxheWVyIHVzZWQgYnkgZXh0NC4gSXQgY2hhbmdlcyB0aGUgb3JkZXIgb2YgY2hlY2tpbmcgYHRfdXBkYXRlc2AgYW5kIGBwcmVwYXJlX3RvX3dhaXRgLCB3aGljaCBhZmZlY3RzIGhvdyB0cmFuc2FjdGlvbiBjb21taXRzIHdhaXQgZm9yIG91dHN0YW5kaW5nIHVwZGF0ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucyBvciBoYW5ncyBkdXJpbmcgZmlsZXN5c3RlbSBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2I5NTIxNzMyMjMxN2U1OTJkMTdmMjczYjRlYjY3NGU4YzhjMWNkZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMTQ6NTM6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9qYmQyL3RyYW5zYWN0aW9uLmMgYi9mcy9qYmQyL3RyYW5zYWN0aW9uLmMKaW5kZXggNWNjN2QwOTdiMmFjOC4uMGYxOTNkMDJhMDU0NyAxMDA2NDQKLS0tIGEvZnMvamJkMi90cmFuc2FjdGlvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2piZDIvdHJhbnNhY3Rpb24uYwpAQCAtODMxLDE1ICYjNDM7ODMxLDEyIEBAIHZvaWQgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpCiAJCSAqLwogCQl0cmFuc2FjdGlvbl90ICp0cmFuc2FjdGlvbiA9IGpvdXJuYWwtJmd0O2pfcnVubmluZ190cmFuc2FjdGlvbjsKIAotCQlpZiAoIXRyYW5zYWN0aW9uKQomIzQzOwkJaWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoJmFtcDt0cmFuc2FjdGlvbi0mZ3Q7dF91cGRhdGVzKSkKIAkJCWJyZWFrOwogCiAJCXByZXBhcmVfdG9fd2FpdCgmYW1wO2pvdXJuYWwtJmd0O2pfd2FpdF91cGRhdGVzLCAmYW1wO3dhaXQsCiAJCQkJVEFTS19VTklOVEVSUlVQVElCTEUpOwotCQlpZiAoIWF0b21pY19yZWFkKCZhbXA7dHJhbnNhY3Rpb24tJmd0O3RfdXBkYXRlcykpIHsKLQkJCWZpbmlzaF93YWl0KCZhbXA7am91cm5hbC0mZ3Q7al93YWl0X3VwZGF0ZXMsICZhbXA7d2FpdCk7Ci0JCQlicmVhazsKLQkJfQomIzQzOwogCQl3cml0ZV91bmxvY2soJmFtcDtqb3VybmFsLSZndDtqX3N0YXRlX2xvY2spOwogCQlzY2hlZHVsZSgpOwogCQlmaW5pc2hfd2FpdCgmYW1wO2pvdXJuYWwtJmd0O2pfd2FpdF91cGRhdGVzLCAmYW1wO3dhaXQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVHJhbnNhY3Rpb24gVXBkYXRlIFdhaXQgQ29uZGl0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2Agd2l0aGluIGBmcy9qYmQyL3RyYW5zYWN0aW9uLmNgLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgdGhlIHN1YnRsZSBjaGFuZ2UgaXMgd29ydGggZGlnZ2luZyBpbnRvLiBQcmV2aW91c2x5LCB0aGUgY29kZSB3YWl0ZWQgZm9yIHRyYW5zYWN0aW9uIHVwZGF0ZXMgdXNpbmcgYSBsb29wLiBUaGUgbG9vcCYjMzk7cyBleGl0IGNvbmRpdGlvbiB1c2VkIHRvIGJlIGEgYml0Li4uIHNlcGFyYXRlZCwgc2hhbGwgd2Ugc2F5LiBGaXJzdCwgaXQgY2hlY2tlZCBpZiBgdHJhbnNhY3Rpb25gIHdhcyB2YWxpZCBiZWZvcmUgY2FsbGluZyBgcHJlcGFyZV90b193YWl0YC4gVGhlbiwgKmFmdGVyKiB0aGF0IGNhbGwsIGl0JiMzOTtkIGNoZWNrIGlmIGBhdG9taWNfcmVhZCgmYW1wO3RyYW5zYWN0aW9uLSZndDt0X3VwZGF0ZXMpYCB3YXMgbm9uLXplcm8uIEVzc2VudGlhbGx5LCBtYWtpbmcgc3VyZSB0aGVyZSBhcmUgYWN0dWFsbHkgdXBkYXRlcyB0byB3YWl0IGZvci4KClRoaXMgcGF0Y2gsIGhvd2V2ZXIsIHJlZmFjdG9ycyB0aGF0IGxvZ2ljLiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIG5vdyB0byBjaGVjayBgIXRyYW5zYWN0aW9uIHx8ICFhdG9taWNfcmVhZCgmYW1wO3RyYW5zYWN0aW9uLSZndDt0X3VwZGF0ZXMpYCAqYmVmb3JlKiB0aGUgYHByZXBhcmVfdG9fd2FpdGAuIFRoaXMgbWVhbnMgaXQgc2hvcnQtY2lyY3VpdHMgdGhlIHdhaXQgaWYgdGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgTlVMTCBvciB0aGVyZSBhcmUgbm8gdXBkYXRlcyB0byB3YWl0IGZvciwgcG90ZW50aWFsbHkgb3B0aW1pemluZyB0aGUgcGF0aCBieSBza2lwcGluZyB0aGUgYHByZXBhcmVfdG9fd2FpdGAgY2FsbCBpZiBpdCBpc24mIzM5O3QgbmVjZXNzYXJ5LiBJdCYjMzk7cyBhIG1pbm9yIGNoYW5nZSBpbiB0aGUgcGxhY2VtZW50IG9mIHRoZSBjaGVjaywgYnV0IGl0IGxvb2tzIGxpa2UgYSBuaWNlIG9wdGltaXphdGlvbiB0byBwb3RlbnRpYWxseSBwcmV2ZW50IGEgc3B1cmlvdXMgd2FrZS11cCBpbiBhIGNvcm5lciBjYXNlLiBJJiMzOTtkIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb250ZXh0cyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBhc3Nlc3MgdGhlIGFjdHVhbCBpbXBhY3QsIGJ1dCBvbiB0aGUgc3VyZmFjZSwgdGhpcyBsb29rcyBsaWtlIGEgY2xlYW5lciwgbW9yZSBlZmZpY2llbnQgd2F5IHRvIGhhbmRsZSB0aGUgd2FpdCBjb25kaXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7amJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2piZDIvdHJhbnNhY3Rpb24uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODExPUVYUE9SVF9TWU1CT0woamJkMl9qb3VybmFsX3Jlc3RhcnQpO1xuLS1cbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04MTYtICovXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6ODE3OnZvaWQgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtODE4LXtcbi0tXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODU3PXZvaWQgamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXG4tLVxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTg3Mi1cdC8qIFdhaXQgdW50aWwgdGhlcmUgYXJlIG5vIHJ1bm5pbmcgdF91cGRhdGVzICovXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6ODczOlx0amJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsKTtcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04NzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzNQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGEgS2VybmVsIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBtb2RpZmljYXRpb24gdG8gYGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNgLiBSaWdodCBhd2F5LCB0aGF0IHJhaXNlcyBhIGZsYWcuIFRoaXMgaXMgY29yZSBKQkQyIHN0dWZmLCB3aGljaCBtZWFucyBpdCYjMzk7cyBmdW5kYW1lbnRhbCB0byBleHQ0IGFuZCBvY2ZzMiwgdHdvIHZlcnkgd2lkZWx5IHVzZWQgZmlsZXN5c3RlbXMuIEFueSBjaGFuZ2UgZG93biBoZXJlIGluIHRoZSBKQkQyIHN1YnN5c3RlbSBpcyBhIGhpZ2gtaW1wYWN0IG1vZGlmaWNhdGlvbi4gU2luY2UgdGhpcyB0b3VjaGVzIGtlcm5lbCBsb2dpYywgaXQgKmFic29sdXRlbHkqIG5lZWRzIHJpZ29yb3VzIHRlc3RpbmcuIE15IGd1dCByZWFjdGlvbiBpcyB0aGF0IHdlIG5lZWQgdG8gZnV6eiB0aGlzIGFnZ3Jlc3NpdmVseS4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgY2hhbmdlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgc3VidGxlIGNvcnJ1cHRpb24gb3IgY29uY3VycmVuY3kgYnVncy4gQmVmb3JlIGdvaW5nIGFueSBmdXJ0aGVyLCBsZXQgbWUgZ28gY2hlY2sgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWdzIGFuZCBzZWUgd2hhdCB0aGUgc2V0dGluZ3MgYXJlIGZvciBKQkQyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoaXMgY2hhbmdlIGFuZCBob3cgd2lkZWx5IGl0JiMzOTtzIGRlcGxveWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBKQkQyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvamJkMi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2piZDIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvamJkMi9LY29uZmlnOjI6Y29uZmlnIEpCRDJcbmZzL2piZDIvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5mcy9qYmQyL0tjb25maWctMTktXG5mcy9qYmQyL0tjb25maWc6MjA6Y29uZmlnIEpCRDJfREVCVUdcbmZzL2piZDIvS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7SkJEMiAoZXh0NCkgZGVidWdnaW5nIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQ5CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgSkJEMiBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIHNvIEpCRDIgaXMgZmxhZ2dlZCBhcyBiZWluZyBlc3NlbnRpYWwgZm9yIEVYVDQgYW5kIE9DRlMyLiBJbnRlcmVzdGluZy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIuIFRoZSBmaXJzdCBwbGFjZSB0byBnbywgbmF0dXJhbGx5LCBpcyB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgdGhvc2UgZmlsZXN5c3RlbXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpleGFjdGx5KiBob3cgSkJEMiBpcyBicm91Z2h0IGludG8gdGhlIHBpY3R1cmUgaW4gZWFjaCBjYXNlLiBLbm93aW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgaG93IEpCRDIgaXMgd292ZW4gaW4uIFRpbWUgdG8gY3JhY2sgb3BlbiBgZnMvZXh0NC9LY29uZmlnYCBhbmQgYGZzL29jZnMyL0tjb25maWdgIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgc3lzdGVtIGlzIHRlbGxpbmcgdXMuIFRoaXMgaXMgbGlrZWx5IHRoZSBiZXN0IHBhdGggZm9yIHVuZGVyc3RhbmRpbmcgaG93IEpCRDIgaXMgbGlua2VkIGluLCBlaXRoZXIgZGlyZWN0bHkgb3IgdHJhbnNpdGl2ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBKQkQyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZz0yPWNvbmZpZyBFWFQ0X0ZTXG4tLVxuZnMvZXh0NC9LY29uZmlnLTQtXHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL2V4dDQvS2NvbmZpZzo1Olx0c2VsZWN0IEpCRDJcbmZzL2V4dDQvS2NvbmZpZy02LVx0c2VsZWN0IENSQzE2XG4tLVxuZnMvb2NmczIvS2NvbmZpZz0yPWNvbmZpZyBPQ0ZTMl9GU1xuLS1cbmZzL29jZnMyL0tjb25maWctNS1cdHNlbGVjdCBCVUZGRVJfSEVBRFxuZnMvb2NmczIvS2NvbmZpZzo2Olx0c2VsZWN0IEpCRDJcbmZzL29jZnMyL0tjb25maWctNy1cdHNlbGVjdCBDUkMzMlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NDYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IEVYVDQgYW5kIEpvdXJuYWxpbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gRW5hYmxpbmcgYEVYVDRfRlNgIGlzIGEgc29saWQgZmlyc3Qgc3RlcDsgYSBnb29kIGJhc2UgY29uZmlndXJhdGlvbiB0byBzdGFydCB3aXRoLCBvYnZpb3VzbHkuIE5vdywgdGhlIGtleSBzeW1ib2wgSSBuZWVkIHRvIGZvY3VzIG9uIHJpZ2h0IG5vdyBpcyBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AuIFVuZGVyc3RhbmRpbmcgdGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBiZSBjcnVjaWFsIGluIHRyYWNraW5nIGRvd24gYW55IHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIG9yIHBvdGVudGlhbCBpc3N1ZXMuIFRoZSBuZXh0IHF1ZXN0aW9uIGlzOiBpcyB0aGlzIHN5bWJvbCBhY3R1YWxseSBleHBvc2VkPyBUaW1lIHRvIGNoZWNrIGlmIGBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzYCBpcyBleHBvcnRlZCwgdG8gbWFrZSBzdXJlIGl0JiMzOTtzIGFjY2Vzc2libGUgd2hlcmUgSSBuZWVkIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9qYmQyL3RyYW5zYWN0aW9uLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODkzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBFeHBvcnQgSXNzdWUgaW4gdGhlIEpvdXJuYWxpbmcgTGF5ZXIqKgoKUmlnaHQsIHNvbWV0aGluZyYjMzk7cyBub3QgcXVpdGUgcmlnaHQuIFRoZSBjb2RlIGlzbiYjMzk7dCBiZWhhdmluZyBhcyBleHBlY3RlZCBhbmQgSSYjMzk7bSBzdXNwZWN0aW5nIGFuIGV4cG9ydC1yZWxhdGVkIGlzc3VlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGpvdXJuYWxpbmcgbGF5ZXIsIHNwZWNpZmljYWxseSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgZmlsZSBzeXN0ZW0uIExldCYjMzk7cyBzdGFydCB3aXRoIGBmcy9qYmQyL3RyYW5zYWN0aW9uLmNgIHNpbmNlIHRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIGpvdXJuYWxpbmcgcHJvY2Vzcy4gSSYjMzk7bSBnb2luZyB0byBqdW1wIGluIGFyb3VuZCBsaW5lIDgxNy4gVGhhdCBhcmVhIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgdHJhbnNhY3Rpb24gbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsbHkgd2hlcmUgdGhlIGV4cG9ydCBwcm9jZXNzIG9yIGl0cyBhYnNlbmNlIHdvdWxkIGJlIHJlZmxlY3RlZC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9qYmQyL3RyYW5zYWN0aW9uLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDgxMDpcdH1cbiA4MTE6XHRFWFBPUlRfU1lNQk9MKGpiZDJfam91cm5hbF9yZXN0YXJ0KTtcbiA4MTI6XHRcbiA4MTM6XHQvKlxuIDgxNDpcdCAqIFdhaXRzIGZvciBhbnkgb3V0c3RhbmRpbmcgdF91cGRhdGVzIHRvIGZpbmlzaC5cbiA4MTU6XHQgKiBUaGlzIGlzIGNhbGxlZCB3aXRoIHdyaXRlIGpfc3RhdGVfbG9jayBoZWxkLlxuIDgxNjpcdCAqL1xuIDgxNzpcdHZvaWQgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXG4gODE4Olx0e1xuIDgxOTpcdFx0REVGSU5FX1dBSVQod2FpdCk7XG4gODIwOlx0XG4gODIxOlx0XHR3aGlsZSAoMSkge1xuIDgyMjpcdFx0XHQvKlxuIDgyMzpcdFx0XHQgKiBOb3RlIHRoYXQgdGhlIHJ1bm5pbmcgdHJhbnNhY3Rpb24gY2FuIGdldCBmcmVlZCB1bmRlciB1cyBpZlxuIDgyNDpcdFx0XHQgKiB0aGlzIHRyYW5zYWN0aW9uIGlzIGdldHRpbmcgY29tbWl0dGVkIGluXG4gODI1Olx0XHRcdCAqIGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb24oKSAtXHUwMDNlXG4gODI2Olx0XHRcdCAqIGpiZDJfam91cm5hbF9mcmVlX3RyYW5zYWN0aW9uKCkuIFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdoZW4gd2VcbiA4Mjc6XHRcdFx0ICogcmVsZWFzZSBqX3N0YXRlX2xvY2sgLVx1MDAzZSBzY2hlZHVsZSgpIC1cdTAwM2UgYWNxdWlyZSBqX3N0YXRlX2xvY2suXG4gODI4Olx0XHRcdCAqIEhlbmNlIHdlIHNob3VsZCBldmVyeXRpbWUgcmV0cmlldmUgbmV3IGpfcnVubmluZ190cmFuc2FjdGlvblxuIDgyOTpcdFx0XHQgKiB2YWx1ZSAoYWZ0ZXIgal9zdGF0ZV9sb2NrIHJlbGVhc2UgYWNxdWlyZSBjeWNsZSksIGVsc2UgaXQgbWF5XG4gODMwOlx0XHRcdCAqIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUgb2Ygb2xkIGZyZWVkIHRyYW5zYWN0aW9uLlxuIDgzMTpcdFx0XHQgKi9cbiA4MzI6XHRcdFx0dHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb24gPSBqb3VybmFsLVx1MDAzZWpfcnVubmluZ190cmFuc2FjdGlvbjtcbiA4MzM6XHRcbiA4MzQ6XHRcdFx0aWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoXHUwMDI2dHJhbnNhY3Rpb24tXHUwMDNldF91cGRhdGVzKSlcbiA4MzU6XHRcdFx0XHRicmVhaztcbiA4MzY6XHRcbiA4Mzc6XHRcdFx0cHJlcGFyZV90b193YWl0KFx1MDAyNmpvdXJuYWwtXHUwMDNlal93YWl0X3VwZGF0ZXMsIFx1MDAyNndhaXQsXG4gODM4Olx0XHRcdFx0XHRUQVNLX1VOSU5URVJSVVBUSUJMRSk7XG4gODM5Olx0XG4gODQwOlx0XHRcdHdyaXRlX3VubG9jayhcdTAwMjZqb3VybmFsLVx1MDAzZWpfc3RhdGVfbG9jayk7XG4gODQxOlx0XHRcdHNjaGVkdWxlKCk7XG4gODQyOlx0XHRcdGZpbmlzaF93YWl0KFx1MDAyNmpvdXJuYWwtXHUwMDNlal93YWl0X3VwZGF0ZXMsIFx1MDAyNndhaXQpO1xuIDg0MzpcdFx0XHR3cml0ZV9sb2NrKFx1MDAyNmpvdXJuYWwtXHUwMDNlal9zdGF0ZV9sb2NrKTtcbiA4NDQ6XHRcdH1cbiA4NDU6XHR9XG4gODQ2Olx0XG4gODQ3Olx0LyoqXG4gODQ4Olx0ICogamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlcyAoKSAtIGVzdGFibGlzaCBhIHRyYW5zYWN0aW9uIGJhcnJpZXIuXG4gODQ5Olx0ICogQGpvdXJuYWw6ICBKb3VybmFsIHRvIGVzdGFibGlzaCBhIGJhcnJpZXIgb24uXG4gODUwOlx0ICpcbiA4NTE6XHQgKiBUaGlzIGxvY2tzIG91dCBhbnkgZnVydGhlciB1cGRhdGVzIGZyb20gYmVpbmcgc3RhcnRlZCwgYW5kIGJsb2Nrc1xuIDg1MjpcdCAqIHVudGlsIGFsbCBleGlzdGluZyB1cGRhdGVzIGhhdmUgY29tcGxldGVkLCByZXR1cm5pbmcgb25seSBvbmNlIHRoZVxuIDg1MzpcdCAqIGpvdXJuYWwgaXMgaW4gYSBxdWllc2NlbnQgc3RhdGUgd2l0aCBubyB1cGRhdGVzIHJ1bm5pbmcuXG4gODU0Olx0ICpcbiA4NTU6XHQgKiBUaGUgam91cm5hbCBsb2NrIHNob3VsZCBub3QgYmUgaGVsZCBvbiBlbnRyeS5cbiA4NTY6XHQgKi9cbiA4NTc6XHR2b2lkIGpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXMoam91cm5hbF90ICpqb3VybmFsKVxuIDg1ODpcdHtcbiA4NTk6XHRcdGpiZDJfbWlnaHRfd2FpdF9mb3JfY29tbWl0KGpvdXJuYWwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODU3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBDb2RlJiMzOTtzIFZpc2liaWxpdHkqKgoKQWxyaWdodCwgc28gdGhpcyBmdW5jdGlvbi4uLiBpdCYjMzk7cyBub3QgZXhwbGljaXRseSBkZWNsYXJlZCBhcyBleHBvcnRlZCwgd2hpY2ggaXMgdGhlIGZpcnN0IHRoaW5nIEkgY2hlY2suIEJ1dCwgaG9sZCBvbiBhIHNlYywgaXQmIzM5O3MgKm5vdCogc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIElzIGl0IG1heWJlIGJlaW5nIGV4cG9ydGVkIHRocm91Z2ggc29tZSBvdGhlciByb3V0ZSwgZGVmaW5lZCBpbiBhIGRpZmZlcmVudCBmaWxlPyBMZXQmIzM5O3MgcnVsZSB0aGF0IG91dCBxdWlja2x5LiBPa2F5LCBubywgdGhlIGV4cG9ydCBpcyBub3QgZGVjbGFyZWQgaW4gYW5vdGhlciBmaWxlLgoKV2FpdCwgSSByZWNhbGwgc2VlaW5nIGBqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzYCBzb21ld2hlcmUuIE5vdywgKnRoYXQmIzM5O3MqIGFuIGV4cG9ydGVkIGZ1bmN0aW9uLCBhbmQgSSBuZWVkIHRvIGJlIHN1cmUuIExldCYjMzk7cyBtYWtlIGNlcnRhaW4gdGhhdCBmdW5jdGlvbiBpcyBleHBvcnRlZCwganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9qYmQyL3RyYW5zYWN0aW9uLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTM5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpYWdub3N0aWMgV29ya2Zsb3cgaW4gRmlsZSBFeHBvcnQgRXhhbWluYXRpb24qKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgc3RlcCBpbiBhbnkgZmlsZSBpbnRlZ3JpdHkgY2hlY2sgaXMgdG8gZXN0YWJsaXNoIHRoZSBiYXNpYyBmbG93IG9mIG9wZXJhdGlvbnMuIEdpdmVuIHdoYXQmIzM5O3Mgb24gbXkgbWVudGFsIHNjaGVtYXRpYywgbXkgaW1tZWRpYXRlIHN1c3BpY2lvbiBpcyB0aGF0IHRoZSBleHBvcnQgcm91dGluZSwgb3IgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBwcm9jZXNzLCBtaWdodCBiZSBhcHBlbmRpbmcgaXRzIG91dHB1dCBhdCB0aGUgYWJzb2x1dGUgZW5kIG9mIHRoZSB0YXJnZXQgZmlsZS4gSXQmIzM5O3MgdGhlIG1vc3QgY29tbW9uIGFuZCBlYXNpbHkgb3Zlcmxvb2tlZCBwb2ludCBmb3IgYSBwcm9jZXNzIHRvIGR1bXAgaXRzIGZpbmFsIHdvcmsuIEEgcXVpY2sgc2FuaXR5IGNoZWNrIGZvciB0aGlzICYjMzk7ZW5kLW9mLWZpbGUmIzM5OyAoRU9GKSBleHBvcnQgaW1wbGVtZW50YXRpb24gaXMgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBiZWZvcmUgSSBtb3ZlIG9uIHRvIG1vcmUgZWxhYm9yYXRlIGRpYWdub3Npcy4gSSYjMzk7bGwgbmVlZCB0byB2ZXJpZnkgaWYgdGhlIGZpbGUgc2l6ZSBjaGFuZ2VzIGNvcnJlc3BvbmQgdG8gZXhwZWN0ZWQgZGF0YSBzaXplIGluIHRoZSBsYXRlciBzdGFnZXMgb2YgdGhpcyBkaWFnbm9zdGljLiBJJiMzOTtsbCBnbyBkaWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9qYmQyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzODgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKldhaXQsIFRoYXQmIzM5O3MgRXhwb3J0ZWQ/KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkmIzM5O20ganVzdCBwYXJzaW5nIHRocm91Z2ggdGhpcyBhbmQgc29tZXRoaW5nJiMzOTtzIG5vdCBxdWl0ZSByaWdodC4gYGpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXNgLi4uIHRoYXQmIzM5O3MgKmV4cG9ydGVkKj8gSSYjMzk7bSBwcmV0dHkgc3VyZSBJIGtub3cgd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgZm9yLiBJdCBzaG91bGQgYmUgaW50ZXJuYWwgdG8gdGhlIGpvdXJuYWwgbGF5ZXIsIHNob3VsZG4mIzM5O3QgaXQ/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpdCYjMzk7cyBkZWVwbHkgaW52b2x2ZWQgaW4gdGhlIGxvdy1sZXZlbCBsb2NraW5nIGFuZCB1cGRhdGVzIHdpdGhpbiB0aGUgam91cm5hbC4gRXhwb3NpbmcgdGhhdC4uLiB0aGF0IGZlZWxzIGxpa2UgYSBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSwgb3IgYXQgdGhlIHZlcnkgbGVhc3QsIGEgc2lnbmlmaWNhbnQgYWJzdHJhY3Rpb24gbGVhay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogaXQmIzM5O3MgYmVpbmcgZXhwb3J0ZWQuIElzIHRoaXMgc29tZSBsZWdhY3kgYXJ0aWZhY3Q/IElzIGl0IHBhcnQgb2YgYSBzdXBwb3J0ZWQgaW50ZXJmYWNlIEkmIzM5O20gbm90IGF3YXJlIG9mPyBPciBpcyBpdCBhIGJ1ZywgYSBtaXNjb25maWd1cmF0aW9uLCBvciwgZXZlbiB3b3JzZSwgYSBkZWxpYmVyYXRlIGJhY2tkb29yPyBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRoYXQmIzM5O3MgY2FsbGluZyB0aGF0IGFuZCBmaWd1cmUgb3V0IHRoZSBjb250ZXh0LiBUaGlzIGNvdWxkIGJlIGEgc2lnbmlmaWNhbnQgcHJvYmxlbS4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2piZDIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2piZDIvam91cm5hbC5jPTU5PUVYUE9SVF9TWU1CT0woamJkMl9qb3VybmFsX3N0b3ApO1xuZnMvamJkMi9qb3VybmFsLmM6NjA6RVhQT1JUX1NZTUJPTChqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzKTtcbmZzL2piZDIvam91cm5hbC5jLTYxLUVYUE9SVF9TWU1CT0woamJkMl9qb3VybmFsX3VubG9ja191cGRhdGVzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc2NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBKb3VybmFsIFVwZGF0ZSBXYWl0ZXJzKioKCk9rYXksIHNvIEkmIzM5O3ZlIHBpbnBvaW50ZWQgdGhlIHJlbGV2YW50IGNvZGU7IHRoZSBgZnMvamJkMi9qb3VybmFsLmNgIGZpbGUuIFJpZ2h0LCBJIHNlZSB0aGF0IGBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzYCBpcyBhIG5vbi1zdGF0aWMgZnVuY3Rpb24g4oCTIHRoYXQmIzM5O3MgZXhjZWxsZW50LiBJdCBtZWFucyBpdCYjMzk7cyBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCwgbWFraW5nIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBpbnZlc3RpZ2F0aW9uLiBUaGF0JiMzOTtzIGEgc29saWQgZm9jdXMgc3ltYm9sLiBTaW1pbGFybHksIGBqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzYCBsb29rcyBsaWtlIGFub3RoZXIgaW1wb3J0YW50IGZ1bmN0aW9uIHJlbGF0ZWQgdG8gdGhpcyBhcmVhLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIGtlZXAgdHJhY2sgb2YgdGhhdCBvbmUuCgpOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBpZGVudGlmeSB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGdyYXNwIG9mIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gdGhlIGpvdXJuYWwgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdobyYjMzk7cyB3YWl0aW5nIGZvciB0aG9zZSB1cGRhdGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvamJkMi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvamJkMi9jb21taXQuYz0zNzY9dm9pZCBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uKGpvdXJuYWxfdCAqam91cm5hbClcbi0tXG5mcy9qYmQyL2NvbW1pdC5jLTQ4MS1cdC8vIHdhaXRzIGZvciBhbnkgdF91cGRhdGVzIHRvIGZpbmlzaFxuZnMvamJkMi9jb21taXQuYzo0ODI6XHRqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzKGpvdXJuYWwpO1xuZnMvamJkMi9jb21taXQuYy00ODMtXG4tLVxuZnMvamJkMi90cmFuc2FjdGlvbi5jPTgxMT1FWFBPUlRfU1lNQk9MKGpiZDJfam91cm5hbF9yZXN0YXJ0KTtcbi0tXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtODE2LSAqL1xuZnMvamJkMi90cmFuc2FjdGlvbi5jOjgxNzp2b2lkIGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXMoam91cm5hbF90ICpqb3VybmFsKVxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTgxOC17XG4tLVxuZnMvamJkMi90cmFuc2FjdGlvbi5jPTg1Nz12b2lkIGpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXMoam91cm5hbF90ICpqb3VybmFsKVxuLS1cbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04NzItXHQvKiBXYWl0IHVudGlsIHRoZXJlIGFyZSBubyBydW5uaW5nIHRfdXBkYXRlcyAqL1xuZnMvamJkMi90cmFuc2FjdGlvbi5jOjg3MzpcdGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXMoam91cm5hbCk7XG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtODc0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mzg0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEpCRDIgUGF0Y2g6IFJhY2UgQ29uZGl0aW9uIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBhbmQgYGpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXNgIGp1bXAgb3V0IGFzIGludGVyZXN0aW5nIHN5bWJvbHMuIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBpcyBkZWZpbml0ZWx5IGEgY29yZSBmdW5jdGlvbiBpbiBKQkQyLCBzbyBsZXQmIzM5O3MgZGlnIGluLiBUaGUgcGF0Y2ggZGVzY3JpcHRpb24gbWVudGlvbnMgYSByYWNlIGNvbmRpdGlvbiwgb3IgcGVyaGFwcyBhIGJ1ZywgcmVsYXRlZCB0byBob3cgYHByZXBhcmVfdG9fd2FpdGAgaXMgYmVpbmcgdXNlZC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIGBwcmVwYXJlX3RvX3dhaXRgIHdhcyBjYWxsZWQgKmJlZm9yZSogY2hlY2tpbmcgYCFhdG9taWNfcmVhZCgmYW1wO3RyYW5zYWN0aW9uLSZndDt0X3VwZGF0ZXMpYC4gSWYgYHRfdXBkYXRlc2Agd2FzIHplcm8sIGl0IHdvdWxkIGNhbGwgYGZpbmlzaF93YWl0YCBhbmQgYnJlYWsgb3V0IG9mIHRoZSBsb29wLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgb3JpZ2luYWwgY29kZSBibG9jayBhbmQgdGhlIG5ldyBjb2RlLiBUaGUgb3JpZ2luYWwgd2FzIGxpa2UgdGhpczoKYGBgYwoJCXByZXBhcmVfdG9fd2FpdCgmYW1wO2pvdXJuYWwtJmd0O2pfd2FpdF91cGRhdGVzLCAmYW1wO3dhaXQsCgkJCQlUQVNLX1VOSU5URVJSVVBUSUJMRSk7CgkJaWYgKCFhdG9taWNfcmVhZCgmYW1wO3RyYW5zYWN0aW9uLSZndDt0X3VwZGF0ZXMpKSB7CgkJCWZpbmlzaF93YWl0KCZhbXA7am91cm5hbC0mZ3Q7al93YWl0X3VwZGF0ZXMsICZhbXA7d2FpdCk7CgkJCWJyZWFrOwoJCX0KYGBgClRoZSBuZXcgY29kZSBzaW1wbGlmaWVzIGl0IHRvOgpgYGBjCgkJaWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoJmFtcDt0cmFuc2FjdGlvbi0mZ3Q7dF91cGRhdGVzKSkKCQkJYnJlYWs7CgoJCXByZXBhcmVfdG9fd2FpdCgmYW1wO2pvdXJuYWwtJmd0O2pfd2FpdF91cGRhdGVzLCAmYW1wO3dhaXQsCgkJCQlUQVNLX1VOSU5URVJSVVBUSUJMRSk7CmBgYAoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3YWl0Li4uIGlmIGB0X3VwZGF0ZXNgIGJlY29tZXMgemVybyAqYWZ0ZXIqIHRoZSBjaGVjayBidXQgKmJlZm9yZSogdGhlIGBwcmVwYXJlX3RvX3dhaXRgIGNhbGwsIHdvdWxkbiYjMzk7dCBpdCBzdGlsbCBzbGVlcD8gTm8sIGBwcmVwYXJlX3RvX3dhaXRgIGNoYW5nZXMgdGhlIHRhc2sgc3RhdGUsIGJ1dCBoYW5nIG9uLCB0aGV5IG1vdmVkIHRoZSBgYXRvbWljX3JlYWRgIGNoZWNrICpiZWZvcmUqIHRoZSBgcHJlcGFyZV90b193YWl0YC4gSWYgd2UgZG8gYSBxdWljayBjaGVjaywgYW5kIHRoZW4sIGB0X3VwZGF0ZXNgIGdvZXMgdG8gemVybywgdGhlIGNhbGwgdG8gYHNjaGVkdWxlKClgIHdpbGwgcG90ZW50aWFsbHkgc2xlZXAgdGhlIHRhc2sgZm9yZXZlci4gQnV0IHRoYXQmIzM5O3Mgbm90IHJpZ2h0LgoKQWgsIHdhaXQgYSBzZWNvbmQuLi4gdGhpcyBsb29wIGlzIGxpa2VseSBydW5uaW5nIHdoaWxlIGEgbG9jayBpcyBoZWxkLCBgal9zdGF0ZV9sb2NrYCAtIGl0JiMzOTtzIGEgd3JpdGUgbG9jaywgc28gdGhlIHVubG9jayBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIGBwcmVwYXJlX3RvX3dhaXRgLiBTbywgd2hpbGUgdGhhdCBsb2NrIGlzIGhlbGQsIGB0X3VwZGF0ZXNgICpzaG91bGRuJiMzOTt0KiBjaGFuZ2UsIHJpZ2h0PyBMZXQmIzM5O3MgY2hlY2suIFNpbmNlIHRoZSB1bmxvY2sgaXMgY2FsbGVkIGFmdGVyIGBwcmVwYXJlX3RvX3dhaXRgLCBgdF91cGRhdGVzYCAqY2Fubm90KiBjaGFuZ2Ugd2hpbGUgdGhlIGxvY2sgaXMgaGVsZC4gU28sIGlzIHRoYXQgdHJ1ZT8gTGV0JiMzOTtzIGNvbmZpcm0gYnkgY2hlY2tpbmcgd2hlcmUgYHRfdXBkYXRlc2AgaXMgbW9kaWZpZWQ7IGl0IGhhcyB0byBiZSBtb2RpZmllZCBieSBgamJkMl9qb3VybmFsX3N0b3BgLCBhbmQgdGhhdCBmdW5jdGlvbiB0YWtlcyBgal9zdGF0ZV9sb2NrYC4gU28sIHRoaXMgcGF0Y2ggcHJldmVudHMgYSByYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNDo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdG9taWNfLip0X3VwZGF0ZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9qYmQyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9qYmQyL2NoZWNrcG9pbnQuYz03MDI9dm9pZCBfX2piZDJfam91cm5hbF9kcm9wX3RyYW5zYWN0aW9uKGpvdXJuYWxfdCAqam91cm5hbCwgdHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb24pXG4tLVxuZnMvamJkMi9jaGVja3BvaW50LmMtNzIxLVx0Sl9BU1NFUlQodHJhbnNhY3Rpb24tXHUwMDNldF9jaGVja3BvaW50X2xpc3QgPT0gTlVMTCk7XG5mcy9qYmQyL2NoZWNrcG9pbnQuYzo3MjI6XHRKX0FTU0VSVChhdG9taWNfcmVhZChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpID09IDApO1xuZnMvamJkMi9jaGVja3BvaW50LmMtNzIzLVx0Sl9BU1NFUlQoam91cm5hbC1cdTAwM2VqX2NvbW1pdHRpbmdfdHJhbnNhY3Rpb24gIT0gdHJhbnNhY3Rpb24pO1xuLS1cbmZzL2piZDIvdHJhbnNhY3Rpb24uYz04MD1zdGF0aWMgdm9pZCBqYmQyX2dldF90cmFuc2FjdGlvbihqb3VybmFsX3QgKmpvdXJuYWwsXG4tLVxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTg3LVx0dHJhbnNhY3Rpb24tXHUwMDNldF9leHBpcmVzID0gamlmZmllcyAmIzQzOyBqb3VybmFsLVx1MDAzZWpfY29tbWl0X2ludGVydmFsO1xuZnMvamJkMi90cmFuc2FjdGlvbi5jOjg4Olx0YXRvbWljX3NldChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMsIDApO1xuZnMvamJkMi90cmFuc2FjdGlvbi5jLTg5LVx0YXRvbWljX3NldChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X291dHN0YW5kaW5nX2NyZWRpdHMsXG4tLVxuZnMvamJkMi90cmFuc2FjdGlvbi5jPTMxMj1zdGF0aWMgaW50IHN0YXJ0X3RoaXNfaGFuZGxlKGpvdXJuYWxfdCAqam91cm5hbCwgaGFuZGxlX3QgKmhhbmRsZSxcbi0tXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtNDM0LVx0aGFuZGxlLVx1MDAzZWhfc3RhcnRfamlmZmllcyA9IGppZmZpZXM7XG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6NDM1Olx0YXRvbWljX2luYyhcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpO1xuZnMvamJkMi90cmFuc2FjdGlvbi5jLTQzNi1cdGF0b21pY19pbmMoXHUwMDI2dHJhbnNhY3Rpb24tXHUwMDNldF9oYW5kbGVfY291bnQpO1xuLS1cbmZzL2piZDIvdHJhbnNhY3Rpb24uYz02OTg9c3RhdGljIHZvaWQgc3RvcF90aGlzX2hhbmRsZShoYW5kbGVfdCAqaGFuZGxlKVxuLS1cbmZzL2piZDIvdHJhbnNhY3Rpb24uYy03MDQtXHRKX0FTU0VSVChqb3VybmFsX2N1cnJlbnRfaGFuZGxlKCkgPT0gaGFuZGxlKTtcbmZzL2piZDIvdHJhbnNhY3Rpb24uYzo3MDU6XHRKX0FTU0VSVChhdG9taWNfcmVhZChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpIFx1MDAzZSAwKTtcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy03MDYtXHRjdXJyZW50LVx1MDAzZWpvdXJuYWxfaW5mbyA9IE5VTEw7XG4tLVxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTczMS1cdFx0XHRcdFx0XHR0cmFuc2FjdGlvbik7XG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6NzMyOlx0aWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoXHUwMDI2dHJhbnNhY3Rpb24tXHUwMDNldF91cGRhdGVzKSlcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy03MzMtXHRcdHdha2VfdXAoXHUwMDI2am91cm5hbC1cdTAwM2VqX3dhaXRfdXBkYXRlcyk7XG4tLVxuZnMvamJkMi90cmFuc2FjdGlvbi5jPTgxNz12b2lkIGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXMoam91cm5hbF90ICpqb3VybmFsKVxuLS1cbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04MzMtXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6ODM0Olx0XHRpZiAoIXRyYW5zYWN0aW9uIHx8ICFhdG9taWNfcmVhZChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpKVxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTgzNS1cdFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTQ6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE4NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uY3VycmVuY3kgaW4gdGhlIEpvdXJuYWxpbmcgQ29kZSoqCgpPa2F5LCBzbyBgc3RvcF90aGlzX2hhbmRsZWAgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSSBzZWUgdGhhdCBpdCB1c2VzIGBhdG9taWNfZGVjX2FuZF90ZXN0KCZhbXA7dHJhbnNhY3Rpb24tJmd0O3RfdXBkYXRlcylgIHRvIGRlY3JlbWVudCBhIGNvdW50ZXIsIGFuZCBpZiBpdCBoaXRzIHplcm8sIGl0IHdha2VzIHVwIGEgd2FpdGluZyBwcm9jZXNzIHZpYSBgd2FrZV91cCgmYW1wO2pvdXJuYWwtJmd0O2pfd2FpdF91cGRhdGVzKWAuIE15IGZpcnN0IHRob3VnaHQgaXM6IHdhaXQsIGlzIHRoaXMgaGFwcGVuaW5nIHdpdGhvdXQgaG9sZGluZyBgal9zdGF0ZV9sb2NrYD8gVGhhdCBjb3VsZCBiZSBhIHJlY2lwZSBmb3IgcmFjZSBjb25kaXRpb25zIGlmIG5vdCBoYW5kbGVkIGNhcmVmdWxseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmN1cnJlbmN5IGltcGxpY2F0aW9ucyBoZXJlLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGZvciBgc3RvcF90aGlzX2hhbmRsZWAgdG8gY29uZmlybS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgYXRvbWljIG9wZXJhdGlvbiBjb3JyZWN0bHkgbWFuYWdlcyB0aGUgc3luY2hyb25pemF0aW9uLCBvciBpZiB0aGVyZSYjMzk7cyBhbnkgc3VidGxlIHJhY2UgY29uZGl0aW9uIHRoYXQgSSYjMzk7bSBtaXNzaW5nLiBUaGlzIHdhcnJhbnRzIGNhcmVmdWwgc2NydXRpbnk7IGEgc3VidGxlIGJ1ZyBpbiB0aGlzIGFyZWEgY2FuIGJlIGNhdGFzdHJvcGhpYyBmb3IgZGF0YSBpbnRlZ3JpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvamJkMi90cmFuc2FjdGlvbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjk4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2OTg6XHRzdGF0aWMgdm9pZCBzdG9wX3RoaXNfaGFuZGxlKGhhbmRsZV90ICpoYW5kbGUpXG4gNjk5Olx0e1xuIDcwMDpcdFx0dHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb24gPSBoYW5kbGUtXHUwMDNlaF90cmFuc2FjdGlvbjtcbiA3MDE6XHRcdGpvdXJuYWxfdCAqam91cm5hbCA9IHRyYW5zYWN0aW9uLVx1MDAzZXRfam91cm5hbDtcbiA3MDI6XHRcdGludCByZXZva2VzO1xuIDcwMzpcdFxuIDcwNDpcdFx0Sl9BU1NFUlQoam91cm5hbF9jdXJyZW50X2hhbmRsZSgpID09IGhhbmRsZSk7XG4gNzA1Olx0XHRKX0FTU0VSVChhdG9taWNfcmVhZChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpIFx1MDAzZSAwKTtcbiA3MDY6XHRcdGN1cnJlbnQtXHUwMDNlam91cm5hbF9pbmZvID0gTlVMTDtcbiA3MDc6XHRcdC8qXG4gNzA4Olx0XHQgKiBTdWJ0cmFjdCBuZWNlc3NhcnkgcmV2b2tlIGRlc2NyaXB0b3IgYmxvY2tzIGZyb20gaGFuZGxlIGNyZWRpdHMuIFdlXG4gNzA5Olx0XHQgKiB0YWtlIGNhcmUgdG8gYWNjb3VudCBvbmx5IGZvciByZXZva2UgZGVzY3JpcHRvciBibG9ja3MgdGhlXG4gNzEwOlx0XHQgKiB0cmFuc2FjdGlvbiB3aWxsIHJlYWxseSBuZWVkIGFzIGxhcmdlIHNlcXVlbmNlcyBvZiB0cmFuc2FjdGlvbnMgd2l0aFxuIDcxMTpcdFx0ICogc21hbGwgbnVtYmVycyBvZiByZXZva2VzIGFyZSByZWxhdGl2ZWx5IGNvbW1vbi5cbiA3MTI6XHRcdCAqL1xuIDcxMzpcdFx0cmV2b2tlcyA9IGhhbmRsZS1cdTAwM2VoX3Jldm9rZV9jcmVkaXRzX3JlcXVlc3RlZCAtIGhhbmRsZS1cdTAwM2VoX3Jldm9rZV9jcmVkaXRzO1xuIDcxNDpcdFx0aWYgKHJldm9rZXMpIHtcbiA3MTU6XHRcdFx0aW50IHRfcmV2b2tlcywgcmV2b2tlX2Rlc2NyaXB0b3JzO1xuIDcxNjpcdFx0XHRpbnQgcnJfcGVyX2JsayA9IGpvdXJuYWwtXHUwMDNlal9yZXZva2VfcmVjb3Jkc19wZXJfYmxvY2s7XG4gNzE3Olx0XG4gNzE4Olx0XHRcdFdBUk5fT05fT05DRShESVZfUk9VTkRfVVAocmV2b2tlcywgcnJfcGVyX2JsaylcbiA3MTk6XHRcdFx0XHRcdFx1MDAzZSBoYW5kbGUtXHUwMDNlaF90b3RhbF9jcmVkaXRzKTtcbiA3MjA6XHRcdFx0dF9yZXZva2VzID0gYXRvbWljX2FkZF9yZXR1cm4ocmV2b2tlcyxcbiA3MjE6XHRcdFx0XHRcdFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfb3V0c3RhbmRpbmdfcmV2b2tlcyk7XG4gNzIyOlx0XHRcdHJldm9rZV9kZXNjcmlwdG9ycyA9XG4gNzIzOlx0XHRcdFx0RElWX1JPVU5EX1VQKHRfcmV2b2tlcywgcnJfcGVyX2JsaykgLVxuIDcyNDpcdFx0XHRcdERJVl9ST1VORF9VUCh0X3Jldm9rZXMgLSByZXZva2VzLCBycl9wZXJfYmxrKTtcbiA3MjU6XHRcdFx0aGFuZGxlLVx1MDAzZWhfdG90YWxfY3JlZGl0cyAtPSByZXZva2VfZGVzY3JpcHRvcnM7XG4gNzI2Olx0XHR9XG4gNzI3Olx0XHRhdG9taWNfc3ViKGhhbmRsZS1cdTAwM2VoX3RvdGFsX2NyZWRpdHMsXG4gNzI4Olx0XHRcdCAgIFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfb3V0c3RhbmRpbmdfY3JlZGl0cyk7XG4gNzI5Olx0XHRpZiAoaGFuZGxlLVx1MDAzZWhfcnN2X2hhbmRsZSlcbiA3MzA6XHRcdFx0X19qYmQyX2pvdXJuYWxfdW5yZXNlcnZlX2hhbmRsZShoYW5kbGUtXHUwMDNlaF9yc3ZfaGFuZGxlLFxuIDczMTpcdFx0XHRcdFx0XHRcdHRyYW5zYWN0aW9uKTtcbiA3MzI6XHRcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfdXBkYXRlcykpXG4gNzMzOlx0XHRcdHdha2VfdXAoXHUwMDI2am91cm5hbC1cdTAwM2VqX3dhaXRfdXBkYXRlcyk7XG4gNzM0Olx0XG4gNzM1Olx0XHRyd3NlbV9yZWxlYXNlKFx1MDAyNmpvdXJuYWwtXHUwMDNlal90cmFuc19jb21taXRfbWFwLCBfVEhJU19JUF8pO1xuIDczNjpcdFx0LypcbiA3Mzc6XHRcdCAqIFNjb3BlIG9mIHRoZSBHRlBfTk9GUyBjb250ZXh0IGlzIG92ZXIgaGVyZSBhbmQgc28gd2UgY2FuIHJlc3RvcmUgdGhlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxOTIKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogMTM5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgUmFjZSBDb25kaXRpb24gaW4gSkJEMiBUcmFuc2FjdGlvbiBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGluIGBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzYCwgYW5kIGltbWVkaWF0ZWx5LCBteSBzcGlkZXkgc2Vuc2VzIGFyZSB0aW5nbGluZy4gIEkgc2VlIHRoYXQgYHN0b3BfdGhpc19oYW5kbGVgICpkb2VzbiYjMzk7dCogaG9sZCBgal9zdGF0ZV9sb2NrYCwgd2hpY2ggbWVhbnMgYHRfdXBkYXRlc2AgaXMgcG90ZW50aWFsbHkgYmVpbmcgbW9kaWZpZWQgY29uY3VycmVudGx5LiBUaGF0JiMzOTtzIHRoZSBmaXJzdCByZWQgZmxhZy4gIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBjaGVja2luZyBgIWF0b21pY19yZWFkKCZhbXA7dHJhbnNhY3Rpb24tJmd0O3RfdXBkYXRlcylgICphZnRlciogdGhlIGBwcmVwYXJlX3RvX3dhaXRgIGNhbGwsIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCBhbmQgY29ycmVjdCB3YWl0IHF1ZXVlIHBhdHRlcm46IGFkZCB0byB0aGUgcXVldWUsIGNoZWNrIHRoZSBjb25kaXRpb24sIHBvdGVudGlhbGx5IHNjaGVkdWxlLgoKVGhlIHBhdGNoLCBob3dldmVyLCBzaGlmdHMgdGhpbmdzLiBJdCBub3cgY2hlY2tzIGAhdHJhbnNhY3Rpb24gfHwgIWF0b21pY19yZWFkKCZhbXA7dHJhbnNhY3Rpb24tJmd0O3RfdXBkYXRlcylgICpiZWZvcmUqIGBwcmVwYXJlX3RvX3dhaXRgLiBXYWl0IGEgc2Vjb25k4oCmIHRoYXQgc21lbGxzIGxpa2UgYSBjbGFzc2ljIHJhY2UuIElmIGB0X3VwZGF0ZXNgIGdvZXMgdG8gemVybyAqYWZ0ZXIqIHRoYXQgaW5pdGlhbCBjaGVjayBidXQgKmJlZm9yZSogYHByZXBhcmVfdG9fd2FpdGAgaXMgY2FsbGVkLCB0aGUgd2FrZXVwIHNpZ25hbCB3aWxsIGJlIGxvc3QhIGBwcmVwYXJlX3RvX3dhaXRgIHdpbGwgdGhlbiBhZGQgdGhlIHRhc2sgdG8gdGhlIHdhaXQgcXVldWUsIHNldCBpdCB0byBgVEFTS19VTklOVEVSUlVQVElCTEVgLCBhbmQgY2FsbCBgc2NoZWR1bGUoKWAsIGxlYWRpbmcgdG8gYW4gaW5kZWZpbml0ZSBzbGVlcC4gVGhpcyAqaGFzKiB0byBiZSBhIGJ1ZyEKCkFuZCB0aGVuIEkgcmVhbGl6ZS4uLiBpcyB0aGUgcGF0Y2ggY29ycmVjdD8gQWZ0ZXIgcmV2aWV3aW5nIHRoZSBjaGFuZ2UgYWdhaW4gYW5kIHRoaW5raW5nIGFib3V0IGhvdyBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AgaXMgY2FsbGVkLCBpdCByZXF1aXJlcyB0aGUgYGpfc3RhdGVfbG9ja2AgdG8gYmUgaGVsZCB3aGVuIHRoZSB3YWtldXAgaXMgY2FsbGVkLiBCdXQgYHN0b3BfdGhpc19oYW5kbGVgIGRvZXNuJiMzOTt0IHRha2UgdGhhdCBsb2NrIHNvIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHByb2JsZW0gaXMuICBUaGUgb3JpZ2luYWwgY29kZSBjYWxsZWQgYHByZXBhcmVfdG9fd2FpdGAgKmJlZm9yZSogdGhlIGNoZWNrLCBhbmQgdGhlIG5ldyBjb2RlIGludHJvZHVjZXMgYSByYWNlISAgSSBjYW4gdmlzdWFsaXplIHRoZSBwb3RlbnRpYWwgc2NlbmFyaW86IGB0X3VwZGF0ZXNgIGJlY29tZXMgemVybyBiZWZvcmUgYHByZXBhcmVfdG9fd2FpdGAsIGB3YWtlX3VwYCBoYXBwZW5zLCBidXQgaXQgZG9lc24mIzM5O3QgZmluZCB0aGUgdGFzayBpbiB0aGUgd2FpdCBxdWV1ZSBhbmQgZG9lcyBub3RoaW5nLiBUaGVuIGBwcmVwYXJlX3RvX3dhaXRgIGFkZHMgdGhlIHNsZWVwaW5nIHRhc2suIFRoZSB0YXNrIHNsZWVwcyBmb3JldmVyLgoKSG93ZXZlciwgSSYjMzk7bSBub3QgaGVyZSB0byBqdWRnZSB0aGUgcGF0Y2gmIzM5O3MgY29ycmVjdG5lc3MsIG9yIHRvIGZpeCB0aGUgY29kZSwgSSBhbSBoZXJlIHRvIGRlY2lkZSBpZiB0aGlzIHJlcXVpcmVzIGZ1enppbmchIENvbnNpZGVyaW5nIHRoYXQgdGhpcyBpcyBKQkQyLCBhIGNvcmUgam91cm5hbGluZyBsYXllciB1c2VkIGJ5IGV4dDQgKGFuZCBwb3RlbnRpYWxseSBvdGhlciBmaWxlc3lzdGVtcyBpZiBjb25maWd1cmVkKSwgYW5kIGJlY2F1c2UgdGhpcyBjaGFuZ2VzIGEgY3JpdGljYWwgc3luY2hyb25pemF0aW9uIHBvaW50IGluIGEgY29yZSBmdW5jdGlvbiwgSSBoYXZlIHRvIGNvbmNsdWRlIHRoYXQgdGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1enppbmcuIEEgaGFuZyBsaWtlIHRoaXMgd291bGQgYmUgY2F0YXN0cm9waGljIGZvciBhIGZpbGVzeXN0ZW0sIGFuZCBmdXp6aW5nIGlzIHRoZSBiZXN0IHdheSB0byB1bmNvdmVyIHN1Y2ggcHJvYmxlbXMuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uLiBgRVhUNF9GU2Agc2hvdWxkIGJlIGVub3VnaCwgYXMgaXQgcHVsbHMgaW4gYEpCRDJgLiBJbmRlZWQsIGl0IGRvZXMhIEFuZCBgQ09ORklHX09DRlMyX0ZTYCBhbHNvLCBidXQgSSYjMzk7bGwgc3RpY2sgdG8gYEVYVDRfRlNgIHRvIGtlZXAgaXQgc2ltcGxlLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gZW5hYmxlIGBFWFQ0X0ZTYCBpbiBteSBgRW5hYmxlQ29uZmlnc2AuCgpJIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBmb2N1cyBzeW1ib2xzIGZvciB0aGUgZnV6emVyLiBJdCYjMzk7cyBvYnZpb3VzbHkgYGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNgLiBBbHNvIGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hhdCBjYWxscyB0aGUgZnVuY3Rpb24sIGFuZCBgamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlc2AgdG8gY292ZXIgdGhlIHN1cnJvdW5kaW5nIGNvZGUuCgpDaGVja2luZyByZWFjaGFiaWxpdHk6IEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uYCBjYWxscyB0aGUgdGFyZ2V0IGZ1bmN0aW9uLCBhbmQgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHBlcmlvZGljYWxseSBvciBvbiBmc3luYy4gR29vZCwgaXQmIzM5O3MgYSBjcml0aWNhbCBjb21taXQgZnVuY3Rpb24uIEkmIzM5O2xsIG1ha2Ugc3VyZSBgRVhUNF9GU2AgaXMgc3VmZmljaWVudCBhbmQgYWxzbyB0aGF0IG5vdGhpbmcgZWxzZSBpcyBuZWVkZWQuICBZZXMsIGBFWFQ0X0ZTYCBkb2VzIHRoZSB0cmljay4KCkFscmlnaHQsIGxldCYjMzk7cyByZXZpZXcgdGhlIHBhdGNoIG9uZSBtb3JlIHRpbWUsIG1ha2Ugc3VyZSBJIGRpZG4mIzM5O3QgbWlzcyBhbnl0aGluZy4gWWVwLCBmdW5jdGlvbmFsIGNoYW5nZSBpbiBgZnMvamJkMi90cmFuc2FjdGlvbi5jYCwgZXhhY3RseSBhcyBleHBlY3RlZC4gTm93LCBpdCYjMzk7cyBjbGVhciB0aGlzIGlzIGEgaGlnaC1wcmlvcml0eSBmdXp6aW5nIHRhcmdldCwgZ2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgZGF0YSBjb3JydXB0aW9uIG9yIGhhbmdzIGlmIHRoaXMgcmFjZSBjb25kaXRpb24gbWFuaWZlc3RzLiBJJiMzOTtsbCB1c2UgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCB0byBkZWZpbmUgdGhlIGZ1enppbmcgcmVxdWlyZW1lbnRzIGZvciB0aGlzIHBvdGVudGlhbCBidWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE0OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7amJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyYjMzQ7LAogICAgJiMzNDtqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uJiMzNDssCiAgICAmIzM0O2piZDJfam91cm5hbF9sb2NrX3VwZGF0ZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdhaXQgbG9vcCBjb25kaXRpb24gaW4gYGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNgLCBhIGNvcmUgc3luY2hyb25pemF0aW9uIGZ1bmN0aW9uIGluIHRoZSBKQkQyIGpvdXJuYWxpbmcgbGF5ZXIgdXNlZCBieSBleHQ0LiBJdCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBjaGVja2luZyBgdF91cGRhdGVzYCBhbmQgYHByZXBhcmVfdG9fd2FpdGAsIHdoaWNoIGFmZmVjdHMgaG93IHRyYW5zYWN0aW9uIGNvbW1pdHMgd2FpdCBmb3Igb3V0c3RhbmRpbmcgdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zIG9yIGhhbmdzIGR1cmluZyBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzJiMzNDssCiAgICAmIzM0O2piZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb24mIzM0OywKICAgICYjMzQ7amJkMl9qb3VybmFsX2xvY2tfdXBkYXRlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb29wIGNvbmRpdGlvbiBpbiBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AsIGEgY29yZSBzeW5jaHJvbml6YXRpb24gZnVuY3Rpb24gaW4gdGhlIEpCRDIgam91cm5hbGluZyBsYXllciB1c2VkIGJ5IGV4dDQuIEl0IGNoYW5nZXMgdGhlIG9yZGVyIG9mIGNoZWNraW5nIGB0X3VwZGF0ZXNgIGFuZCBgcHJlcGFyZV90b193YWl0YCwgd2hpY2ggYWZmZWN0cyBob3cgdHJhbnNhY3Rpb24gY29tbWl0cyB3YWl0IGZvciBvdXRzdGFuZGluZyB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgb3IgaGFuZ3MgZHVyaW5nIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjUzOjU4LjEwODMyNzAxOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMDgxNTUxMTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzXCIsXG4gICAgXCJqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uXCIsXG4gICAgXCJqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdhaXQgbG9vcCBjb25kaXRpb24gaW4gYGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNgLCBhIGNvcmUgc3luY2hyb25pemF0aW9uIGZ1bmN0aW9uIGluIHRoZSBKQkQyIGpvdXJuYWxpbmcgbGF5ZXIgdXNlZCBieSBleHQ0LiBJdCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBjaGVja2luZyBgdF91cGRhdGVzYCBhbmQgYHByZXBhcmVfdG9fd2FpdGAsIHdoaWNoIGFmZmVjdHMgaG93IHRyYW5zYWN0aW9uIGNvbW1pdHMgd2FpdCBmb3Igb3V0c3RhbmRpbmcgdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgb3IgaGFuZ3MgZHVyaW5nIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6NTM6NTguMTA4MzMzOTE5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjkwNjM3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3Yjk1MjE3MzIyMzE3ZTU5MmQxN2YyNzNiNGViNjc0ZThjOGMxY2RmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMTQ6NTM6NTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvamJkMi90cmFuc2FjdGlvbi5jIGIvZnMvamJkMi90cmFuc2FjdGlvbi5jXFxuaW5kZXggNWNjN2QwOTdiMmFjOC4uMGYxOTNkMDJhMDU0NyAxMDA2NDRcXG4tLS0gYS9mcy9qYmQyL3RyYW5zYWN0aW9uLmNcXG4rKysgYi9mcy9qYmQyL3RyYW5zYWN0aW9uLmNcXG5AQCAtODMxLDE1ICs4MzEsMTIgQEAgdm9pZCBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzKGpvdXJuYWxfdCAqam91cm5hbClcXG4gXFx0XFx0ICovXFxuIFxcdFxcdHRyYW5zYWN0aW9uX3QgKnRyYW5zYWN0aW9uID0gam91cm5hbC1cXHUwMDNlal9ydW5uaW5nX3RyYW5zYWN0aW9uO1xcbiBcXG4tXFx0XFx0aWYgKCF0cmFuc2FjdGlvbilcXG4rXFx0XFx0aWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoXFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X3VwZGF0ZXMpKVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuIFxcdFxcdHByZXBhcmVfdG9fd2FpdChcXHUwMDI2am91cm5hbC1cXHUwMDNlal93YWl0X3VwZGF0ZXMsIFxcdTAwMjZ3YWl0LFxcbiBcXHRcXHRcXHRcXHRUQVNLX1VOSU5URVJSVVBUSUJMRSk7XFxuLVxcdFxcdGlmICghYXRvbWljX3JlYWQoXFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X3VwZGF0ZXMpKSB7XFxuLVxcdFxcdFxcdGZpbmlzaF93YWl0KFxcdTAwMjZqb3VybmFsLVxcdTAwM2VqX3dhaXRfdXBkYXRlcywgXFx1MDAyNndhaXQpO1xcbi1cXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0fVxcbitcXG4gXFx0XFx0d3JpdGVfdW5sb2NrKFxcdTAwMjZqb3VybmFsLVxcdTAwM2VqX3N0YXRlX2xvY2spO1xcbiBcXHRcXHRzY2hlZHVsZSgpO1xcbiBcXHRcXHRmaW5pc2hfd2FpdChcXHUwMDI2am91cm5hbC1cXHUwMDNlal93YWl0X3VwZGF0ZXMsIFxcdTAwMjZ3YWl0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6NTM6NTguMzc4MTMwMjQ1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODA4MTE3Mzg5OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNcIixcbiAgICBcImpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25cIixcbiAgICBcImpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb29wIGNvbmRpdGlvbiBpbiBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AsIGEgY29yZSBzeW5jaHJvbml6YXRpb24gZnVuY3Rpb24gaW4gdGhlIEpCRDIgam91cm5hbGluZyBsYXllciB1c2VkIGJ5IGV4dDQuIEl0IGNoYW5nZXMgdGhlIG9yZGVyIG9mIGNoZWNraW5nIGB0X3VwZGF0ZXNgIGFuZCBgcHJlcGFyZV90b193YWl0YCwgd2hpY2ggYWZmZWN0cyBob3cgdHJhbnNhY3Rpb24gY29tbWl0cyB3YWl0IGZvciBvdXRzdGFuZGluZyB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucyBvciBoYW5ncyBkdXJpbmcgZmlsZXN5c3RlbSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3Yjk1MjE3MzIyMzE3ZTU5MmQxN2YyNzNiNGViNjc0ZThjOGMxY2RmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxNDo1Mzo1NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2piZDIvdHJhbnNhY3Rpb24uYyBiL2ZzL2piZDIvdHJhbnNhY3Rpb24uY1xuaW5kZXggNWNjN2QwOTdiMmFjOC4uMGYxOTNkMDJhMDU0NyAxMDA2NDRcbi0tLSBhL2ZzL2piZDIvdHJhbnNhY3Rpb24uY1xuKysrIGIvZnMvamJkMi90cmFuc2FjdGlvbi5jXG5AQCAtODMxLDE1ICs4MzEsMTIgQEAgdm9pZCBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzKGpvdXJuYWxfdCAqam91cm5hbClcbiBcdFx0ICovXG4gXHRcdHRyYW5zYWN0aW9uX3QgKnRyYW5zYWN0aW9uID0gam91cm5hbC1cdTAwM2VqX3J1bm5pbmdfdHJhbnNhY3Rpb247XG4gXG4tXHRcdGlmICghdHJhbnNhY3Rpb24pXG4rXHRcdGlmICghdHJhbnNhY3Rpb24gfHwgIWF0b21pY19yZWFkKFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfdXBkYXRlcykpXG4gXHRcdFx0YnJlYWs7XG4gXG4gXHRcdHByZXBhcmVfdG9fd2FpdChcdTAwMjZqb3VybmFsLVx1MDAzZWpfd2FpdF91cGRhdGVzLCBcdTAwMjZ3YWl0LFxuIFx0XHRcdFx0VEFTS19VTklOVEVSUlVQVElCTEUpO1xuLVx0XHRpZiAoIWF0b21pY19yZWFkKFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfdXBkYXRlcykpIHtcbi1cdFx0XHRmaW5pc2hfd2FpdChcdTAwMjZqb3VybmFsLVx1MDAzZWpfd2FpdF91cGRhdGVzLCBcdTAwMjZ3YWl0KTtcbi1cdFx0XHRicmVhaztcbi1cdFx0fVxuK1xuIFx0XHR3cml0ZV91bmxvY2soXHUwMDI2am91cm5hbC1cdTAwM2VqX3N0YXRlX2xvY2spO1xuIFx0XHRzY2hlZHVsZSgpO1xuIFx0XHRmaW5pc2hfd2FpdChcdTAwMjZqb3VybmFsLVx1MDAzZWpfd2FpdF91cGRhdGVzLCBcdTAwMjZ3YWl0KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjUzOjU4LjM3ODEzMTUyNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MjA5MzQ5NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUcmFuc2FjdGlvbiBVcGRhdGUgV2FpdCBDb25kaXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2Agd2l0aGluIGBmcy9qYmQyL3RyYW5zYWN0aW9uLmNgLiBJdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCB0aGUgc3VidGxlIGNoYW5nZSBpcyB3b3J0aCBkaWdnaW5nIGludG8uIFByZXZpb3VzbHksIHRoZSBjb2RlIHdhaXRlZCBmb3IgdHJhbnNhY3Rpb24gdXBkYXRlcyB1c2luZyBhIGxvb3AuIFRoZSBsb29wJ3MgZXhpdCBjb25kaXRpb24gdXNlZCB0byBiZSBhIGJpdC4uLiBzZXBhcmF0ZWQsIHNoYWxsIHdlIHNheS4gRmlyc3QsIGl0IGNoZWNrZWQgaWYgYHRyYW5zYWN0aW9uYCB3YXMgdmFsaWQgYmVmb3JlIGNhbGxpbmcgYHByZXBhcmVfdG9fd2FpdGAuIFRoZW4sICphZnRlciogdGhhdCBjYWxsLCBpdCdkIGNoZWNrIGlmIGBhdG9taWNfcmVhZChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpYCB3YXMgbm9uLXplcm8uIEVzc2VudGlhbGx5LCBtYWtpbmcgc3VyZSB0aGVyZSBhcmUgYWN0dWFsbHkgdXBkYXRlcyB0byB3YWl0IGZvci5cblxuVGhpcyBwYXRjaCwgaG93ZXZlciwgcmVmYWN0b3JzIHRoYXQgbG9naWMuIFRoZSBjcnVjaWFsIHBhcnQgaXMgbm93IHRvIGNoZWNrIGAhdHJhbnNhY3Rpb24gfHwgIWF0b21pY19yZWFkKFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfdXBkYXRlcylgICpiZWZvcmUqIHRoZSBgcHJlcGFyZV90b193YWl0YC4gVGhpcyBtZWFucyBpdCBzaG9ydC1jaXJjdWl0cyB0aGUgd2FpdCBpZiB0aGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBOVUxMIG9yIHRoZXJlIGFyZSBubyB1cGRhdGVzIHRvIHdhaXQgZm9yLCBwb3RlbnRpYWxseSBvcHRpbWl6aW5nIHRoZSBwYXRoIGJ5IHNraXBwaW5nIHRoZSBgcHJlcGFyZV90b193YWl0YCBjYWxsIGlmIGl0IGlzbid0IG5lY2Vzc2FyeS4gSXQncyBhIG1pbm9yIGNoYW5nZSBpbiB0aGUgcGxhY2VtZW50IG9mIHRoZSBjaGVjaywgYnV0IGl0IGxvb2tzIGxpa2UgYSBuaWNlIG9wdGltaXphdGlvbiB0byBwb3RlbnRpYWxseSBwcmV2ZW50IGEgc3B1cmlvdXMgd2FrZS11cCBpbiBhIGNvcm5lciBjYXNlLiBJJ2QgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvbnRleHRzIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGFzc2VzcyB0aGUgYWN0dWFsIGltcGFjdCwgYnV0IG9uIHRoZSBzdXJmYWNlLCB0aGlzIGxvb2tzIGxpa2UgYSBjbGVhbmVyLCBtb3JlIGVmZmljaWVudCB3YXkgdG8gaGFuZGxlIHRoZSB3YWl0IGNvbmRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjAzLjI5OTA2OTQxMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjczMTc2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2piZDIvdHJhbnNhY3Rpb24uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODExPUVYUE9SVF9TWU1CT0woamJkMl9qb3VybmFsX3Jlc3RhcnQpO1xcbi0tXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTgxNi0gKi9cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6ODE3OnZvaWQgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTgxOC17XFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODU3PXZvaWQgamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtODcyLVxcdC8qIFdhaXQgdW50aWwgdGhlcmUgYXJlIG5vIHJ1bm5pbmcgdF91cGRhdGVzICovXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jOjg3MzpcXHRqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzKGpvdXJuYWwpO1xcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04NzQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjAzLjM0MTgwODA4MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTQ5Njk3NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgYSBLZXJuZWwgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBtb2RpZmljYXRpb24gdG8gYGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNgLiBSaWdodCBhd2F5LCB0aGF0IHJhaXNlcyBhIGZsYWcuIFRoaXMgaXMgY29yZSBKQkQyIHN0dWZmLCB3aGljaCBtZWFucyBpdCdzIGZ1bmRhbWVudGFsIHRvIGV4dDQgYW5kIG9jZnMyLCB0d28gdmVyeSB3aWRlbHkgdXNlZCBmaWxlc3lzdGVtcy4gQW55IGNoYW5nZSBkb3duIGhlcmUgaW4gdGhlIEpCRDIgc3Vic3lzdGVtIGlzIGEgaGlnaC1pbXBhY3QgbW9kaWZpY2F0aW9uLiBTaW5jZSB0aGlzIHRvdWNoZXMga2VybmVsIGxvZ2ljLCBpdCAqYWJzb2x1dGVseSogbmVlZHMgcmlnb3JvdXMgdGVzdGluZy4gTXkgZ3V0IHJlYWN0aW9uIGlzIHRoYXQgd2UgbmVlZCB0byBmdXp6IHRoaXMgYWdncmVzc2l2ZWx5LiBJJ20gZ29pbmcgdG8gd2FudCB0byBtYWtlIHN1cmUgdGhlIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgc3VidGxlIGNvcnJ1cHRpb24gb3IgY29uY3VycmVuY3kgYnVncy4gQmVmb3JlIGdvaW5nIGFueSBmdXJ0aGVyLCBsZXQgbWUgZ28gY2hlY2sgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWdzIGFuZCBzZWUgd2hhdCB0aGUgc2V0dGluZ3MgYXJlIGZvciBKQkQyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoaXMgY2hhbmdlIGFuZCBob3cgd2lkZWx5IGl0J3MgZGVwbG95ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MzUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDo1NDowNy4xNTY3Nzk3NDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwODUzNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEpCRDJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvamJkMi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2piZDIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2piZDIvS2NvbmZpZzoyOmNvbmZpZyBKQkQyXFxuZnMvamJkMi9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmZzL2piZDIvS2NvbmZpZy0xOS1cXG5mcy9qYmQyL0tjb25maWc6MjA6Y29uZmlnIEpCRDJfREVCVUdcXG5mcy9qYmQyL0tjb25maWctMjEtXFx0Ym9vbCBcXFwiSkJEMiAoZXh0NCkgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjA3LjE5ODg2ODg1NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTAyMDM1MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgSkJEMiBEZXBlbmRlbmNpZXMqKlxuXG5SaWdodCwgc28gSkJEMiBpcyBmbGFnZ2VkIGFzIGJlaW5nIGVzc2VudGlhbCBmb3IgRVhUNCBhbmQgT0NGUzIuIEludGVyZXN0aW5nLiBMZXQncyBkaWcgZGVlcGVyLiBUaGUgZmlyc3QgcGxhY2UgdG8gZ28sIG5hdHVyYWxseSwgaXMgdGhlIEtjb25maWcgZmlsZXMgZm9yIHRob3NlIGZpbGVzeXN0ZW1zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqZXhhY3RseSogaG93IEpCRDIgaXMgYnJvdWdodCBpbnRvIHRoZSBwaWN0dXJlIGluIGVhY2ggY2FzZS4gS25vd2luZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyBKQkQyIGlzIHdvdmVuIGluLiBUaW1lIHRvIGNyYWNrIG9wZW4gYGZzL2V4dDQvS2NvbmZpZ2AgYW5kIGBmcy9vY2ZzMi9LY29uZmlnYCBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIHN5c3RlbSBpcyB0ZWxsaW5nIHVzLiBUaGlzIGlzIGxpa2VseSB0aGUgYmVzdCBwYXRoIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBKQkQyIGlzIGxpbmtlZCBpbiwgZWl0aGVyIGRpcmVjdGx5IG9yIHRyYW5zaXRpdmVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI0OSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjEwLjY0OTA3NDc1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTUzNDk1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgSkJEMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9LY29uZmlnPTI9Y29uZmlnIEVYVDRfRlNcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy00LVxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbmZzL2V4dDQvS2NvbmZpZzo1OlxcdHNlbGVjdCBKQkQyXFxuZnMvZXh0NC9LY29uZmlnLTYtXFx0c2VsZWN0IENSQzE2XFxuLS1cXG5mcy9vY2ZzMi9LY29uZmlnPTI9Y29uZmlnIE9DRlMyX0ZTXFxuLS1cXG5mcy9vY2ZzMi9LY29uZmlnLTUtXFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuZnMvb2NmczIvS2NvbmZpZzo2OlxcdHNlbGVjdCBKQkQyXFxuZnMvb2NmczIvS2NvbmZpZy03LVxcdHNlbGVjdCBDUkMzMlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDo1NDoxMC43MjA2MTM3NDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQwNDcxMTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IEVYVDQgYW5kIEpvdXJuYWxpbmcqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIEVuYWJsaW5nIGBFWFQ0X0ZTYCBpcyBhIHNvbGlkIGZpcnN0IHN0ZXA7IGEgZ29vZCBiYXNlIGNvbmZpZ3VyYXRpb24gdG8gc3RhcnQgd2l0aCwgb2J2aW91c2x5LiBOb3csIHRoZSBrZXkgc3ltYm9sIEkgbmVlZCB0byBmb2N1cyBvbiByaWdodCBub3cgaXMgYGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNgLiBVbmRlcnN0YW5kaW5nIHRoaXMgZnVuY3Rpb24gaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBpbiB0cmFja2luZyBkb3duIGFueSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgbmV4dCBxdWVzdGlvbiBpczogaXMgdGhpcyBzeW1ib2wgYWN0dWFsbHkgZXhwb3NlZD8gVGltZSB0byBjaGVjayBpZiBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AgaXMgZXhwb3J0ZWQsIHRvIG1ha2Ugc3VyZSBpdCdzIGFjY2Vzc2libGUgd2hlcmUgSSBuZWVkIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQ2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6NTQ6MTQuMDYxMDg3MzgxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTg4OTk5OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9qYmQyL3RyYW5zYWN0aW9uLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjE0LjEwMjk4NzQyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDAzMzYxNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgRXhwb3J0IElzc3VlIGluIHRoZSBKb3VybmFsaW5nIExheWVyKipcblxuUmlnaHQsIHNvbWV0aGluZydzIG5vdCBxdWl0ZSByaWdodC4gVGhlIGNvZGUgaXNuJ3QgYmVoYXZpbmcgYXMgZXhwZWN0ZWQgYW5kIEknbSBzdXNwZWN0aW5nIGFuIGV4cG9ydC1yZWxhdGVkIGlzc3VlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGpvdXJuYWxpbmcgbGF5ZXIsIHNwZWNpZmljYWxseSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgZmlsZSBzeXN0ZW0uIExldCdzIHN0YXJ0IHdpdGggYGZzL2piZDIvdHJhbnNhY3Rpb24uY2Agc2luY2UgdGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBqb3VybmFsaW5nIHByb2Nlc3MuIEknbSBnb2luZyB0byBqdW1wIGluIGFyb3VuZCBsaW5lIDgxNy4gVGhhdCBhcmVhIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgdHJhbnNhY3Rpb24gbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsbHkgd2hlcmUgdGhlIGV4cG9ydCBwcm9jZXNzIG9yIGl0cyBhYnNlbmNlIHdvdWxkIGJlIHJlZmxlY3RlZC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODkzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6NTQ6MTguMDQzMzI2MTI0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Njc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9qYmQyL3RyYW5zYWN0aW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODEwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODEwOlxcdH1cXG4gODExOlxcdEVYUE9SVF9TWU1CT0woamJkMl9qb3VybmFsX3Jlc3RhcnQpO1xcbiA4MTI6XFx0XFxuIDgxMzpcXHQvKlxcbiA4MTQ6XFx0ICogV2FpdHMgZm9yIGFueSBvdXRzdGFuZGluZyB0X3VwZGF0ZXMgdG8gZmluaXNoLlxcbiA4MTU6XFx0ICogVGhpcyBpcyBjYWxsZWQgd2l0aCB3cml0ZSBqX3N0YXRlX2xvY2sgaGVsZC5cXG4gODE2OlxcdCAqL1xcbiA4MTc6XFx0dm9pZCBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzKGpvdXJuYWxfdCAqam91cm5hbClcXG4gODE4OlxcdHtcXG4gODE5OlxcdFxcdERFRklORV9XQUlUKHdhaXQpO1xcbiA4MjA6XFx0XFxuIDgyMTpcXHRcXHR3aGlsZSAoMSkge1xcbiA4MjI6XFx0XFx0XFx0LypcXG4gODIzOlxcdFxcdFxcdCAqIE5vdGUgdGhhdCB0aGUgcnVubmluZyB0cmFuc2FjdGlvbiBjYW4gZ2V0IGZyZWVkIHVuZGVyIHVzIGlmXFxuIDgyNDpcXHRcXHRcXHQgKiB0aGlzIHRyYW5zYWN0aW9uIGlzIGdldHRpbmcgY29tbWl0dGVkIGluXFxuIDgyNTpcXHRcXHRcXHQgKiBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uKCkgLVxcdTAwM2VcXG4gODI2OlxcdFxcdFxcdCAqIGpiZDJfam91cm5hbF9mcmVlX3RyYW5zYWN0aW9uKCkuIFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdoZW4gd2VcXG4gODI3OlxcdFxcdFxcdCAqIHJlbGVhc2Ugal9zdGF0ZV9sb2NrIC1cXHUwMDNlIHNjaGVkdWxlKCkgLVxcdTAwM2UgYWNxdWlyZSBqX3N0YXRlX2xvY2suXFxuIDgyODpcXHRcXHRcXHQgKiBIZW5jZSB3ZSBzaG91bGQgZXZlcnl0aW1lIHJldHJpZXZlIG5ldyBqX3J1bm5pbmdfdHJhbnNhY3Rpb25cXG4gODI5OlxcdFxcdFxcdCAqIHZhbHVlIChhZnRlciBqX3N0YXRlX2xvY2sgcmVsZWFzZSBhY3F1aXJlIGN5Y2xlKSwgZWxzZSBpdCBtYXlcXG4gODMwOlxcdFxcdFxcdCAqIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUgb2Ygb2xkIGZyZWVkIHRyYW5zYWN0aW9uLlxcbiA4MzE6XFx0XFx0XFx0ICovXFxuIDgzMjpcXHRcXHRcXHR0cmFuc2FjdGlvbl90ICp0cmFuc2FjdGlvbiA9IGpvdXJuYWwtXFx1MDAzZWpfcnVubmluZ190cmFuc2FjdGlvbjtcXG4gODMzOlxcdFxcbiA4MzQ6XFx0XFx0XFx0aWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoXFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X3VwZGF0ZXMpKVxcbiA4MzU6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDgzNjpcXHRcXG4gODM3OlxcdFxcdFxcdHByZXBhcmVfdG9fd2FpdChcXHUwMDI2am91cm5hbC1cXHUwMDNlal93YWl0X3VwZGF0ZXMsIFxcdTAwMjZ3YWl0LFxcbiA4Mzg6XFx0XFx0XFx0XFx0XFx0VEFTS19VTklOVEVSUlVQVElCTEUpO1xcbiA4Mzk6XFx0XFxuIDg0MDpcXHRcXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNmpvdXJuYWwtXFx1MDAzZWpfc3RhdGVfbG9jayk7XFxuIDg0MTpcXHRcXHRcXHRzY2hlZHVsZSgpO1xcbiA4NDI6XFx0XFx0XFx0ZmluaXNoX3dhaXQoXFx1MDAyNmpvdXJuYWwtXFx1MDAzZWpfd2FpdF91cGRhdGVzLCBcXHUwMDI2d2FpdCk7XFxuIDg0MzpcXHRcXHRcXHR3cml0ZV9sb2NrKFxcdTAwMjZqb3VybmFsLVxcdTAwM2VqX3N0YXRlX2xvY2spO1xcbiA4NDQ6XFx0XFx0fVxcbiA4NDU6XFx0fVxcbiA4NDY6XFx0XFxuIDg0NzpcXHQvKipcXG4gODQ4OlxcdCAqIGpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXMgKCkgLSBlc3RhYmxpc2ggYSB0cmFuc2FjdGlvbiBiYXJyaWVyLlxcbiA4NDk6XFx0ICogQGpvdXJuYWw6ICBKb3VybmFsIHRvIGVzdGFibGlzaCBhIGJhcnJpZXIgb24uXFxuIDg1MDpcXHQgKlxcbiA4NTE6XFx0ICogVGhpcyBsb2NrcyBvdXQgYW55IGZ1cnRoZXIgdXBkYXRlcyBmcm9tIGJlaW5nIHN0YXJ0ZWQsIGFuZCBibG9ja3NcXG4gODUyOlxcdCAqIHVudGlsIGFsbCBleGlzdGluZyB1cGRhdGVzIGhhdmUgY29tcGxldGVkLCByZXR1cm5pbmcgb25seSBvbmNlIHRoZVxcbiA4NTM6XFx0ICogam91cm5hbCBpcyBpbiBhIHF1aWVzY2VudCBzdGF0ZSB3aXRoIG5vIHVwZGF0ZXMgcnVubmluZy5cXG4gODU0OlxcdCAqXFxuIDg1NTpcXHQgKiBUaGUgam91cm5hbCBsb2NrIHNob3VsZCBub3QgYmUgaGVsZCBvbiBlbnRyeS5cXG4gODU2OlxcdCAqL1xcbiA4NTc6XFx0dm9pZCBqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzKGpvdXJuYWxfdCAqam91cm5hbClcXG4gODU4OlxcdHtcXG4gODU5OlxcdFxcdGpiZDJfbWlnaHRfd2FpdF9mb3JfY29tbWl0KGpvdXJuYWwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDo1NDoxOC4wNDM0NzQ5NDRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzOTk3NjcwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBDb2RlJ3MgVmlzaWJpbGl0eSoqXG5cbkFscmlnaHQsIHNvIHRoaXMgZnVuY3Rpb24uLi4gaXQncyBub3QgZXhwbGljaXRseSBkZWNsYXJlZCBhcyBleHBvcnRlZCwgd2hpY2ggaXMgdGhlIGZpcnN0IHRoaW5nIEkgY2hlY2suIEJ1dCwgaG9sZCBvbiBhIHNlYywgaXQncyAqbm90KiBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSXMgaXQgbWF5YmUgYmVpbmcgZXhwb3J0ZWQgdGhyb3VnaCBzb21lIG90aGVyIHJvdXRlLCBkZWZpbmVkIGluIGEgZGlmZmVyZW50IGZpbGU/IExldCdzIHJ1bGUgdGhhdCBvdXQgcXVpY2tseS4gT2theSwgbm8sIHRoZSBleHBvcnQgaXMgbm90IGRlY2xhcmVkIGluIGFub3RoZXIgZmlsZS5cblxuV2FpdCwgSSByZWNhbGwgc2VlaW5nIGBqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzYCBzb21ld2hlcmUuIE5vdywgKnRoYXQncyogYW4gZXhwb3J0ZWQgZnVuY3Rpb24sIGFuZCBJIG5lZWQgdG8gYmUgc3VyZS4gTGV0J3MgbWFrZSBjZXJ0YWluIHRoYXQgZnVuY3Rpb24gaXMgZXhwb3J0ZWQsIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg1NywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6NTQ6MjEuOTgzNDU0NTE4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQ2NzAzOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9qYmQyL3RyYW5zYWN0aW9uLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjIyLjAyOTkyNzUzN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTY2NjQ2MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGlhZ25vc3RpYyBXb3JrZmxvdyBpbiBGaWxlIEV4cG9ydCBFeGFtaW5hdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIHN0ZXAgaW4gYW55IGZpbGUgaW50ZWdyaXR5IGNoZWNrIGlzIHRvIGVzdGFibGlzaCB0aGUgYmFzaWMgZmxvdyBvZiBvcGVyYXRpb25zLiBHaXZlbiB3aGF0J3Mgb24gbXkgbWVudGFsIHNjaGVtYXRpYywgbXkgaW1tZWRpYXRlIHN1c3BpY2lvbiBpcyB0aGF0IHRoZSBleHBvcnQgcm91dGluZSwgb3IgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBwcm9jZXNzLCBtaWdodCBiZSBhcHBlbmRpbmcgaXRzIG91dHB1dCBhdCB0aGUgYWJzb2x1dGUgZW5kIG9mIHRoZSB0YXJnZXQgZmlsZS4gSXQncyB0aGUgbW9zdCBjb21tb24gYW5kIGVhc2lseSBvdmVybG9va2VkIHBvaW50IGZvciBhIHByb2Nlc3MgdG8gZHVtcCBpdHMgZmluYWwgd29yay4gQSBxdWljayBzYW5pdHkgY2hlY2sgZm9yIHRoaXMgJ2VuZC1vZi1maWxlJyAoRU9GKSBleHBvcnQgaW1wbGVtZW50YXRpb24gaXMgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBiZWZvcmUgSSBtb3ZlIG9uIHRvIG1vcmUgZWxhYm9yYXRlIGRpYWdub3Npcy4gSSdsbCBuZWVkIHRvIHZlcmlmeSBpZiB0aGUgZmlsZSBzaXplIGNoYW5nZXMgY29ycmVzcG9uZCB0byBleHBlY3RlZCBkYXRhIHNpemUgaW4gdGhlIGxhdGVyIHN0YWdlcyBvZiB0aGlzIGRpYWdub3N0aWMuIEknbGwgZ28gZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEzOSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjI3Ljk5NjU3NjIwN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU4NTg1NzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvamJkMi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjI4LjA0MjQ0MzM0NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTY5MDY3OTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKldhaXQsIFRoYXQncyBFeHBvcnRlZD8qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJJ20ganVzdCBwYXJzaW5nIHRocm91Z2ggdGhpcyBhbmQgc29tZXRoaW5nJ3Mgbm90IHF1aXRlIHJpZ2h0LiBgamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlc2AuLi4gdGhhdCdzICpleHBvcnRlZCo/IEknbSBwcmV0dHkgc3VyZSBJIGtub3cgd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgZm9yLiBJdCBzaG91bGQgYmUgaW50ZXJuYWwgdG8gdGhlIGpvdXJuYWwgbGF5ZXIsIHNob3VsZG4ndCBpdD8gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGl0J3MgZGVlcGx5IGludm9sdmVkIGluIHRoZSBsb3ctbGV2ZWwgbG9ja2luZyBhbmQgdXBkYXRlcyB3aXRoaW4gdGhlIGpvdXJuYWwuIEV4cG9zaW5nIHRoYXQuLi4gdGhhdCBmZWVscyBsaWtlIGEgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCBhIHNpZ25pZmljYW50IGFic3RyYWN0aW9uIGxlYWsuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIGl0J3MgYmVpbmcgZXhwb3J0ZWQuIElzIHRoaXMgc29tZSBsZWdhY3kgYXJ0aWZhY3Q/IElzIGl0IHBhcnQgb2YgYSBzdXBwb3J0ZWQgaW50ZXJmYWNlIEknbSBub3QgYXdhcmUgb2Y/IE9yIGlzIGl0IGEgYnVnLCBhIG1pc2NvbmZpZ3VyYXRpb24sIG9yLCBldmVuIHdvcnNlLCBhIGRlbGliZXJhdGUgYmFja2Rvb3I/IEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdGhhdCdzIGNhbGxpbmcgdGhhdCBhbmQgZmlndXJlIG91dCB0aGUgY29udGV4dC4gVGhpcyBjb3VsZCBiZSBhIHNpZ25pZmljYW50IHByb2JsZW0uIFRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzODgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDo1NDozMi4wMTE1MTM1OTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjA2OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvamJkMi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvamJkMi9qb3VybmFsLmM9NTk9RVhQT1JUX1NZTUJPTChqYmQyX2pvdXJuYWxfc3RvcCk7XFxuZnMvamJkMi9qb3VybmFsLmM6NjA6RVhQT1JUX1NZTUJPTChqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzKTtcXG5mcy9qYmQyL2pvdXJuYWwuYy02MS1FWFBPUlRfU1lNQk9MKGpiZDJfam91cm5hbF91bmxvY2tfdXBkYXRlcyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjMyLjA1NDEyNTAzOVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDEzNTE5ODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBKb3VybmFsIFVwZGF0ZSBXYWl0ZXJzKipcblxuT2theSwgc28gSSd2ZSBwaW5wb2ludGVkIHRoZSByZWxldmFudCBjb2RlOyB0aGUgYGZzL2piZDIvam91cm5hbC5jYCBmaWxlLiBSaWdodCwgSSBzZWUgdGhhdCBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AgaXMgYSBub24tc3RhdGljIGZ1bmN0aW9uIOKAkyB0aGF0J3MgZXhjZWxsZW50LiBJdCBtZWFucyBpdCdzIGFjY2Vzc2libGUgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBtYWtpbmcgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGludmVzdGlnYXRpb24uIFRoYXQncyBhIHNvbGlkIGZvY3VzIHN5bWJvbC4gU2ltaWxhcmx5LCBgamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlc2AgbG9va3MgbGlrZSBhbm90aGVyIGltcG9ydGFudCBmdW5jdGlvbiByZWxhdGVkIHRvIHRoaXMgYXJlYS4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIGtlZXAgdHJhY2sgb2YgdGhhdCBvbmUuXG5cbk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGlkZW50aWZ5IHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzYC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBncmFwaCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgZ3Jhc3Agb2YgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBqb3VybmFsIHN5c3RlbS4gTGV0J3Mgc2VlIHdobydzIHdhaXRpbmcgZm9yIHRob3NlIHVwZGF0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NjQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDo1NDozNi4wNjc2NDg2MjJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTgxODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvamJkMi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvamJkMi9jb21taXQuYz0zNzY9dm9pZCBqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uKGpvdXJuYWxfdCAqam91cm5hbClcXG4tLVxcbmZzL2piZDIvY29tbWl0LmMtNDgxLVxcdC8vIHdhaXRzIGZvciBhbnkgdF91cGRhdGVzIHRvIGZpbmlzaFxcbmZzL2piZDIvY29tbWl0LmM6NDgyOlxcdGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXMoam91cm5hbCk7XFxuZnMvamJkMi9jb21taXQuYy00ODMtXFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODExPUVYUE9SVF9TWU1CT0woamJkMl9qb3VybmFsX3Jlc3RhcnQpO1xcbi0tXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTgxNi0gKi9cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM6ODE3OnZvaWQgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTgxOC17XFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODU3PXZvaWQgamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtODcyLVxcdC8qIFdhaXQgdW50aWwgdGhlcmUgYXJlIG5vIHJ1bm5pbmcgdF91cGRhdGVzICovXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jOjg3MzpcXHRqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzKGpvdXJuYWwpO1xcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04NzQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjM2LjExNTYzNDI2MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDI0ODA1MzIzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBKQkQyIFBhdGNoOiBSYWNlIENvbmRpdGlvbiBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGFuZCBgamJkMl9qb3VybmFsX2xvY2tfdXBkYXRlc2AganVtcCBvdXQgYXMgaW50ZXJlc3Rpbmcgc3ltYm9scy4gYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGlzIGRlZmluaXRlbHkgYSBjb3JlIGZ1bmN0aW9uIGluIEpCRDIsIHNvIGxldCdzIGRpZyBpbi4gVGhlIHBhdGNoIGRlc2NyaXB0aW9uIG1lbnRpb25zIGEgcmFjZSBjb25kaXRpb24sIG9yIHBlcmhhcHMgYSBidWcsIHJlbGF0ZWQgdG8gaG93IGBwcmVwYXJlX3RvX3dhaXRgIGlzIGJlaW5nIHVzZWQuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSBgcHJlcGFyZV90b193YWl0YCB3YXMgY2FsbGVkICpiZWZvcmUqIGNoZWNraW5nIGAhYXRvbWljX3JlYWQoXHUwMDI2dHJhbnNhY3Rpb24tXHUwMDNldF91cGRhdGVzKWAuIElmIGB0X3VwZGF0ZXNgIHdhcyB6ZXJvLCBpdCB3b3VsZCBjYWxsIGBmaW5pc2hfd2FpdGAgYW5kIGJyZWFrIG91dCBvZiB0aGUgbG9vcC5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBvcmlnaW5hbCBjb2RlIGJsb2NrIGFuZCB0aGUgbmV3IGNvZGUuIFRoZSBvcmlnaW5hbCB3YXMgbGlrZSB0aGlzOlxuYGBgY1xuXHRcdHByZXBhcmVfdG9fd2FpdChcdTAwMjZqb3VybmFsLVx1MDAzZWpfd2FpdF91cGRhdGVzLCBcdTAwMjZ3YWl0LFxuXHRcdFx0XHRUQVNLX1VOSU5URVJSVVBUSUJMRSk7XG5cdFx0aWYgKCFhdG9taWNfcmVhZChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpKSB7XG5cdFx0XHRmaW5pc2hfd2FpdChcdTAwMjZqb3VybmFsLVx1MDAzZWpfd2FpdF91cGRhdGVzLCBcdTAwMjZ3YWl0KTtcblx0XHRcdGJyZWFrO1xuXHRcdH1cbmBgYFxuVGhlIG5ldyBjb2RlIHNpbXBsaWZpZXMgaXQgdG86XG5gYGBjXG5cdFx0aWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoXHUwMDI2dHJhbnNhY3Rpb24tXHUwMDNldF91cGRhdGVzKSlcblx0XHRcdGJyZWFrO1xuXG5cdFx0cHJlcGFyZV90b193YWl0KFx1MDAyNmpvdXJuYWwtXHUwMDNlal93YWl0X3VwZGF0ZXMsIFx1MDAyNndhaXQsXG5cdFx0XHRcdFRBU0tfVU5JTlRFUlJVUFRJQkxFKTtcbmBgYFxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMsIHdhaXQuLi4gaWYgYHRfdXBkYXRlc2AgYmVjb21lcyB6ZXJvICphZnRlciogdGhlIGNoZWNrIGJ1dCAqYmVmb3JlKiB0aGUgYHByZXBhcmVfdG9fd2FpdGAgY2FsbCwgd291bGRuJ3QgaXQgc3RpbGwgc2xlZXA/IE5vLCBgcHJlcGFyZV90b193YWl0YCBjaGFuZ2VzIHRoZSB0YXNrIHN0YXRlLCBidXQgaGFuZyBvbiwgdGhleSBtb3ZlZCB0aGUgYGF0b21pY19yZWFkYCBjaGVjayAqYmVmb3JlKiB0aGUgYHByZXBhcmVfdG9fd2FpdGAuIElmIHdlIGRvIGEgcXVpY2sgY2hlY2ssIGFuZCB0aGVuLCBgdF91cGRhdGVzYCBnb2VzIHRvIHplcm8sIHRoZSBjYWxsIHRvIGBzY2hlZHVsZSgpYCB3aWxsIHBvdGVudGlhbGx5IHNsZWVwIHRoZSB0YXNrIGZvcmV2ZXIuIEJ1dCB0aGF0J3Mgbm90IHJpZ2h0LlxuXG5BaCwgd2FpdCBhIHNlY29uZC4uLiB0aGlzIGxvb3AgaXMgbGlrZWx5IHJ1bm5pbmcgd2hpbGUgYSBsb2NrIGlzIGhlbGQsIGBqX3N0YXRlX2xvY2tgIC0gaXQncyBhIHdyaXRlIGxvY2ssIHNvIHRoZSB1bmxvY2sgc2hvdWxkIGJlIGNhbGxlZCBhZnRlciBgcHJlcGFyZV90b193YWl0YC4gU28sIHdoaWxlIHRoYXQgbG9jayBpcyBoZWxkLCBgdF91cGRhdGVzYCAqc2hvdWxkbid0KiBjaGFuZ2UsIHJpZ2h0PyBMZXQncyBjaGVjay4gU2luY2UgdGhlIHVubG9jayBpcyBjYWxsZWQgYWZ0ZXIgYHByZXBhcmVfdG9fd2FpdGAsIGB0X3VwZGF0ZXNgICpjYW5ub3QqIGNoYW5nZSB3aGlsZSB0aGUgbG9jayBpcyBoZWxkLiBTbywgaXMgdGhhdCB0cnVlPyBMZXQncyBjb25maXJtIGJ5IGNoZWNraW5nIHdoZXJlIGB0X3VwZGF0ZXNgIGlzIG1vZGlmaWVkOyBpdCBoYXMgdG8gYmUgbW9kaWZpZWQgYnkgYGpiZDJfam91cm5hbF9zdG9wYCwgYW5kIHRoYXQgZnVuY3Rpb24gdGFrZXMgYGpfc3RhdGVfbG9ja2AuIFNvLCB0aGlzIHBhdGNoIHByZXZlbnRzIGEgcmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDo1NDo0Ni4zNjM2OTAxNjlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMDQzODg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0b21pY18uKnRfdXBkYXRlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9qYmQyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9qYmQyL2NoZWNrcG9pbnQuYz03MDI9dm9pZCBfX2piZDJfam91cm5hbF9kcm9wX3RyYW5zYWN0aW9uKGpvdXJuYWxfdCAqam91cm5hbCwgdHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb24pXFxuLS1cXG5mcy9qYmQyL2NoZWNrcG9pbnQuYy03MjEtXFx0Sl9BU1NFUlQodHJhbnNhY3Rpb24tXFx1MDAzZXRfY2hlY2twb2ludF9saXN0ID09IE5VTEwpO1xcbmZzL2piZDIvY2hlY2twb2ludC5jOjcyMjpcXHRKX0FTU0VSVChhdG9taWNfcmVhZChcXHUwMDI2dHJhbnNhY3Rpb24tXFx1MDAzZXRfdXBkYXRlcykgPT0gMCk7XFxuZnMvamJkMi9jaGVja3BvaW50LmMtNzIzLVxcdEpfQVNTRVJUKGpvdXJuYWwtXFx1MDAzZWpfY29tbWl0dGluZ190cmFuc2FjdGlvbiAhPSB0cmFuc2FjdGlvbik7XFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODA9c3RhdGljIHZvaWQgamJkMl9nZXRfdHJhbnNhY3Rpb24oam91cm5hbF90ICpqb3VybmFsLFxcbi0tXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTg3LVxcdHRyYW5zYWN0aW9uLVxcdTAwM2V0X2V4cGlyZXMgPSBqaWZmaWVzICsgam91cm5hbC1cXHUwMDNlal9jb21taXRfaW50ZXJ2YWw7XFxuZnMvamJkMi90cmFuc2FjdGlvbi5jOjg4OlxcdGF0b21pY19zZXQoXFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X3VwZGF0ZXMsIDApO1xcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04OS1cXHRhdG9taWNfc2V0KFxcdTAwMjZ0cmFuc2FjdGlvbi1cXHUwMDNldF9vdXRzdGFuZGluZ19jcmVkaXRzLFxcbi0tXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jPTMxMj1zdGF0aWMgaW50IHN0YXJ0X3RoaXNfaGFuZGxlKGpvdXJuYWxfdCAqam91cm5hbCwgaGFuZGxlX3QgKmhhbmRsZSxcXG4tLVxcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy00MzQtXFx0aGFuZGxlLVxcdTAwM2VoX3N0YXJ0X2ppZmZpZXMgPSBqaWZmaWVzO1xcbmZzL2piZDIvdHJhbnNhY3Rpb24uYzo0MzU6XFx0YXRvbWljX2luYyhcXHUwMDI2dHJhbnNhY3Rpb24tXFx1MDAzZXRfdXBkYXRlcyk7XFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTQzNi1cXHRhdG9taWNfaW5jKFxcdTAwMjZ0cmFuc2FjdGlvbi1cXHUwMDNldF9oYW5kbGVfY291bnQpO1xcbi0tXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jPTY5OD1zdGF0aWMgdm9pZCBzdG9wX3RoaXNfaGFuZGxlKGhhbmRsZV90ICpoYW5kbGUpXFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtNzA0LVxcdEpfQVNTRVJUKGpvdXJuYWxfY3VycmVudF9oYW5kbGUoKSA9PSBoYW5kbGUpO1xcbmZzL2piZDIvdHJhbnNhY3Rpb24uYzo3MDU6XFx0Sl9BU1NFUlQoYXRvbWljX3JlYWQoXFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X3VwZGF0ZXMpIFxcdTAwM2UgMCk7XFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTcwNi1cXHRjdXJyZW50LVxcdTAwM2Vqb3VybmFsX2luZm8gPSBOVUxMO1xcbi0tXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTczMS1cXHRcXHRcXHRcXHRcXHRcXHR0cmFuc2FjdGlvbik7XFxuZnMvamJkMi90cmFuc2FjdGlvbi5jOjczMjpcXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcXHUwMDI2dHJhbnNhY3Rpb24tXFx1MDAzZXRfdXBkYXRlcykpXFxuZnMvamJkMi90cmFuc2FjdGlvbi5jLTczMy1cXHRcXHR3YWtlX3VwKFxcdTAwMjZqb3VybmFsLVxcdTAwM2VqX3dhaXRfdXBkYXRlcyk7XFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmM9ODE3PXZvaWQgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpXFxuLS1cXG5mcy9qYmQyL3RyYW5zYWN0aW9uLmMtODMzLVxcbmZzL2piZDIvdHJhbnNhY3Rpb24uYzo4MzQ6XFx0XFx0aWYgKCF0cmFuc2FjdGlvbiB8fCAhYXRvbWljX3JlYWQoXFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X3VwZGF0ZXMpKVxcbmZzL2piZDIvdHJhbnNhY3Rpb24uYy04MzUtXFx0XFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE0OjU0OjQ2LjQxNjczODU3N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTI2MTQxOTkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbmN1cnJlbmN5IGluIHRoZSBKb3VybmFsaW5nIENvZGUqKlxuXG5Pa2F5LCBzbyBgc3RvcF90aGlzX2hhbmRsZWAgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSSBzZWUgdGhhdCBpdCB1c2VzIGBhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfdXBkYXRlcylgIHRvIGRlY3JlbWVudCBhIGNvdW50ZXIsIGFuZCBpZiBpdCBoaXRzIHplcm8sIGl0IHdha2VzIHVwIGEgd2FpdGluZyBwcm9jZXNzIHZpYSBgd2FrZV91cChcdTAwMjZqb3VybmFsLVx1MDAzZWpfd2FpdF91cGRhdGVzKWAuIE15IGZpcnN0IHRob3VnaHQgaXM6IHdhaXQsIGlzIHRoaXMgaGFwcGVuaW5nIHdpdGhvdXQgaG9sZGluZyBgal9zdGF0ZV9sb2NrYD8gVGhhdCBjb3VsZCBiZSBhIHJlY2lwZSBmb3IgcmFjZSBjb25kaXRpb25zIGlmIG5vdCBoYW5kbGVkIGNhcmVmdWxseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmN1cnJlbmN5IGltcGxpY2F0aW9ucyBoZXJlLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGZvciBgc3RvcF90aGlzX2hhbmRsZWAgdG8gY29uZmlybS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgYXRvbWljIG9wZXJhdGlvbiBjb3JyZWN0bHkgbWFuYWdlcyB0aGUgc3luY2hyb25pemF0aW9uLCBvciBpZiB0aGVyZSdzIGFueSBzdWJ0bGUgcmFjZSBjb25kaXRpb24gdGhhdCBJJ20gbWlzc2luZy4gVGhpcyB3YXJyYW50cyBjYXJlZnVsIHNjcnV0aW55OyBhIHN1YnRsZSBidWcgaW4gdGhpcyBhcmVhIGNhbiBiZSBjYXRhc3Ryb3BoaWMgZm9yIGRhdGEgaW50ZWdyaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTg3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6NTU6MDEuNjc4MTYwNzYxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9qYmQyL3RyYW5zYWN0aW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjk4LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjk4OlxcdHN0YXRpYyB2b2lkIHN0b3BfdGhpc19oYW5kbGUoaGFuZGxlX3QgKmhhbmRsZSlcXG4gNjk5OlxcdHtcXG4gNzAwOlxcdFxcdHRyYW5zYWN0aW9uX3QgKnRyYW5zYWN0aW9uID0gaGFuZGxlLVxcdTAwM2VoX3RyYW5zYWN0aW9uO1xcbiA3MDE6XFx0XFx0am91cm5hbF90ICpqb3VybmFsID0gdHJhbnNhY3Rpb24tXFx1MDAzZXRfam91cm5hbDtcXG4gNzAyOlxcdFxcdGludCByZXZva2VzO1xcbiA3MDM6XFx0XFxuIDcwNDpcXHRcXHRKX0FTU0VSVChqb3VybmFsX2N1cnJlbnRfaGFuZGxlKCkgPT0gaGFuZGxlKTtcXG4gNzA1OlxcdFxcdEpfQVNTRVJUKGF0b21pY19yZWFkKFxcdTAwMjZ0cmFuc2FjdGlvbi1cXHUwMDNldF91cGRhdGVzKSBcXHUwMDNlIDApO1xcbiA3MDY6XFx0XFx0Y3VycmVudC1cXHUwMDNlam91cm5hbF9pbmZvID0gTlVMTDtcXG4gNzA3OlxcdFxcdC8qXFxuIDcwODpcXHRcXHQgKiBTdWJ0cmFjdCBuZWNlc3NhcnkgcmV2b2tlIGRlc2NyaXB0b3IgYmxvY2tzIGZyb20gaGFuZGxlIGNyZWRpdHMuIFdlXFxuIDcwOTpcXHRcXHQgKiB0YWtlIGNhcmUgdG8gYWNjb3VudCBvbmx5IGZvciByZXZva2UgZGVzY3JpcHRvciBibG9ja3MgdGhlXFxuIDcxMDpcXHRcXHQgKiB0cmFuc2FjdGlvbiB3aWxsIHJlYWxseSBuZWVkIGFzIGxhcmdlIHNlcXVlbmNlcyBvZiB0cmFuc2FjdGlvbnMgd2l0aFxcbiA3MTE6XFx0XFx0ICogc21hbGwgbnVtYmVycyBvZiByZXZva2VzIGFyZSByZWxhdGl2ZWx5IGNvbW1vbi5cXG4gNzEyOlxcdFxcdCAqL1xcbiA3MTM6XFx0XFx0cmV2b2tlcyA9IGhhbmRsZS1cXHUwMDNlaF9yZXZva2VfY3JlZGl0c19yZXF1ZXN0ZWQgLSBoYW5kbGUtXFx1MDAzZWhfcmV2b2tlX2NyZWRpdHM7XFxuIDcxNDpcXHRcXHRpZiAocmV2b2tlcykge1xcbiA3MTU6XFx0XFx0XFx0aW50IHRfcmV2b2tlcywgcmV2b2tlX2Rlc2NyaXB0b3JzO1xcbiA3MTY6XFx0XFx0XFx0aW50IHJyX3Blcl9ibGsgPSBqb3VybmFsLVxcdTAwM2VqX3Jldm9rZV9yZWNvcmRzX3Blcl9ibG9jaztcXG4gNzE3OlxcdFxcbiA3MTg6XFx0XFx0XFx0V0FSTl9PTl9PTkNFKERJVl9ST1VORF9VUChyZXZva2VzLCBycl9wZXJfYmxrKVxcbiA3MTk6XFx0XFx0XFx0XFx0XFx0XFx1MDAzZSBoYW5kbGUtXFx1MDAzZWhfdG90YWxfY3JlZGl0cyk7XFxuIDcyMDpcXHRcXHRcXHR0X3Jldm9rZXMgPSBhdG9taWNfYWRkX3JldHVybihyZXZva2VzLFxcbiA3MjE6XFx0XFx0XFx0XFx0XFx0XFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X291dHN0YW5kaW5nX3Jldm9rZXMpO1xcbiA3MjI6XFx0XFx0XFx0cmV2b2tlX2Rlc2NyaXB0b3JzID1cXG4gNzIzOlxcdFxcdFxcdFxcdERJVl9ST1VORF9VUCh0X3Jldm9rZXMsIHJyX3Blcl9ibGspIC1cXG4gNzI0OlxcdFxcdFxcdFxcdERJVl9ST1VORF9VUCh0X3Jldm9rZXMgLSByZXZva2VzLCBycl9wZXJfYmxrKTtcXG4gNzI1OlxcdFxcdFxcdGhhbmRsZS1cXHUwMDNlaF90b3RhbF9jcmVkaXRzIC09IHJldm9rZV9kZXNjcmlwdG9ycztcXG4gNzI2OlxcdFxcdH1cXG4gNzI3OlxcdFxcdGF0b21pY19zdWIoaGFuZGxlLVxcdTAwM2VoX3RvdGFsX2NyZWRpdHMsXFxuIDcyODpcXHRcXHRcXHQgICBcXHUwMDI2dHJhbnNhY3Rpb24tXFx1MDAzZXRfb3V0c3RhbmRpbmdfY3JlZGl0cyk7XFxuIDcyOTpcXHRcXHRpZiAoaGFuZGxlLVxcdTAwM2VoX3Jzdl9oYW5kbGUpXFxuIDczMDpcXHRcXHRcXHRfX2piZDJfam91cm5hbF91bnJlc2VydmVfaGFuZGxlKGhhbmRsZS1cXHUwMDNlaF9yc3ZfaGFuZGxlLFxcbiA3MzE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0dHJhbnNhY3Rpb24pO1xcbiA3MzI6XFx0XFx0aWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoXFx1MDAyNnRyYW5zYWN0aW9uLVxcdTAwM2V0X3VwZGF0ZXMpKVxcbiA3MzM6XFx0XFx0XFx0d2FrZV91cChcXHUwMDI2am91cm5hbC1cXHUwMDNlal93YWl0X3VwZGF0ZXMpO1xcbiA3MzQ6XFx0XFxuIDczNTpcXHRcXHRyd3NlbV9yZWxlYXNlKFxcdTAwMjZqb3VybmFsLVxcdTAwM2VqX3RyYW5zX2NvbW1pdF9tYXAsIF9USElTX0lQXyk7XFxuIDczNjpcXHRcXHQvKlxcbiA3Mzc6XFx0XFx0ICogU2NvcGUgb2YgdGhlIEdGUF9OT0ZTIGNvbnRleHQgaXMgb3ZlciBoZXJlIGFuZCBzbyB3ZSBjYW4gcmVzdG9yZSB0aGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTQ6NTU6MDEuNjc4MjkzNTAxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NDI0Njc3Mzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbiBpbiBKQkQyIFRyYW5zYWN0aW9uIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGluIGBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzYCwgYW5kIGltbWVkaWF0ZWx5LCBteSBzcGlkZXkgc2Vuc2VzIGFyZSB0aW5nbGluZy4gIEkgc2VlIHRoYXQgYHN0b3BfdGhpc19oYW5kbGVgICpkb2Vzbid0KiBob2xkIGBqX3N0YXRlX2xvY2tgLCB3aGljaCBtZWFucyBgdF91cGRhdGVzYCBpcyBwb3RlbnRpYWxseSBiZWluZyBtb2RpZmllZCBjb25jdXJyZW50bHkuIFRoYXQncyB0aGUgZmlyc3QgcmVkIGZsYWcuICBUaGUgb3JpZ2luYWwgY29kZSB3YXMgY2hlY2tpbmcgYCFhdG9taWNfcmVhZChcdTAwMjZ0cmFuc2FjdGlvbi1cdTAwM2V0X3VwZGF0ZXMpYCAqYWZ0ZXIqIHRoZSBgcHJlcGFyZV90b193YWl0YCBjYWxsLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgYW5kIGNvcnJlY3Qgd2FpdCBxdWV1ZSBwYXR0ZXJuOiBhZGQgdG8gdGhlIHF1ZXVlLCBjaGVjayB0aGUgY29uZGl0aW9uLCBwb3RlbnRpYWxseSBzY2hlZHVsZS5cblxuVGhlIHBhdGNoLCBob3dldmVyLCBzaGlmdHMgdGhpbmdzLiBJdCBub3cgY2hlY2tzIGAhdHJhbnNhY3Rpb24gfHwgIWF0b21pY19yZWFkKFx1MDAyNnRyYW5zYWN0aW9uLVx1MDAzZXRfdXBkYXRlcylgICpiZWZvcmUqIGBwcmVwYXJlX3RvX3dhaXRgLiBXYWl0IGEgc2Vjb25k4oCmIHRoYXQgc21lbGxzIGxpa2UgYSBjbGFzc2ljIHJhY2UuIElmIGB0X3VwZGF0ZXNgIGdvZXMgdG8gemVybyAqYWZ0ZXIqIHRoYXQgaW5pdGlhbCBjaGVjayBidXQgKmJlZm9yZSogYHByZXBhcmVfdG9fd2FpdGAgaXMgY2FsbGVkLCB0aGUgd2FrZXVwIHNpZ25hbCB3aWxsIGJlIGxvc3QhIGBwcmVwYXJlX3RvX3dhaXRgIHdpbGwgdGhlbiBhZGQgdGhlIHRhc2sgdG8gdGhlIHdhaXQgcXVldWUsIHNldCBpdCB0byBgVEFTS19VTklOVEVSUlVQVElCTEVgLCBhbmQgY2FsbCBgc2NoZWR1bGUoKWAsIGxlYWRpbmcgdG8gYW4gaW5kZWZpbml0ZSBzbGVlcC4gVGhpcyAqaGFzKiB0byBiZSBhIGJ1ZyFcblxuQW5kIHRoZW4gSSByZWFsaXplLi4uIGlzIHRoZSBwYXRjaCBjb3JyZWN0PyBBZnRlciByZXZpZXdpbmcgdGhlIGNoYW5nZSBhZ2FpbiBhbmQgdGhpbmtpbmcgYWJvdXQgaG93IGBqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzYCBpcyBjYWxsZWQsIGl0IHJlcXVpcmVzIHRoZSBgal9zdGF0ZV9sb2NrYCB0byBiZSBoZWxkIHdoZW4gdGhlIHdha2V1cCBpcyBjYWxsZWQuIEJ1dCBgc3RvcF90aGlzX2hhbmRsZWAgZG9lc24ndCB0YWtlIHRoYXQgbG9jayBzbyB0aGF0J3Mgd2hlcmUgdGhlIHByb2JsZW0gaXMuICBUaGUgb3JpZ2luYWwgY29kZSBjYWxsZWQgYHByZXBhcmVfdG9fd2FpdGAgKmJlZm9yZSogdGhlIGNoZWNrLCBhbmQgdGhlIG5ldyBjb2RlIGludHJvZHVjZXMgYSByYWNlISAgSSBjYW4gdmlzdWFsaXplIHRoZSBwb3RlbnRpYWwgc2NlbmFyaW86IGB0X3VwZGF0ZXNgIGJlY29tZXMgemVybyBiZWZvcmUgYHByZXBhcmVfdG9fd2FpdGAsIGB3YWtlX3VwYCBoYXBwZW5zLCBidXQgaXQgZG9lc24ndCBmaW5kIHRoZSB0YXNrIGluIHRoZSB3YWl0IHF1ZXVlIGFuZCBkb2VzIG5vdGhpbmcuIFRoZW4gYHByZXBhcmVfdG9fd2FpdGAgYWRkcyB0aGUgc2xlZXBpbmcgdGFzay4gVGhlIHRhc2sgc2xlZXBzIGZvcmV2ZXIuXG5cbkhvd2V2ZXIsIEknbSBub3QgaGVyZSB0byBqdWRnZSB0aGUgcGF0Y2gncyBjb3JyZWN0bmVzcywgb3IgdG8gZml4IHRoZSBjb2RlLCBJIGFtIGhlcmUgdG8gZGVjaWRlIGlmIHRoaXMgcmVxdWlyZXMgZnV6emluZyEgQ29uc2lkZXJpbmcgdGhhdCB0aGlzIGlzIEpCRDIsIGEgY29yZSBqb3VybmFsaW5nIGxheWVyIHVzZWQgYnkgZXh0NCAoYW5kIHBvdGVudGlhbGx5IG90aGVyIGZpbGVzeXN0ZW1zIGlmIGNvbmZpZ3VyZWQpLCBhbmQgYmVjYXVzZSB0aGlzIGNoYW5nZXMgYSBjcml0aWNhbCBzeW5jaHJvbml6YXRpb24gcG9pbnQgaW4gYSBjb3JlIGZ1bmN0aW9uLCBJIGhhdmUgdG8gY29uY2x1ZGUgdGhhdCB0aGlzIGRlZmluaXRlbHkgd2FycmFudHMgZnV6emluZy4gQSBoYW5nIGxpa2UgdGhpcyB3b3VsZCBiZSBjYXRhc3Ryb3BoaWMgZm9yIGEgZmlsZXN5c3RlbSwgYW5kIGZ1enppbmcgaXMgdGhlIGJlc3Qgd2F5IHRvIHVuY292ZXIgc3VjaCBwcm9ibGVtcy5cblxuTGV0J3MgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uLiBgRVhUNF9GU2Agc2hvdWxkIGJlIGVub3VnaCwgYXMgaXQgcHVsbHMgaW4gYEpCRDJgLiBJbmRlZWQsIGl0IGRvZXMhIEFuZCBgQ09ORklHX09DRlMyX0ZTYCBhbHNvLCBidXQgSSdsbCBzdGljayB0byBgRVhUNF9GU2AgdG8ga2VlcCBpdCBzaW1wbGUuIEknbGwgbWFrZSBzdXJlIHRvIGVuYWJsZSBgRVhUNF9GU2AgaW4gbXkgYEVuYWJsZUNvbmZpZ3NgLlxuXG5JIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBmb2N1cyBzeW1ib2xzIGZvciB0aGUgZnV6emVyLiBJdCdzIG9idmlvdXNseSBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AuIEFsc28gYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGJlY2F1c2UgdGhhdCdzIHdoYXQgY2FsbHMgdGhlIGZ1bmN0aW9uLCBhbmQgYGpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXNgIHRvIGNvdmVyIHRoZSBzdXJyb3VuZGluZyBjb2RlLlxuXG5DaGVja2luZyByZWFjaGFiaWxpdHk6IEkndmUgY29uZmlybWVkIHRoYXQgYGpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25gIGNhbGxzIHRoZSB0YXJnZXQgZnVuY3Rpb24sIGFuZCB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgcGVyaW9kaWNhbGx5IG9yIG9uIGZzeW5jLiBHb29kLCBpdCdzIGEgY3JpdGljYWwgY29tbWl0IGZ1bmN0aW9uLiBJJ2xsIG1ha2Ugc3VyZSBgRVhUNF9GU2AgaXMgc3VmZmljaWVudCBhbmQgYWxzbyB0aGF0IG5vdGhpbmcgZWxzZSBpcyBuZWVkZWQuICBZZXMsIGBFWFQ0X0ZTYCBkb2VzIHRoZSB0cmljay5cblxuQWxyaWdodCwgbGV0J3MgcmV2aWV3IHRoZSBwYXRjaCBvbmUgbW9yZSB0aW1lLCBtYWtlIHN1cmUgSSBkaWRuJ3QgbWlzcyBhbnl0aGluZy4gWWVwLCBmdW5jdGlvbmFsIGNoYW5nZSBpbiBgZnMvamJkMi90cmFuc2FjdGlvbi5jYCwgZXhhY3RseSBhcyBleHBlY3RlZC4gTm93LCBpdCdzIGNsZWFyIHRoaXMgaXMgYSBoaWdoLXByaW9yaXR5IGZ1enppbmcgdGFyZ2V0LCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciBkYXRhIGNvcnJ1cHRpb24gb3IgaGFuZ3MgaWYgdGhpcyByYWNlIGNvbmRpdGlvbiBtYW5pZmVzdHMuIEknbGwgdXNlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgdG8gZGVmaW5lIHRoZSBmdXp6aW5nIHJlcXVpcmVtZW50cyBmb3IgdGhpcyBwb3RlbnRpYWwgYnVnLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTkyLCJPdXRwdXRUb2tlbnMiOjE2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNDo1NToxOS4xMDI5NzQ0ODhaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Njg5MTE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNcIixcbiAgICBcImpiZDJfam91cm5hbF9jb21taXRfdHJhbnNhY3Rpb25cIixcbiAgICBcImpiZDJfam91cm5hbF9sb2NrX3VwZGF0ZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2FpdCBsb29wIGNvbmRpdGlvbiBpbiBgamJkMl9qb3VybmFsX3dhaXRfdXBkYXRlc2AsIGEgY29yZSBzeW5jaHJvbml6YXRpb24gZnVuY3Rpb24gaW4gdGhlIEpCRDIgam91cm5hbGluZyBsYXllciB1c2VkIGJ5IGV4dDQuIEl0IGNoYW5nZXMgdGhlIG9yZGVyIG9mIGNoZWNraW5nIGB0X3VwZGF0ZXNgIGFuZCBgcHJlcGFyZV90b193YWl0YCwgd2hpY2ggYWZmZWN0cyBob3cgdHJhbnNhY3Rpb24gY29tbWl0cyB3YWl0IGZvciBvdXRzdGFuZGluZyB1cGRhdGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucyBvciBoYW5ncyBkdXJpbmcgZmlsZXN5c3RlbSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJqYmQyX2pvdXJuYWxfd2FpdF91cGRhdGVzXCIsXG4gICAgXCJqYmQyX2pvdXJuYWxfY29tbWl0X3RyYW5zYWN0aW9uXCIsXG4gICAgXCJqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdhaXQgbG9vcCBjb25kaXRpb24gaW4gYGpiZDJfam91cm5hbF93YWl0X3VwZGF0ZXNgLCBhIGNvcmUgc3luY2hyb25pemF0aW9uIGZ1bmN0aW9uIGluIHRoZSBKQkQyIGpvdXJuYWxpbmcgbGF5ZXIgdXNlZCBieSBleHQ0LiBJdCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBjaGVja2luZyBgdF91cGRhdGVzYCBhbmQgYHByZXBhcmVfdG9fd2FpdGAsIHdoaWNoIGFmZmVjdHMgaG93IHRyYW5zYWN0aW9uIGNvbW1pdHMgd2FpdCBmb3Igb3V0c3RhbmRpbmcgdXBkYXRlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgb3IgaGFuZ3MgZHVyaW5nIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowsqmhz[1] Phase: Succeeded StartedAt: 2026-08-03 14:55:44 +0000 UTC FinishedAt: 2026-08-03 14:55:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 14:55:44 +0000 UTC FinishedAt: 2026-08-03 14:55:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2] Phase: Succeeded StartedAt: 2026-08-03 14:55:44 +0000 UTC FinishedAt: 2026-08-03 18:44:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-03 14:55:44 +0000 UTC FinishedAt: 2026-08-03 18:44:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 14:55:44 +0000 UTC FinishedAt: 2026-08-03 14:55:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 14:55:44 +0000 UTC FinishedAt: 2026-08-03 14:55:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowsqmhz/series-workflowsqmhz-convert-artifact-3356229397/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 14:55:54 +0000 UTC FinishedAt: 2026-08-03 15:16:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 14:55:54 +0000 UTC FinishedAt: 2026-08-03 15:16:38 +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:*b26620e1-25bb-4040-9b41-c120d849052b,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-workflowsqmhz/series-workflowsqmhz-convert-artifact-3356229397/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": "9cbf020d-b960-4558-abbf-c3228f5ea11e", "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-workflowsqmhz/series-workflowsqmhz-build-action-13391739/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 14:55:54 +0000 UTC FinishedAt: 2026-08-03 15:16:28 +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:*b26620e1-25bb-4040-9b41-c120d849052b,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-workflowsqmhz/series-workflowsqmhz-convert-artifact-3356229397/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": "9cbf020d-b960-4558-abbf-c3228f5ea11e", "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-workflowsqmhz/series-workflowsqmhz-build-action-13391739/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 15:16:38 +0000 UTC FinishedAt: 2026-08-03 15:16:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 15:16:38 +0000 UTC FinishedAt: 2026-08-03 15:16:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 15:16:38 +0000 UTC FinishedAt: 2026-08-03 15:16:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 15:16:38 +0000 UTC FinishedAt: 2026-08-03 15:16:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowsqmhz/series-workflowsqmhz-convert-artifact-1566705136/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 15:16:48 +0000 UTC FinishedAt: 2026-08-03 15:18:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 15:16:48 +0000 UTC FinishedAt: 2026-08-03 15:18:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9cbf020d-b960-4558-abbf-c3228f5ea11e,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-workflowsqmhz/series-workflowsqmhz-build-action-13391739/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-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 15:18:54 +0000 UTC FinishedAt: 2026-08-03 15:18:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 15:18:54 +0000 UTC FinishedAt: 2026-08-03 15:18:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 15:18:54 +0000 UTC FinishedAt: 2026-08-03 15:35:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 15:18:54 +0000 UTC FinishedAt: 2026-08-03 15:35:02 +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:*b26620e1-25bb-4040-9b41-c120d849052b,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-workflowsqmhz/series-workflowsqmhz-convert-artifact-1566705136/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": "40ef0997-c65d-4120-b004-40da96288d29", "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-workflowsqmhz/series-workflowsqmhz-build-action-3991693036/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 15:18:54 +0000 UTC FinishedAt: 2026-08-03 15:34:52 +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:*b26620e1-25bb-4040-9b41-c120d849052b,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-workflowsqmhz/series-workflowsqmhz-convert-artifact-1566705136/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": "40ef0997-c65d-4120-b004-40da96288d29", "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-workflowsqmhz/series-workflowsqmhz-build-action-3991693036/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 15:35:02 +0000 UTC FinishedAt: 2026-08-03 15:35:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 15:35:02 +0000 UTC FinishedAt: 2026-08-03 15:35:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 15:35:02 +0000 UTC FinishedAt: 2026-08-03 15:37:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 15:35:02 +0000 UTC FinishedAt: 2026-08-03 15:37:09 +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:*40ef0997-c65d-4120-b004-40da96288d29,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-workflowsqmhz/series-workflowsqmhz-build-action-3991693036/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-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-03 15:37:18 +0000 UTC FinishedAt: 2026-08-03 18:44:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-03 15:37:18 +0000 UTC FinishedAt: 2026-08-03 18:44:10 +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":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"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:*9cbf020d-b960-4558-abbf-c3228f5ea11e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*40ef0997-c65d-4120-b004-40da96288d29,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-workflowsqmhz/series-workflowsqmhz-build-action-13391739/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-workflowsqmhz/series-workflowsqmhz-build-action-3991693036/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 15:37:18 +0000 UTC FinishedAt: 2026-08-03 15:37:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 15:37:18 +0000 UTC FinishedAt: 2026-08-03 15:37:23 +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":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"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-workflowsqmhz/series-workflowsqmhz-convert-artifact-2916052073/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 15:37:18 +0000 UTC FinishedAt: 2026-08-03 15:37:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 15:37:18 +0000 UTC FinishedAt: 2026-08-03 15:37:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 15:37:18 +0000 UTC FinishedAt: 2026-08-03 15:37:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-03 15:37:28 +0000 UTC FinishedAt: 2026-08-03 18:44:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqmhz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["jbd2_journal_wait_updates","jbd2_journal_commit_transaction","jbd2_journal_lock_updates"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"c6da675d-3666-4711-8f07-38faae1a6ec6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-03 15:37:28 +0000 UTC FinishedAt: 2026-08-03 18:44:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9cbf020d-b960-4558-abbf-c3228f5ea11e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*40ef0997-c65d-4120-b004-40da96288d29,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-workflowsqmhz/series-workflowsqmhz-build-action-13391739/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-workflowsqmhz/series-workflowsqmhz-build-action-3991693036/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-workflowsqmhz/series-workflowsqmhz-convert-artifact-2916052073/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,}