Name: series-workflowtslsm Phase: Succeeded StartedAt: 2026-09-10 20:24:28 +0000 UTC FinishedAt: 2026-09-11 00:27:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[0] Phase: Succeeded StartedAt: 2026-09-10 20:24:28 +0000 UTC FinishedAt: 2026-09-10 20:47:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 20:24:28 +0000 UTC FinishedAt: 2026-09-10 20:47:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "0abe8777490ebc008635ecb20297761d1b317697", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEVLINK", "NETDEVSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "0abe8777490ebc008635ecb20297761d1b317697", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEVLINK", "NETDEVSIM" ], "series_id": "1209b9ee-c1ef-4aa8-8eff-6668a9263919" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "devlink_port_function_set", "devlink_nl_port_set_doit", "devlink_nl_reload_doit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZMSU5LJiMzNDssCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQmIzM0OywKICAgICYjMzQ7ZGV2bGlua19ubF9wb3J0X3NldF9kb2l0JiMzNDssCiAgICAmIzM0O2RldmxpbmtfbmxfcmVsb2FkX2RvaXQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgdXBkYXRlcyB0aGUgZGV2bGluayBOZXRsaW5rIFlBTUwgc3BlY2lmaWNhdGlvbiAoRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbCkgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGF1dG8tZ2VuZXJhdGVkIE5ldGxpbmsgcG9saWNpZXMgKG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmMsIG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmgpLCBhbmQgcmVmYWN0b3JzIG5ldC9kZXZsaW5rL3BvcnQuYyB0byB1c2UgdGhlIGdlbmVyYXRlZCBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGluc3RlYWQgb2YgYSBkdXBsaWNhdGVkIHN0YXRpYyBwb2xpY3kuXG5cblRoZXNlIGNoYW5nZXMgc3RyaWN0bHkgcGVydGFpbiB0byBOZXRsaW5rIG1lc3NhZ2UgcG9saWN5IHZhbGlkYXRpb24sIHNjaGVtYSBkZXNjcmlwdGlvbnMsIGFuZCBhdHRyaWJ1dGUgcGFyc2luZy4gVGhlIGFycmF5IGB0YmAgcGFzc2VkIHRvIGBubGFfcGFyc2VfbmVzdGVkKClgIGlzIGFwcHJvcHJpYXRlbHkgc2l6ZWQgYW5kIGluaXRpYWxpemVkL3plcm9lZCBieSBgbmxhX3BhcnNlKClgLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHJlYWRzLCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UgYXJlIGludHJvZHVjZWQuIFN0YW5kYXJkIHNhbml0aXplcnMgKEtBU0FOKSBhbmQgTmV0bGluayBwYXJzZXIgY2hlY2tzIGFyZSBzdWZmaWNpZW50OyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBkZXZsaW5rIG5ldGxpbmsgYXR0cmlidXRlIHBvbGljaWVzIGFuZCB0aGUgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCBwYXJzaW5nIGxvZ2ljIGZvciBnZW5lcmljIG5ldGxpbmsgY29tbWFuZHMgKHBvcnQtc2V0IGFuZCByZWxvYWQpLiBUaGUgY2hhbmdlcyBhcmUgaW4gY29yZSBuZXR3b3JraW5nIG5ldGxpbmsgY29kZSwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBnZW5lcmljIG5ldGxpbmsgZGV2bGluayBmYW1pbHkgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDk0MWM0NzQyZjcxZGZiMzlkMWU1ZDYxYmYwNmQyYjA0ZmRjNjE2OGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAyMDo0NjoxMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbFxuaW5kZXggMzhiMTE5MGYzZDI2OS4uYWNiMjI4NTZhNmE4NSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWxcbkBAIC0xNzQsNiAmIzQzOzE3NCwxOCBAQCBkZWZpbml0aW9uczpcbiAgICAgICAgIHZhbHVlOiAxXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZnctYWN0aXZhdGVcbiYjNDM7ICAtXG4mIzQzOyAgICB0eXBlOiBlbnVtXG4mIzQzOyAgICBuYW1lOiByZWxvYWQtbGltaXRcbiYjNDM7ICAgIGVudHJpZXM6XG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiB1bnNwZWNcbiYjNDM7ICAgICAgICBkb2M6IG5vIGNvbnN0cmFpbnRzXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBuby1yZXNldFxuJiM0MzsgICAgICAgIGRvYzogXHUwMDNlLVxuJiM0MzsgICAgICAgICAgTm8gcmVzZXQgYWxsb3dlZCwgbm8gZG93biB0aW1lIGFsbG93ZWQsIG5vIGxpbmsgZmxhcCBhbmQgbm9cbiYjNDM7ICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaXMgbG9zdC5cbiAgIC1cbiAgICAgdHlwZTogZW51bVxuICAgICBuYW1lOiBwYXJhbS1jbW9kZVxuQEAgLTc3NSw3ICYjNDM7Nzg3LDcgQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVsb2FkLWxpbWl0c1xuICAgICAgICAgdHlwZTogYml0ZmllbGQzMlxuLSAgICAgICAgZW51bTogcmVsb2FkLWFjdGlvblxuJiM0MzsgICAgICAgIGVudW06IHJlbG9hZC1saW1pdFxuICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZVxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGRldi1zdGF0c1xuQEAgLTc5Myw2ICYjNDM7ODA1LDcgQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVsb2FkLXN0YXRzLWxpbWl0XG4gICAgICAgICB0eXBlOiB1OFxuJiM0MzsgICAgICAgIGVudW06IHJlbG9hZC1saW1pdFxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHJlbG9hZC1zdGF0cy12YWx1ZVxuICAgICAgICAgdHlwZTogdTMyXG5AQCAtODQ1LDEzICYjNDM7ODU4LDE0IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogbGluZWNhcmQtc3VwcG9ydGVkLXR5cGVzXG4gICAgICAgICB0eXBlOiBuZXN0XG4gICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtbGluZWNhcmQtc3VwcG9ydGVkLXR5cGVzXG4tXG4tICAgICAgIyBUT0RPOiBmaWxsIGluIHRoZSBhdHRyaWJ1dGVzIGluIGJldHdlZW5cbi1cbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IG5lc3RlZC1kZXZsaW5rXG4mIzQzOyAgICAgICAgdHlwZTogbmVzdFxuJiM0MzsgICAgICAgIG11bHRpLWF0dHI6IHRydWVcbiYjNDM7ICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtbmVzdGVkLWRldmxpbmtcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBzZWxmdGVzdHNcbiAgICAgICAgIHR5cGU6IG5lc3Rcbi0gICAgICAgIHZhbHVlOiAxNzZcbiAgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1zZWxmdGVzdC1pZFxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHJhdGUtdHgtcHJpb3JpdHlcbkBAIC04OTgsNyAmIzQzOzkxMiw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHBhcmVudC1kZXZcbiAgICAgICAgIHR5cGU6IG5lc3Rcbi0gICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1wYXJlbnQtZGV2XG4mIzQzOyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLW5lc3RlZC1kZXZsaW5rXG4gICAgICAgICBkb2M6IHxcbiAgICAgICAgICAgSWRlbnRpZmllcyB0aGUgZGV2bGluayBpbnN0YW5jZSB3aGljaCBvd25zIHRoZSBwYXJlbnQgcmF0ZSBub2RlLlxuICAgICAgICAgICBVc2VkIHdpdGggcmF0ZS1zZXQgYW5kIHJhdGUtbmV3IHRvIHBhcmVudCBhIHJhdGUgb2JqZWN0IHRvIGEgbm9kZSBvblxuQEAgLTk3OCw2ICYjNDM7OTkyLDQ5IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgdHlwZTogYml0ZmllbGQzMlxuICAgICAgICAgZW51bTogcG9ydC1mbi1hdHRyLWNhcFxuICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZVxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogZGV2bGlua1xuJiM0MzsgICAgICAgIHR5cGU6IG5lc3RcbiYjNDM7ICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtbmVzdGVkLWRldmxpbmtcbiYjNDM7ICAgICAgICBkb2M6IEhhbmRsZSBvZiB0aGUgcGVlciBkZXZsaW5rIGluc3RhbmNlIGluc3RhbnRpYXRlZCBmb3IgdGhpcyBmdW5jdGlvbi5cbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IG1heC1pby1lcXNcbiYjNDM7ICAgICAgICB0eXBlOiB1MzJcbiYjNDM7XG4mIzQzOyAgLVxuJiM0MzsgICAgbmFtZTogZGwtcG9ydC1mdW5jdGlvbi1zZXRcbiYjNDM7ICAgIHN1YnNldC1vZjogZGwtcG9ydC1mdW5jdGlvblxuJiM0MzsgICAgZG9jOiB8XG4mIzQzOyAgICAgIFBvcnQgZnVuY3Rpb24gYXR0cmlidXRlcyB0aGF0IGNhbiBiZSBjb25maWd1cmVkOyBvcHN0YXRlIGFuZCB0aGVcbiYjNDM7ICAgICAgZGV2bGluayBoYW5kbGUgYXJlIHJlYWQtb25seS5cbiYjNDM7ICAgIGF0dHJpYnV0ZXM6XG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBody1hZGRyXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBzdGF0ZVxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogY2Fwc1xuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogbWF4LWlvLWVxc1xuJiM0MztcbiYjNDM7ICAtXG4mIzQzOyAgICBuYW1lOiBkbC1wb3J0LXNldFxuJiM0MzsgICAgc3Vic2V0LW9mOiBkZXZsaW5rXG4mIzQzOyAgICBkb2M6IEF0dHJpYnV0ZXMgYWNjZXB0ZWQgYnkgdGhlIHBvcnQtc2V0IHJlcXVlc3QuXG4mIzQzOyAgICBhdHRyaWJ1dGVzOlxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogYnVzLW5hbWVcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IGRldi1uYW1lXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBpbmRleFxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogcG9ydC1pbmRleFxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogcG9ydC10eXBlXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBwb3J0LWZ1bmN0aW9uXG4mIzQzOyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBvcnQtZnVuY3Rpb24tc2V0XG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLWRwaXBlLXRhYmxlc1xuQEAgLTEwMDgsNiAmIzQzOzEwNjUsOCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IGRwaXBlLXRhYmxlLXJlc291cmNlLWlkXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZHBpcGUtdGFibGUtcmVzb3VyY2UtdW5pdHNcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1kcGlwZS10YWJsZS1tYXRjaGVzXG5AQCAtMTA0Miw2ICYjNDM7MTEwMSw4IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogZHBpcGUtZW50cnktYWN0aW9uLXZhbHVlc1xuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGRwaXBlLWVudHJ5LWNvdW50ZXJcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1kcGlwZS1lbnRyeS1tYXRjaC12YWx1ZXNcbkBAIC0xMTgwLDYgJiM0MzsxMjQxLDggQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICBuYW1lOiByZXNvdXJjZS11bml0XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVzb3VyY2Utb2NjXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBwYWRcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtcmVzb3VyY2UtbGlzdFxuQEAgLTEyMDcsNiAmIzQzOzEyNzAsNyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgYXR0cmlidXRlczpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWdpb24tc25hcHNob3RcbiYjNDM7ICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLXJlZ2lvbi1zbmFwc2hvdFxuQEAgLTEyMjEsNiAmIzQzOzEyODUsNyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgYXR0cmlidXRlczpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWdpb24tY2h1bmtcbiYjNDM7ICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLXJlZ2lvbi1jaHVua1xuQEAgLTEyMzAsNiAmIzQzOzEyOTUsOCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IHJlZ2lvbi1jaHVuay1kYXRhXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rLWFkZHJcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1mbXNnXG5AQCAtMTI3MCw2ICYjNDM7MTMzNyw4IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogaGVhbHRoLXJlcG9ydGVyLWF1dG8tZHVtcFxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGhlYWx0aC1yZXBvcnRlci1idXJzdC1wZXJpb2RcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1hdHRyLXN0YXRzXG5AQCAtMTI4NCw2ICYjNDM7MTM1MywxMCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBzdGF0cy1yeC1kcm9wcGVkXG4gICAgICAgICB0eXBlOiB1NjRcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHBhZFxuJiM0MzsgICAgICAgIHR5cGU6IHBhZFxuJiM0MzsgICAgICAgIHZhbHVlOiA2MVxuIFxuICAgLVxuICAgICBuYW1lOiBkbC10cmFwLW1ldGFkYXRhXG5AQCAtMTMwMyw2ICYjNDM7MTM3Niw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICBhdHRyaWJ1dGVzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGxpbmVjYXJkLXR5cGVcbiYjNDM7ICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLXNlbGZ0ZXN0LWlkXG5AQCAtMTMzMCw2ICYjNDM7MTQwNCw1MCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgIC1cbiAgICAgbmFtZTogZGwtcGFyZW50LWRldlxuICAgICBzdWJzZXQtb2Y6IGRldmxpbmtcbiYjNDM7ICAgIGRvYzogfFxuJiM0MzsgICAgICBEZXZsaW5rIGhhbmRsZSBhY2NlcHRlZCBhcyB0aGUgcGFyZW50LWRldiBpbnB1dDsgdGhlIG5ldG5zIGlkIHRoZVxuJiM0MzsgICAgICBrZXJuZWwgcmVwb3J0cyBiYWNrIGlzIG5vdCBhY2NlcHRlZCwgdGhlIHBhcmVudCBpcyBhbHdheXMgcmVzb2x2ZWRcbiYjNDM7ICAgICAgaW4gdGhlIGNhbGxlciYjMzk7cyBuZXRucy5cbiYjNDM7ICAgIGF0dHJpYnV0ZXM6XG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBidXMtbmFtZVxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogZGV2LW5hbWVcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IGluZGV4XG4mIzQzO1xuJiM0MzsgIC1cbiYjNDM7ICAgIG5hbWU6IGRsLXJhdGUtc2V0XG4mIzQzOyAgICBzdWJzZXQtb2Y6IGRldmxpbmtcbiYjNDM7ICAgIGRvYzogQXR0cmlidXRlcyBhY2NlcHRlZCBieSB0aGUgcmF0ZS1zZXQgYW5kIHJhdGUtbmV3IHJlcXVlc3RzLlxuJiM0MzsgICAgYXR0cmlidXRlczpcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IGJ1cy1uYW1lXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBkZXYtbmFtZVxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogaW5kZXhcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtbm9kZS1uYW1lXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiByYXRlLXR4LXNoYXJlXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiByYXRlLXR4LW1heFxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogcmF0ZS10eC1wcmlvcml0eVxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogcmF0ZS10eC13ZWlnaHRcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtcGFyZW50LW5vZGUtbmFtZVxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogcmF0ZS10Yy1id3NcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHBhcmVudC1kZXZcbiYjNDM7ICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtcGFyZW50LWRldlxuJiM0MztcbiYjNDM7ICAtXG4mIzQzOyAgICBuYW1lOiBkbC1uZXN0ZWQtZGV2bGlua1xuJiM0MzsgICAgc3Vic2V0LW9mOiBkZXZsaW5rXG4gICAgIGF0dHJpYnV0ZXM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogYnVzLW5hbWVcbkBAIC0xMzM3LDYgJiM0MzsxNDU1LDggQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICBuYW1lOiBkZXYtbmFtZVxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGluZGV4XG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBuZXRucy1pZFxuIFxuIG9wZXJhdGlvbnM6XG4gICBlbnVtLW1vZGVsOiBkaXJlY3Rpb25hbFxuQEAgLTEzNjMsNiAmIzQzOzE0ODMsNyBAQCBvcGVyYXRpb25zOlxuICAgICAgICAgICAgIC0gaW5kZXhcbiAgICAgICAgICAgICAtIHJlbG9hZC1mYWlsZWRcbiAgICAgICAgICAgICAtIGRldi1zdGF0c1xuJiM0MzsgICAgICAgICAgICAtIG5lc3RlZC1kZXZsaW5rXG4gICAgICAgZHVtcDpcbiAgICAgICAgIHJlcGx5OiAqZ2V0LXJlcGx5XG4gXG5AQCAtMTM4OCwxMyAmIzQzOzE1MDksMTIgQEAgb3BlcmF0aW9uczpcbiAgICAgICAgIHJlcXVlc3Q6XG4gICAgICAgICAgIGF0dHJpYnV0ZXM6ICpkZXYtaWQtYXR0cnNcbiAgICAgICAgIHJlcGx5OlxuLSAgICAgICAgICB2YWx1ZTogMyAgIyBkdWUgdG8gYSBidWcsIHBvcnQgZHVtcCByZXR1cm5zIERFVkxJTktfQ01EX05FV1xuICAgICAgICAgICBhdHRyaWJ1dGVzOiAqcG9ydC1pZC1hdHRyc1xuIFxuICAgICAtXG4gICAgICAgbmFtZTogcG9ydC1zZXRcbiAgICAgICBkb2M6IFNldCBkZXZsaW5rIHBvcnQgaW5zdGFuY2VzLlxuLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmtcbiYjNDM7ICAgICAgYXR0cmlidXRlLXNldDogZGwtcG9ydC1zZXRcbiAgICAgICBkb250LXZhbGlkYXRlOiBbc3RyaWN0XVxuICAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV1cbiAgICAgICBkbzpcbkBAIC0xOTc1LDYgJiM0MzsyMDk1LDcgQEAgb3BlcmF0aW9uczpcbiAgICAgICAgICAgICAtIGluZGV4XG4gICAgICAgICAgICAgLSBwb3J0LWluZGV4XG4gICAgICAgICAgICAgLSByZWdpb24tbmFtZVxuJiM0MzsgICAgICAgICAgICAtIHJlZ2lvbi1jaHVua3NcbiBcbiAgICAgLVxuICAgICAgIG5hbWU6IHBvcnQtcGFyYW0tZ2V0XG5AQCAtMjMwNSw3ICYjNDM7MjQyNiw3IEBAIG9wZXJhdGlvbnM6XG4gICAgIC1cbiAgICAgICBuYW1lOiByYXRlLXNldFxuICAgICAgIGRvYzogU2V0IHJhdGUgaW5zdGFuY2VzLlxuLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmtcbiYjNDM7ICAgICAgYXR0cmlidXRlLXNldDogZGwtcmF0ZS1zZXRcbiAgICAgICBkb250LXZhbGlkYXRlOiBbc3RyaWN0XVxuICAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV1cbiAgICAgICBkbzpcbkBAIC0yMzI4LDcgJiM0MzsyNDQ5LDcgQEAgb3BlcmF0aW9uczpcbiAgICAgLVxuICAgICAgIG5hbWU6IHJhdGUtbmV3XG4gICAgICAgZG9jOiBDcmVhdGUgcmF0ZSBpbnN0YW5jZXMuXG4tICAgICAgYXR0cmlidXRlLXNldDogZGV2bGlua1xuJiM0MzsgICAgICBhdHRyaWJ1dGUtc2V0OiBkbC1yYXRlLXNldFxuICAgICAgIGRvbnQtdmFsaWRhdGU6IFtzdHJpY3RdXG4gICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXVxuICAgICAgIGRvOlxuQEAgLTIzNzQsMTQgJiM0MzsyNDk1LDIyIEBAIG9wZXJhdGlvbnM6XG4gICAgICAgICBwb3N0OiBkZXZsaW5rLW5sLXBvc3QtZG9pdFxuICAgICAgICAgcmVxdWVzdDpcbiAgICAgICAgICAgdmFsdWU6IDc4XG4tICAgICAgICAgIGF0dHJpYnV0ZXM6IFx1MDAyNmxpbmVjYXJkLWlkLWF0dHJzXG4mIzQzOyAgICAgICAgICBhdHRyaWJ1dGVzOlxuICAgICAgICAgICAgIC0gYnVzLW5hbWVcbiAgICAgICAgICAgICAtIGRldi1uYW1lXG4gICAgICAgICAgICAgLSBpbmRleFxuICAgICAgICAgICAgIC0gbGluZWNhcmQtaW5kZXhcbiAgICAgICAgIHJlcGx5OiBcdTAwMjZsaW5lY2FyZC1nZXQtcmVwbHlcbiAgICAgICAgICAgdmFsdWU6IDgwXG4tICAgICAgICAgIGF0dHJpYnV0ZXM6ICpsaW5lY2FyZC1pZC1hdHRyc1xuJiM0MzsgICAgICAgICAgYXR0cmlidXRlczpcbiYjNDM7ICAgICAgICAgICAgLSBidXMtbmFtZVxuJiM0MzsgICAgICAgICAgICAtIGRldi1uYW1lXG4mIzQzOyAgICAgICAgICAgIC0gaW5kZXhcbiYjNDM7ICAgICAgICAgICAgLSBsaW5lY2FyZC1pbmRleFxuJiM0MzsgICAgICAgICAgICAtIGxpbmVjYXJkLXN0YXRlXG4mIzQzOyAgICAgICAgICAgIC0gbGluZWNhcmQtdHlwZVxuJiM0MzsgICAgICAgICAgICAtIGxpbmVjYXJkLXN1cHBvcnRlZC10eXBlc1xuJiM0MzsgICAgICAgICAgICAtIG5lc3RlZC1kZXZsaW5rXG4gICAgICAgZHVtcDpcbiAgICAgICAgIHJlcXVlc3Q6XG4gICAgICAgICAgIGF0dHJpYnV0ZXM6ICpkZXYtaWQtYXR0cnNcbmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jIGIvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uY1xuaW5kZXggZGVjMDAxMzMxNzhkMS4uNDNlZjY4NjRkNDYyZiAxMDA2NDRcbi0tLSBhL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNcbkBAIC01MiwxMSAmIzQzOzUyLDExIEBAIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcGFyZW50X2Rldl9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICYjNDM7IDFdXG4gXHRbREVWTElOS19BVFRSX0lOREVYXSA9IE5MQV9QT0xJQ1lfRlVMTF9SQU5HRShOTEFfVUlOVCwgXHUwMDI2ZGV2bGlua19hdHRyX2luZGV4X3JhbmdlKSxcbiB9O1xuIFxuLWNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQUyAmIzQzOyAxXSA9IHtcbiYjNDM7Y29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRUyAmIzQzOyAxXSA9IHtcbiBcdFtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZLCB9LFxuIFx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX1NUQVRFXSA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VOCwgMSksXG4tXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfT1BTVEFURV0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTgsIDEpLFxuIFx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDE1KSxcbiYjNDM7XHRbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU10gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcbiB9O1xuIFxuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcmF0ZV90Y19id3NfbmxfcG9saWN5W0RFVkxJTktfUkFURV9UQ19BVFRSX0JXICYjNDM7IDFdID0ge1xuQEAgLTk3LDcgJiM0Mzs5Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX3BvcnRfc2V0X25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggJiM0MzsgMVxuIFx0W0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsIFx1MDAyNmRldmxpbmtfYXR0cl9pbmRleF9yYW5nZSksXG4gXHRbREVWTElOS19BVFRSX1BPUlRfSU5ERVhdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXG4gXHRbREVWTElOS19BVFRSX1BPUlRfVFlQRV0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTE2LCAzKSxcbi1cdFtERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl0gPSBOTEFfUE9MSUNZX05FU1RFRChkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5KSxcbiYjNDM7XHRbREVWTElOS19BVFRSX1BPUlRfRlVOQ1RJT05dID0gTkxBX1BPTElDWV9ORVNURUQoZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3kpLFxuIH07XG4gXG4gLyogREVWTElOS19DTURfUE9SVF9ORVcgLSBkbyAqL1xuQEAgLTMzNCw3ICYjNDM7MzM0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfcmVsb2FkX25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggJiM0MzsgMV1cbiBcdFtERVZMSU5LX0FUVFJfREVWX05BTUVdID0geyAudHlwZSA9IE5MQV9OVUxfU1RSSU5HLCB9LFxuIFx0W0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsIFx1MDAyNmRldmxpbmtfYXR0cl9pbmRleF9yYW5nZSksXG4gXHRbREVWTElOS19BVFRSX1JFTE9BRF9BQ1RJT05dID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIDEsIDIpLFxuLVx0W0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMig2KSxcbiYjNDM7XHRbREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDMpLFxuIFx0W0RFVkxJTktfQVRUUl9ORVROU19QSURdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXG4gXHRbREVWTElOS19BVFRSX05FVE5TX0ZEXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LFxuIFx0W0RFVkxJTktfQVRUUl9ORVROU19JRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcbmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oIGIvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaFxuaW5kZXggYTcwZTBlNDc2OWFhNS4uOTljY2FjYzY5M2I3NiAxMDA2NDRcbi0tLSBhL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmhcbkBAIC0xNCw3ICYjNDM7MTQsNyBAQFxuIFxuIC8qIENvbW1vbiBuZXN0ZWQgdHlwZXMgKi9cbiBleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9wYXJlbnRfZGV2X25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggJiM0MzsgMV07XG4tZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQUyAmIzQzOyAxXTtcbiYjNDM7ZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVMgJiM0MzsgMV07XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcmF0ZV90Y19id3NfbmxfcG9saWN5W0RFVkxJTktfUkFURV9UQ19BVFRSX0JXICYjNDM7IDFdO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3NlbGZ0ZXN0X2lkX25sX3BvbGljeVtERVZMSU5LX0FUVFJfU0VMRlRFU1RfSURfRkxBU0ggJiM0MzsgMV07XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RldmxpbmsvcG9ydC5jIGIvbmV0L2RldmxpbmsvcG9ydC5jXG5pbmRleCAxNTI4ZjJkMTQ4ZGZjLi44MDM0MjlkOWEwMDg5IDEwMDY0NFxuLS0tIGEvbmV0L2RldmxpbmsvcG9ydC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZGV2bGluay9wb3J0LmNcbkBAIC02LDE5ICYjNDM7Niw2IEBAXG4gXG4gI2luY2x1ZGUgXCYjMzQ7ZGV2bF9pbnRlcm5hbC5oXCYjMzQ7XG4gXG4tI2RlZmluZSBERVZMSU5LX1BPUlRfRk5fQ0FQU19WQUxJRF9NQVNLIFxcXG4tXHQoX0JJVFVMKF9fREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQU19NQVgpIC0gMSlcbi1cbi1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLVx0W0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJdID0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSxcbi1cdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURV0gPVxuLVx0XHROTEFfUE9MSUNZX1JBTkdFKE5MQV9VOCwgREVWTElOS19QT1JUX0ZOX1NUQVRFX0lOQUNUSVZFLFxuLVx0XHRcdFx0IERFVkxJTktfUE9SVF9GTl9TVEFURV9BQ1RJVkUpLFxuLVx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID1cbi1cdFx0TkxBX1BPTElDWV9CSVRGSUVMRDMyKERFVkxJTktfUE9SVF9GTl9DQVBTX1ZBTElEX01BU0spLFxuLVx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbi19O1xuLVxuICNkZWZpbmUgQVNTRVJUX0RFVkxJTktfUE9SVF9SRUdJU1RFUkVEKGRldmxpbmtfcG9ydClcdFx0XHRcdFxcXG4gXHRXQVJOX09OX09OQ0UoIShkZXZsaW5rX3BvcnQpLVx1MDAzZXJlZ2lzdGVyZWQpXG4gI2RlZmluZSBBU1NFUlRfREVWTElOS19QT1JUX05PVF9SRUdJU1RFUkVEKGRldmxpbmtfcG9ydClcdFx0XHRcXFxuQEAgLTc4MiwxMSAmIzQzOzc2OSwxMSBAQCBzdGF0aWMgaW50IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqcG9ydCxcbiBcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcbiBcdFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdHN0cnVjdCBubGF0dHIgKnRiW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCAmIzQzOyAxXTtcbiYjNDM7XHRzdHJ1Y3QgbmxhdHRyICp0YltBUlJBWV9TSVpFKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5KV07XG4gXHRpbnQgZXJyO1xuIFxuLVx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgREVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfTUFYLCBhdHRyLFxuLVx0XHRcdCAgICAgICBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeSwgZXh0YWNrKTtcbiYjNDM7XHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBBUlJBWV9TSVpFKHRiKSAtIDEsIGF0dHIsXG4mIzQzO1x0XHRcdCAgICAgICBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSwgZXh0YWNrKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtGYWlsIHRvIHBhcnNlIHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlc1wmIzM0Oyk7XG4gXHRcdHJldHVybiBlcnI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0RFVkxJTksmIzM0OywKICAgICYjMzQ7TkVUREVWU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCYjMzQ7LAogICAgJiMzNDtkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXQmIzM0OywKICAgICYjMzQ7ZGV2bGlua19ubF9yZWxvYWRfZG9pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGRldmxpbmsgbmV0bGluayBhdHRyaWJ1dGUgcG9saWNpZXMgYW5kIHRoZSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0IHBhcnNpbmcgbG9naWMgZm9yIGdlbmVyaWMgbmV0bGluayBjb21tYW5kcyAocG9ydC1zZXQgYW5kIHJlbG9hZCkuIFRoZSBjaGFuZ2VzIGFyZSBpbiBjb3JlIG5ldHdvcmtpbmcgbmV0bGluayBjb2RlLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGdlbmVyaWMgbmV0bGluayBkZXZsaW5rIGZhbWlseSBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTQxYzQ3NDJmNzFkZmIzOWQxZTVkNjFiZjA2ZDJiMDRmZGM2MTY4ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDIwOjQ2OjEyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWwKaW5kZXggMzhiMTE5MGYzZDI2OS4uYWNiMjI4NTZhNmE4NSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sCkBAIC0xNzQsNiAmIzQzOzE3NCwxOCBAQCBkZWZpbml0aW9uczoKICAgICAgICAgdmFsdWU6IDEKICAgICAgIC0KICAgICAgICAgbmFtZTogZnctYWN0aXZhdGUKJiM0MzsgIC0KJiM0MzsgICAgdHlwZTogZW51bQomIzQzOyAgICBuYW1lOiByZWxvYWQtbGltaXQKJiM0MzsgICAgZW50cmllczoKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiB1bnNwZWMKJiM0MzsgICAgICAgIGRvYzogbm8gY29uc3RyYWludHMKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBuby1yZXNldAomIzQzOyAgICAgICAgZG9jOiAmZ3Q7LQomIzQzOyAgICAgICAgICBObyByZXNldCBhbGxvd2VkLCBubyBkb3duIHRpbWUgYWxsb3dlZCwgbm8gbGluayBmbGFwIGFuZCBubwomIzQzOyAgICAgICAgICBjb25maWd1cmF0aW9uIGlzIGxvc3QuCiAgIC0KICAgICB0eXBlOiBlbnVtCiAgICAgbmFtZTogcGFyYW0tY21vZGUKQEAgLTc3NSw3ICYjNDM7Nzg3LDcgQEAgYXR0cmlidXRlLXNldHM6CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlbG9hZC1saW1pdHMKICAgICAgICAgdHlwZTogYml0ZmllbGQzMgotICAgICAgICBlbnVtOiByZWxvYWQtYWN0aW9uCiYjNDM7ICAgICAgICBlbnVtOiByZWxvYWQtbGltaXQKICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZQogICAgICAgLQogICAgICAgICBuYW1lOiBkZXYtc3RhdHMKQEAgLTc5Myw2ICYjNDM7ODA1LDcgQEAgYXR0cmlidXRlLXNldHM6CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlbG9hZC1zdGF0cy1saW1pdAogICAgICAgICB0eXBlOiB1OAomIzQzOyAgICAgICAgZW51bTogcmVsb2FkLWxpbWl0CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlbG9hZC1zdGF0cy12YWx1ZQogICAgICAgICB0eXBlOiB1MzIKQEAgLTg0NSwxMyAmIzQzOzg1OCwxNCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogbGluZWNhcmQtc3VwcG9ydGVkLXR5cGVzCiAgICAgICAgIHR5cGU6IG5lc3QKICAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLWxpbmVjYXJkLXN1cHBvcnRlZC10eXBlcwotCi0gICAgICAjIFRPRE86IGZpbGwgaW4gdGhlIGF0dHJpYnV0ZXMgaW4gYmV0d2VlbgotCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogbmVzdGVkLWRldmxpbmsKJiM0MzsgICAgICAgIHR5cGU6IG5lc3QKJiM0MzsgICAgICAgIG11bHRpLWF0dHI6IHRydWUKJiM0MzsgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1uZXN0ZWQtZGV2bGluawogICAgICAgLQogICAgICAgICBuYW1lOiBzZWxmdGVzdHMKICAgICAgICAgdHlwZTogbmVzdAotICAgICAgICB2YWx1ZTogMTc2CiAgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1zZWxmdGVzdC1pZAogICAgICAgLQogICAgICAgICBuYW1lOiByYXRlLXR4LXByaW9yaXR5CkBAIC04OTgsNyAmIzQzOzkxMiw3IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgLQogICAgICAgICBuYW1lOiBwYXJlbnQtZGV2CiAgICAgICAgIHR5cGU6IG5lc3QKLSAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBhcmVudC1kZXYKJiM0MzsgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1uZXN0ZWQtZGV2bGluawogICAgICAgICBkb2M6IHwKICAgICAgICAgICBJZGVudGlmaWVzIHRoZSBkZXZsaW5rIGluc3RhbmNlIHdoaWNoIG93bnMgdGhlIHBhcmVudCByYXRlIG5vZGUuCiAgICAgICAgICAgVXNlZCB3aXRoIHJhdGUtc2V0IGFuZCByYXRlLW5ldyB0byBwYXJlbnQgYSByYXRlIG9iamVjdCB0byBhIG5vZGUgb24KQEAgLTk3OCw2ICYjNDM7OTkyLDQ5IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgICB0eXBlOiBiaXRmaWVsZDMyCiAgICAgICAgIGVudW06IHBvcnQtZm4tYXR0ci1jYXAKICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGRldmxpbmsKJiM0MzsgICAgICAgIHR5cGU6IG5lc3QKJiM0MzsgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1uZXN0ZWQtZGV2bGluawomIzQzOyAgICAgICAgZG9jOiBIYW5kbGUgb2YgdGhlIHBlZXIgZGV2bGluayBpbnN0YW5jZSBpbnN0YW50aWF0ZWQgZm9yIHRoaXMgZnVuY3Rpb24uCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogbWF4LWlvLWVxcwomIzQzOyAgICAgICAgdHlwZTogdTMyCiYjNDM7CiYjNDM7ICAtCiYjNDM7ICAgIG5hbWU6IGRsLXBvcnQtZnVuY3Rpb24tc2V0CiYjNDM7ICAgIHN1YnNldC1vZjogZGwtcG9ydC1mdW5jdGlvbgomIzQzOyAgICBkb2M6IHwKJiM0MzsgICAgICBQb3J0IGZ1bmN0aW9uIGF0dHJpYnV0ZXMgdGhhdCBjYW4gYmUgY29uZmlndXJlZDsgb3BzdGF0ZSBhbmQgdGhlCiYjNDM7ICAgICAgZGV2bGluayBoYW5kbGUgYXJlIHJlYWQtb25seS4KJiM0MzsgICAgYXR0cmlidXRlczoKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBody1hZGRyCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogc3RhdGUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBjYXBzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogbWF4LWlvLWVxcwomIzQzOwomIzQzOyAgLQomIzQzOyAgICBuYW1lOiBkbC1wb3J0LXNldAomIzQzOyAgICBzdWJzZXQtb2Y6IGRldmxpbmsKJiM0MzsgICAgZG9jOiBBdHRyaWJ1dGVzIGFjY2VwdGVkIGJ5IHRoZSBwb3J0LXNldCByZXF1ZXN0LgomIzQzOyAgICBhdHRyaWJ1dGVzOgomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGJ1cy1uYW1lCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogZGV2LW5hbWUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBpbmRleAomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHBvcnQtaW5kZXgKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwb3J0LXR5cGUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwb3J0LWZ1bmN0aW9uCiYjNDM7ICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtcG9ydC1mdW5jdGlvbi1zZXQKIAogICAtCiAgICAgbmFtZTogZGwtZHBpcGUtdGFibGVzCkBAIC0xMDA4LDYgJiM0MzsxMDY1LDggQEAgYXR0cmlidXRlLXNldHM6CiAgICAgICAgIG5hbWU6IGRwaXBlLXRhYmxlLXJlc291cmNlLWlkCiAgICAgICAtCiAgICAgICAgIG5hbWU6IGRwaXBlLXRhYmxlLXJlc291cmNlLXVuaXRzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogcGFkCiAKICAgLQogICAgIG5hbWU6IGRsLWRwaXBlLXRhYmxlLW1hdGNoZXMKQEAgLTEwNDIsNiAmIzQzOzExMDEsOCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogZHBpcGUtZW50cnktYWN0aW9uLXZhbHVlcwogICAgICAgLQogICAgICAgICBuYW1lOiBkcGlwZS1lbnRyeS1jb3VudGVyCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogcGFkCiAKICAgLQogICAgIG5hbWU6IGRsLWRwaXBlLWVudHJ5LW1hdGNoLXZhbHVlcwpAQCAtMTE4MCw2ICYjNDM7MTI0MSw4IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgICBuYW1lOiByZXNvdXJjZS11bml0CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlc291cmNlLW9jYwomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHBhZAogCiAgIC0KICAgICBuYW1lOiBkbC1yZXNvdXJjZS1saXN0CkBAIC0xMjA3LDYgJiM0MzsxMjcwLDcgQEAgYXR0cmlidXRlLXNldHM6CiAgICAgYXR0cmlidXRlczoKICAgICAgIC0KICAgICAgICAgbmFtZTogcmVnaW9uLXNuYXBzaG90CiYjNDM7ICAgICAgICBtdWx0aS1hdHRyOiB0cnVlCiAKICAgLQogICAgIG5hbWU6IGRsLXJlZ2lvbi1zbmFwc2hvdApAQCAtMTIyMSw2ICYjNDM7MTI4NSw3IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgIGF0dHJpYnV0ZXM6CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlZ2lvbi1jaHVuawomIzQzOyAgICAgICAgbXVsdGktYXR0cjogdHJ1ZQogCiAgIC0KICAgICBuYW1lOiBkbC1yZWdpb24tY2h1bmsKQEAgLTEyMzAsNiAmIzQzOzEyOTUsOCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rLWRhdGEKICAgICAgIC0KICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rLWFkZHIKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwYWQKIAogICAtCiAgICAgbmFtZTogZGwtZm1zZwpAQCAtMTI3MCw2ICYjNDM7MTMzNyw4IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgICBuYW1lOiBoZWFsdGgtcmVwb3J0ZXItYXV0by1kdW1wCiAgICAgICAtCiAgICAgICAgIG5hbWU6IGhlYWx0aC1yZXBvcnRlci1idXJzdC1wZXJpb2QKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwYWQKIAogICAtCiAgICAgbmFtZTogZGwtYXR0ci1zdGF0cwpAQCAtMTI4NCw2ICYjNDM7MTM1MywxMCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgIC0KICAgICAgICAgbmFtZTogc3RhdHMtcngtZHJvcHBlZAogICAgICAgICB0eXBlOiB1NjQKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwYWQKJiM0MzsgICAgICAgIHR5cGU6IHBhZAomIzQzOyAgICAgICAgdmFsdWU6IDYxCiAKICAgLQogICAgIG5hbWU6IGRsLXRyYXAtbWV0YWRhdGEKQEAgLTEzMDMsNiAmIzQzOzEzNzYsNyBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICBhdHRyaWJ1dGVzOgogICAgICAgLQogICAgICAgICBuYW1lOiBsaW5lY2FyZC10eXBlCiYjNDM7ICAgICAgICBtdWx0aS1hdHRyOiB0cnVlCiAKICAgLQogICAgIG5hbWU6IGRsLXNlbGZ0ZXN0LWlkCkBAIC0xMzMwLDYgJiM0MzsxNDA0LDUwIEBAIGF0dHJpYnV0ZS1zZXRzOgogICAtCiAgICAgbmFtZTogZGwtcGFyZW50LWRldgogICAgIHN1YnNldC1vZjogZGV2bGluawomIzQzOyAgICBkb2M6IHwKJiM0MzsgICAgICBEZXZsaW5rIGhhbmRsZSBhY2NlcHRlZCBhcyB0aGUgcGFyZW50LWRldiBpbnB1dDsgdGhlIG5ldG5zIGlkIHRoZQomIzQzOyAgICAgIGtlcm5lbCByZXBvcnRzIGJhY2sgaXMgbm90IGFjY2VwdGVkLCB0aGUgcGFyZW50IGlzIGFsd2F5cyByZXNvbHZlZAomIzQzOyAgICAgIGluIHRoZSBjYWxsZXImIzM5O3MgbmV0bnMuCiYjNDM7ICAgIGF0dHJpYnV0ZXM6CiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogYnVzLW5hbWUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBkZXYtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGluZGV4CiYjNDM7CiYjNDM7ICAtCiYjNDM7ICAgIG5hbWU6IGRsLXJhdGUtc2V0CiYjNDM7ICAgIHN1YnNldC1vZjogZGV2bGluawomIzQzOyAgICBkb2M6IEF0dHJpYnV0ZXMgYWNjZXB0ZWQgYnkgdGhlIHJhdGUtc2V0IGFuZCByYXRlLW5ldyByZXF1ZXN0cy4KJiM0MzsgICAgYXR0cmlidXRlczoKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBidXMtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGRldi1uYW1lCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogaW5kZXgKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiByYXRlLW5vZGUtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtdHgtc2hhcmUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiByYXRlLXR4LW1heAomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtdHgtcHJpb3JpdHkKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiByYXRlLXR4LXdlaWdodAomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtcGFyZW50LW5vZGUtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtdGMtYndzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogcGFyZW50LWRldgomIzQzOyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBhcmVudC1kZXYKJiM0MzsKJiM0MzsgIC0KJiM0MzsgICAgbmFtZTogZGwtbmVzdGVkLWRldmxpbmsKJiM0MzsgICAgc3Vic2V0LW9mOiBkZXZsaW5rCiAgICAgYXR0cmlidXRlczoKICAgICAgIC0KICAgICAgICAgbmFtZTogYnVzLW5hbWUKQEAgLTEzMzcsNiAmIzQzOzE0NTUsOCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogZGV2LW5hbWUKICAgICAgIC0KICAgICAgICAgbmFtZTogaW5kZXgKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBuZXRucy1pZAogCiBvcGVyYXRpb25zOgogICBlbnVtLW1vZGVsOiBkaXJlY3Rpb25hbApAQCAtMTM2Myw2ICYjNDM7MTQ4Myw3IEBAIG9wZXJhdGlvbnM6CiAgICAgICAgICAgICAtIGluZGV4CiAgICAgICAgICAgICAtIHJlbG9hZC1mYWlsZWQKICAgICAgICAgICAgIC0gZGV2LXN0YXRzCiYjNDM7ICAgICAgICAgICAgLSBuZXN0ZWQtZGV2bGluawogICAgICAgZHVtcDoKICAgICAgICAgcmVwbHk6ICpnZXQtcmVwbHkKIApAQCAtMTM4OCwxMyAmIzQzOzE1MDksMTIgQEAgb3BlcmF0aW9uczoKICAgICAgICAgcmVxdWVzdDoKICAgICAgICAgICBhdHRyaWJ1dGVzOiAqZGV2LWlkLWF0dHJzCiAgICAgICAgIHJlcGx5OgotICAgICAgICAgIHZhbHVlOiAzICAjIGR1ZSB0byBhIGJ1ZywgcG9ydCBkdW1wIHJldHVybnMgREVWTElOS19DTURfTkVXCiAgICAgICAgICAgYXR0cmlidXRlczogKnBvcnQtaWQtYXR0cnMKIAogICAgIC0KICAgICAgIG5hbWU6IHBvcnQtc2V0CiAgICAgICBkb2M6IFNldCBkZXZsaW5rIHBvcnQgaW5zdGFuY2VzLgotICAgICAgYXR0cmlidXRlLXNldDogZGV2bGluawomIzQzOyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXBvcnQtc2V0CiAgICAgICBkb250LXZhbGlkYXRlOiBbc3RyaWN0XQogICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXQogICAgICAgZG86CkBAIC0xOTc1LDYgJiM0MzsyMDk1LDcgQEAgb3BlcmF0aW9uczoKICAgICAgICAgICAgIC0gaW5kZXgKICAgICAgICAgICAgIC0gcG9ydC1pbmRleAogICAgICAgICAgICAgLSByZWdpb24tbmFtZQomIzQzOyAgICAgICAgICAgIC0gcmVnaW9uLWNodW5rcwogCiAgICAgLQogICAgICAgbmFtZTogcG9ydC1wYXJhbS1nZXQKQEAgLTIzMDUsNyAmIzQzOzI0MjYsNyBAQCBvcGVyYXRpb25zOgogICAgIC0KICAgICAgIG5hbWU6IHJhdGUtc2V0CiAgICAgICBkb2M6IFNldCByYXRlIGluc3RhbmNlcy4KLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmsKJiM0MzsgICAgICBhdHRyaWJ1dGUtc2V0OiBkbC1yYXRlLXNldAogICAgICAgZG9udC12YWxpZGF0ZTogW3N0cmljdF0KICAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV0KICAgICAgIGRvOgpAQCAtMjMyOCw3ICYjNDM7MjQ0OSw3IEBAIG9wZXJhdGlvbnM6CiAgICAgLQogICAgICAgbmFtZTogcmF0ZS1uZXcKICAgICAgIGRvYzogQ3JlYXRlIHJhdGUgaW5zdGFuY2VzLgotICAgICAgYXR0cmlidXRlLXNldDogZGV2bGluawomIzQzOyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXJhdGUtc2V0CiAgICAgICBkb250LXZhbGlkYXRlOiBbc3RyaWN0XQogICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXQogICAgICAgZG86CkBAIC0yMzc0LDE0ICYjNDM7MjQ5NSwyMiBAQCBvcGVyYXRpb25zOgogICAgICAgICBwb3N0OiBkZXZsaW5rLW5sLXBvc3QtZG9pdAogICAgICAgICByZXF1ZXN0OgogICAgICAgICAgIHZhbHVlOiA3OAotICAgICAgICAgIGF0dHJpYnV0ZXM6ICZhbXA7bGluZWNhcmQtaWQtYXR0cnMKJiM0MzsgICAgICAgICAgYXR0cmlidXRlczoKICAgICAgICAgICAgIC0gYnVzLW5hbWUKICAgICAgICAgICAgIC0gZGV2LW5hbWUKICAgICAgICAgICAgIC0gaW5kZXgKICAgICAgICAgICAgIC0gbGluZWNhcmQtaW5kZXgKICAgICAgICAgcmVwbHk6ICZhbXA7bGluZWNhcmQtZ2V0LXJlcGx5CiAgICAgICAgICAgdmFsdWU6IDgwCi0gICAgICAgICAgYXR0cmlidXRlczogKmxpbmVjYXJkLWlkLWF0dHJzCiYjNDM7ICAgICAgICAgIGF0dHJpYnV0ZXM6CiYjNDM7ICAgICAgICAgICAgLSBidXMtbmFtZQomIzQzOyAgICAgICAgICAgIC0gZGV2LW5hbWUKJiM0MzsgICAgICAgICAgICAtIGluZGV4CiYjNDM7ICAgICAgICAgICAgLSBsaW5lY2FyZC1pbmRleAomIzQzOyAgICAgICAgICAgIC0gbGluZWNhcmQtc3RhdGUKJiM0MzsgICAgICAgICAgICAtIGxpbmVjYXJkLXR5cGUKJiM0MzsgICAgICAgICAgICAtIGxpbmVjYXJkLXN1cHBvcnRlZC10eXBlcwomIzQzOyAgICAgICAgICAgIC0gbmVzdGVkLWRldmxpbmsKICAgICAgIGR1bXA6CiAgICAgICAgIHJlcXVlc3Q6CiAgICAgICAgICAgYXR0cmlidXRlczogKmRldi1pZC1hdHRycwpkaWZmIC0tZ2l0IGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uYyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmMKaW5kZXggZGVjMDAxMzMxNzhkMS4uNDNlZjY4NjRkNDYyZiAxMDA2NDQKLS0tIGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jCkBAIC01MiwxMSAmIzQzOzUyLDExIEBAIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcGFyZW50X2Rldl9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICYjNDM7IDFdCiAJW0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsICZhbXA7ZGV2bGlua19hdHRyX2luZGV4X3JhbmdlKSwKIH07CiAKLWNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQUyAmIzQzOyAxXSA9IHsKJiM0Mztjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeVtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTICYjNDM7IDFdID0gewogCVtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZLCB9LAogCVtERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURV0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTgsIDEpLAotCVtERVZMSU5LX1BPUlRfRk5fQVRUUl9PUFNUQVRFXSA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VOCwgMSksCiAJW0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDE1KSwKJiM0MzsJW0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sCiB9OwogCiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3JhdGVfdGNfYndzX25sX3BvbGljeVtERVZMSU5LX1JBVEVfVENfQVRUUl9CVyAmIzQzOyAxXSA9IHsKQEAgLTk3LDcgJiM0Mzs5Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX3BvcnRfc2V0X25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggJiM0MzsgMQogCVtERVZMSU5LX0FUVFJfSU5ERVhdID0gTkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VSU5ULCAmYW1wO2RldmxpbmtfYXR0cl9pbmRleF9yYW5nZSksCiAJW0RFVkxJTktfQVRUUl9QT1JUX0lOREVYXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LAogCVtERVZMSU5LX0FUVFJfUE9SVF9UWVBFXSA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VMTYsIDMpLAotCVtERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl0gPSBOTEFfUE9MSUNZX05FU1RFRChkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5KSwKJiM0MzsJW0RFVkxJTktfQVRUUl9QT1JUX0ZVTkNUSU9OXSA9IE5MQV9QT0xJQ1lfTkVTVEVEKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5KSwKIH07CiAKIC8qIERFVkxJTktfQ01EX1BPUlRfTkVXIC0gZG8gKi8KQEAgLTMzNCw3ICYjNDM7MzM0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfcmVsb2FkX25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggJiM0MzsgMV0KIAlbREVWTElOS19BVFRSX0RFVl9OQU1FXSA9IHsgLnR5cGUgPSBOTEFfTlVMX1NUUklORywgfSwKIAlbREVWTElOS19BVFRSX0lOREVYXSA9IE5MQV9QT0xJQ1lfRlVMTF9SQU5HRShOTEFfVUlOVCwgJmFtcDtkZXZsaW5rX2F0dHJfaW5kZXhfcmFuZ2UpLAogCVtERVZMSU5LX0FUVFJfUkVMT0FEX0FDVElPTl0gPSBOTEFfUE9MSUNZX1JBTkdFKE5MQV9VOCwgMSwgMiksCi0JW0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMig2KSwKJiM0MzsJW0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMigzKSwKIAlbREVWTElOS19BVFRSX05FVE5TX1BJRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSwKIAlbREVWTElOS19BVFRSX05FVE5TX0ZEXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LAogCVtERVZMSU5LX0FUVFJfTkVUTlNfSURdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sCmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oIGIvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaAppbmRleCBhNzBlMGU0NzY5YWE1Li45OWNjYWNjNjkzYjc2IDEwMDY0NAotLS0gYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmgKQEAgLTE0LDcgJiM0MzsxNCw3IEBACiAKIC8qIENvbW1vbiBuZXN0ZWQgdHlwZXMgKi8KIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BhcmVudF9kZXZfbmxfcG9saWN5W0RFVkxJTktfQVRUUl9JTkRFWCAmIzQzOyAxXTsKLWV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFMgJiM0MzsgMV07CiYjNDM7ZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVMgJiM0MzsgMV07CiBleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9yYXRlX3RjX2J3c19ubF9wb2xpY3lbREVWTElOS19SQVRFX1RDX0FUVFJfQlcgJiM0MzsgMV07CiBleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9zZWxmdGVzdF9pZF9ubF9wb2xpY3lbREVWTElOS19BVFRSX1NFTEZURVNUX0lEX0ZMQVNIICYjNDM7IDFdOwogCmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9wb3J0LmMgYi9uZXQvZGV2bGluay9wb3J0LmMKaW5kZXggMTUyOGYyZDE0OGRmYy4uODAzNDI5ZDlhMDA4OSAxMDA2NDQKLS0tIGEvbmV0L2RldmxpbmsvcG9ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kZXZsaW5rL3BvcnQuYwpAQCAtNiwxOSAmIzQzOzYsNiBAQAogCiAjaW5jbHVkZSAmIzM0O2RldmxfaW50ZXJuYWwuaCYjMzQ7CiAKLSNkZWZpbmUgREVWTElOS19QT1JUX0ZOX0NBUFNfVkFMSURfTUFTSyBcCi0JKF9CSVRVTChfX0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNfTUFYKSAtIDEpCi0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeVtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9NQVggJiM0MzsgMV0gPSB7Ci0JW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJdID0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSwKLQlbREVWTElOS19QT1JUX0ZOX0FUVFJfU1RBVEVdID0KLQkJTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIERFVkxJTktfUE9SVF9GTl9TVEFURV9JTkFDVElWRSwKLQkJCQkgREVWTElOS19QT1JUX0ZOX1NUQVRFX0FDVElWRSksCi0JW0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID0KLQkJTkxBX1BPTElDWV9CSVRGSUVMRDMyKERFVkxJTktfUE9SVF9GTl9DQVBTX1ZBTElEX01BU0spLAotCVtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sCi19OwotCiAjZGVmaW5lIEFTU0VSVF9ERVZMSU5LX1BPUlRfUkVHSVNURVJFRChkZXZsaW5rX3BvcnQpCQkJCVwKIAlXQVJOX09OX09OQ0UoIShkZXZsaW5rX3BvcnQpLSZndDtyZWdpc3RlcmVkKQogI2RlZmluZSBBU1NFUlRfREVWTElOS19QT1JUX05PVF9SRUdJU1RFUkVEKGRldmxpbmtfcG9ydCkJCQlcCkBAIC03ODIsMTEgJiM0Mzs3NjksMTEgQEAgc3RhdGljIGludCBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsCiAJCQkJICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLAogCQkJCSAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogewotCXN0cnVjdCBubGF0dHIgKnRiW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCAmIzQzOyAxXTsKJiM0MzsJc3RydWN0IG5sYXR0ciAqdGJbQVJSQVlfU0laRShkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSldOwogCWludCBlcnI7CiAKLQllcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9NQVgsIGF0dHIsCi0JCQkgICAgICAgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3ksIGV4dGFjayk7CiYjNDM7CWVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIEFSUkFZX1NJWkUodGIpIC0gMSwgYXR0ciwKJiM0MzsJCQkgICAgICAgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3ksIGV4dGFjayk7CiAJaWYgKGVyciAmbHQ7IDApIHsKIAkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O0ZhaWwgdG8gcGFyc2UgcG9ydCBmdW5jdGlvbiBhdHRyaWJ1dGVzJiMzNDspOwogCQlyZXR1cm4gZXJyOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjI4CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGV2bGluayBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLiBJIHNlZSB3ZSYjMzk7cmUgdG91Y2hpbmcgYERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWxgLCBgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uY2AsIGBuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oYCwgYW5kIGBuZXQvZGV2bGluay9wb3J0LmNgLiBUaGF0IGluZGljYXRlcyBzb21lIG1vZGlmaWNhdGlvbiB0byB0aGUgZGV2bGluayBzdWJzeXN0ZW0sIGxpa2VseSBpbnZvbHZpbmcgTmV0bGluayBtZXNzYWdlIGhhbmRsaW5nIGFuZCBwb3J0IGNvbmZpZ3VyYXRpb24uCgpGaXJzdCwgSSYjMzk7bGwgemVybyBpbiBvbiBgbmV0L2RldmxpbmsvcG9ydC5jYCBhbmQgYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNgLCBhbG9uZyB3aXRoIHJlbGF0ZWQgZmlsZXMgZm9yIGNvbnRleHQuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgZXhpc3RpbmcgTmV0bGluayBtZXNzYWdlIGdlbmVyYXRpb24gaXMgYWZmZWN0ZWQgYW5kIGlmIHRoZSBwb3J0IG1hbmFnZW1lbnQgbG9naWMgaXMgYmVpbmcgYWx0ZXJlZC4gR2l2ZW4gdGhlIGAueWFtbGAgY2hhbmdlLCBJJiMzOTttIGFudGljaXBhdGluZyBzb21lIHNjaGVtYSB1cGRhdGVzIHRvby4KClRvIHF1aWNrbHkgZ2V0IHVwIHRvIHNwZWVkIHdpdGggYW55IHVuZmFtaWxpYXIgcGFydHMgb2YgdGhlIGNoYW5nZSwgSSYjMzk7bGwgcHJvYmFibHkgZmlyZSB1cCBzb21lIHNlYXJjaCB0b29scyBvciByZWFkIHN1cnJvdW5kaW5nIGNvZGUgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXZsaW5rIHN1YnN5c3RlbSBhbmQgaXRzIGN1cnJlbnQgcm9sZSBpbiB0aGUga2VybmVsLiBUaGlzIGlzIGVzc2VudGlhbCBmb3IgYSB0aG9yb3VnaCByZXZpZXc7IEkgbmVlZCB0byBrbm93IGhvdyB0aGVzZSBjaGFuZ2VzIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9kZXZsaW5rL3BvcnQuYz02OTM9c3RhdGljIGludCBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fdmFsaWRhdGUoc3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0LFxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy03NjctXG5uZXQvZGV2bGluay9wb3J0LmM6NzY4OnN0YXRpYyBpbnQgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpwb3J0LFxubmV0L2RldmxpbmsvcG9ydC5jLTc2OS1cdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcbi0tXG5uZXQvZGV2bGluay9wb3J0LmM9ODIwPWludCBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtODM3LVxubmV0L2RldmxpbmsvcG9ydC5jOjgzODpcdFx0ZXJyID0gZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldChkZXZsaW5rX3BvcnQsIGF0dHIsIGV4dGFjayk7XG5uZXQvZGV2bGluay9wb3J0LmMtODM5LVx0XHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4ODkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0JiMzOTtzIGdvaW5nIHRocm91Z2ggbXkgbWluZCBhcyBJIGFwcHJvYWNoIHRoaXMgY29kZSwgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIGludG8gdGhlIERldmxpbmsgUG9ydCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcyBgZGV2bGlua2AgcG9ydCBjb25maWd1cmF0aW9uIHN0dWZmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcG9ydCBmdW5jdGlvbnMgYXJlIGJlaW5nIHNldC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYG5ldC9kZXZsaW5rL3BvcnQuY2AsIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiB0aGUgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgIGFuZCBgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0YCBmdW5jdGlvbnMuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIG1hcCBvdXQgdGhlIGNhbGwgZmxvdyBhbmQgaWRlbnRpZnkgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQuIEkmIzM5O20gYXNzdW1pbmcsIGJhc2VkIG9uIHRoZSBuYW1pbmcsIHRoYXQgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIGZvciBjaGFuZ2luZyB0aGUgcG9ydCYjMzk7cyByb2xlLCB3aGVyZWFzIGBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRgIGlzIG1vc3QgbGlrZWx5IHRoZSBOZXRsaW5rIGhhbmRsZXIgdGhhdCByZWNlaXZlcyBhbmQgcHJvY2Vzc2VzIHRoZSB1c2VyLXNwYWNlIHJlcXVlc3RzLgoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgaG93IHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgZGF0YSBtYWtlcyBpdHMgd2F5IGZyb20gdGhlIE5ldGxpbmsgbWVzc2FnZSB0byB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGBkZXZsaW5rYCBwb3J0LCB0aGUgdmFsaWRhdGlvbiB0aGF0IG9jY3VycywgYW5kIGhvdyB0aGUgaGFyZHdhcmUgaXMgdWx0aW1hdGVseSBwcm9ncmFtbWVkIChpZiBhcHBsaWNhYmxlKS4gSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhleSBoYW5kbGUgZXJyb3IgY29uZGl0aW9ucywgYW5kIGlmIHRoZXkgbG9jayBhbnl0aGluZyAobGlrZSB0aGUgcG9ydCkgd2hlbiBwZXJmb3JtaW5nIHRoaXMgc2V0dGluZywgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zLgoKSSYjMzk7bGwgYWxzbyBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBpbnRlcmVzdGluZyBvciBub24tb2J2aW91cyBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgYGRldmxpbmtgIHN1YnN5c3RlbS4gQXJlIHRoZXJlIGFueSBjYWxsYmFja3Mgb3IgZXZlbnQgbm90aWZpY2F0aW9ucyBpbnZvbHZlZD8gSXMgdGhlcmUgYW4gQVBJIGZvciB2ZW5kb3JzIHRvIGV4dGVuZCB0aGlzLCBvciBpcyBpdCBwcmV0dHkgdGlnaHRseSBjb3VwbGVkPyBJJiMzOTttIGFudGljaXBhdGluZyB0aGVyZSB3aWxsIGJlIHNvbWUgY2hlY2tzIGZvciB0aGUgc3BlY2lmaWMgY2FwYWJpbGl0aWVzIG9mIHRoZSB1bmRlcmx5aW5nIGRldmljZSDigJMgdGhlcmUmIzM5O3MgcHJvYmFibHkgYSBkZXZpY2Utc3BlY2lmaWMgZGF0YSBtb2RlbCBhc3NvY2lhdGVkIHdpdGggdGhpcyBhcyB3ZWxsLCBhbmQgSSYjMzk7ZCBsaWtlIHRvIGlkZW50aWZ5IHdoYXQgdGhhdCBsb29rcyBsaWtlLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUgdHJpY2t5IGNhc2VzLCBzdWNoIGFzIHBvcnQgcm9sZXMgY2hhbmdpbmcgZnJvbSBhIHBoeXNpY2FsIGludGVyZmFjZSB0byBhIHZpcnR1YWwgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvcG9ydC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDkwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3NjA6XHRcdCAgICAhb3BzLVx1MDAzZXBvcnRfZm5fbWF4X2lvX2Vxc19zZXQpIHtcbiA3NjE6XHRcdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihleHRhY2ssIHRiW0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdLFxuIDc2MjpcdFx0XHRcdFx0ICAgIFwmIzM0O0Z1bmN0aW9uIGRvZXMgbm90IHN1cHBvcnQgbWF4X2lvX2VxcyBzZXR0aW5nXCYjMzQ7KTtcbiA3NjM6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIDc2NDpcdFx0fVxuIDc2NTpcdFx0cmV0dXJuIDA7XG4gNzY2Olx0fVxuIDc2NzpcdFxuIDc2ODpcdHN0YXRpYyBpbnQgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpwb3J0LFxuIDc2OTpcdFx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIDc3MDpcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4gNzcxOlx0e1xuIDc3MjpcdFx0c3RydWN0IG5sYXR0ciAqdGJbQVJSQVlfU0laRShkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSldO1xuIDc3MzpcdFx0aW50IGVycjtcbiA3NzQ6XHRcbiA3NzU6XHRcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIEFSUkFZX1NJWkUodGIpIC0gMSwgYXR0cixcbiA3NzY6XHRcdFx0XHQgICAgICAgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3ksIGV4dGFjayk7XG4gNzc3Olx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4gNzc4Olx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7RmFpbCB0byBwYXJzZSBwb3J0IGZ1bmN0aW9uIGF0dHJpYnV0ZXNcJiMzNDspO1xuIDc3OTpcdFx0XHRyZXR1cm4gZXJyO1xuIDc4MDpcdFx0fVxuIDc4MTpcdFxuIDc4MjpcdFx0ZXJyID0gZGV2bGlua19wb3J0X2Z1bmN0aW9uX3ZhbGlkYXRlKHBvcnQsIHRiLCBleHRhY2spO1xuIDc4MzpcdFx0aWYgKGVycilcbiA3ODQ6XHRcdFx0cmV0dXJuIGVycjtcbiA3ODU6XHRcbiA3ODY6XHRcdGF0dHIgPSB0YltERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSXTtcbiA3ODc6XHRcdGlmIChhdHRyKSB7XG4gNzg4Olx0XHRcdGVyciA9IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9od19hZGRyX3NldChwb3J0LCBhdHRyLCBleHRhY2spO1xuIDc4OTpcdFx0XHRpZiAoZXJyKVxuIDc5MDpcdFx0XHRcdHJldHVybiBlcnI7XG4gNzkxOlx0XHR9XG4gNzkyOlx0XG4gNzkzOlx0XHRhdHRyID0gdGJbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQU107XG4gNzk0Olx0XHRpZiAoYXR0cikge1xuIDc5NTpcdFx0XHRlcnIgPSBkZXZsaW5rX3BvcnRfZm5fY2Fwc19zZXQocG9ydCwgYXR0ciwgZXh0YWNrKTtcbiA3OTY6XHRcdFx0aWYgKGVycilcbiA3OTc6XHRcdFx0XHRyZXR1cm4gZXJyO1xuIDc5ODpcdFx0fVxuIDc5OTpcdFxuIDgwMDpcdFx0YXR0ciA9IHRiW0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdO1xuIDgwMTpcdFx0aWYgKGF0dHIpIHtcbiA4MDI6XHRcdFx0ZXJyID0gZGV2bGlua19wb3J0X2ZuX21heF9pb19lcXNfc2V0KHBvcnQsIGF0dHIsIGV4dGFjayk7XG4gODAzOlx0XHRcdGlmIChlcnIpXG4gODA0Olx0XHRcdFx0cmV0dXJuIGVycjtcbiA4MDU6XHRcdH1cbiA4MDY6XHRcbiA4MDc6XHRcdC8qIEtlZXAgdGhpcyBhcyB0aGUgbGFzdCBmdW5jdGlvbiBhdHRyaWJ1dGUgc2V0LCBzbyB0aGF0IHdoZW5cbiA4MDg6XHRcdCAqIG11bHRpcGxlIHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlcyBhcmUgc2V0IGFsb25nIHdpdGggc3RhdGUsXG4gODA5Olx0XHQgKiBUaG9zZSBjYW4gYmUgYXBwbGllZCBmaXJzdCBiZWZvcmUgYWN0aXZhdGluZyB0aGUgc3RhdGUuXG4gODEwOlx0XHQgKi9cbiA4MTE6XHRcdGF0dHIgPSB0YltERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURV07XG4gODEyOlx0XHRpZiAoYXR0cilcbiA4MTM6XHRcdFx0ZXJyID0gZGV2bGlua19wb3J0X2ZuX3N0YXRlX3NldChwb3J0LCBhdHRyLCBleHRhY2spO1xuIDgxNDpcdFxuIDgxNTpcdFx0aWYgKCFlcnIpXG4gODE2Olx0XHRcdGRldmxpbmtfcG9ydF9ub3RpZnkocG9ydCwgREVWTElOS19DTURfUE9SVF9ORVcpO1xuIDgxNzpcdFx0cmV0dXJuIGVycjtcbiA4MTg6XHR9XG4gODE5Olx0XG4gODIwOlx0aW50IGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIDgyMTpcdHtcbiA4MjI6XHRcdHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCA9IGRldmxpbmtfbmxfY3R4KGluZm8pLVx1MDAzZWRldmxpbmtfcG9ydDtcbiA4MjM6XHRcdGludCBlcnI7XG4gODI0Olx0XG4gODI1Olx0XHRpZiAoaW5mby1cdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfUE9SVF9UWVBFXSkge1xuIDgyNjpcdFx0XHRlbnVtIGRldmxpbmtfcG9ydF90eXBlIHBvcnRfdHlwZTtcbiA4Mjc6XHRcbiA4Mjg6XHRcdFx0cG9ydF90eXBlID0gbmxhX2dldF91MTYoaW5mby1cdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfUE9SVF9UWVBFXSk7XG4gODI5Olx0XHRcdGVyciA9IGRldmxpbmtfcG9ydF90eXBlX3NldChkZXZsaW5rX3BvcnQsIHBvcnRfdHlwZSk7XG4gODMwOlx0XHRcdGlmIChlcnIpXG4gODMxOlx0XHRcdFx0cmV0dXJuIGVycjtcbiA4MzI6XHRcdH1cbiA4MzM6XHRcbiA4MzQ6XHRcdGlmIChpbmZvLVx1MDAzZWF0dHJzW0RFVkxJTktfQVRUUl9QT1JUX0ZVTkNUSU9OXSkge1xuIDgzNTpcdFx0XHRzdHJ1Y3QgbmxhdHRyICphdHRyID0gaW5mby1cdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl07XG4gODM2Olx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayA9IGluZm8tXHUwMDNlZXh0YWNrO1xuIDgzNzpcdFxuIDgzODpcdFx0XHRlcnIgPSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KGRldmxpbmtfcG9ydCwgYXR0ciwgZXh0YWNrKTtcbiA4Mzk6XHRcdFx0aWYgKGVycilcbiA4NDA6XHRcdFx0XHRyZXR1cm4gZXJyO1xuIDg0MTpcdFx0fVxuIDg0MjpcdFxuIDg0MzpcdFx0cmV0dXJuIDA7XG4gODQ0Olx0fVxuIDg0NTpcdFxuIDg0NjpcdGludCBkZXZsaW5rX25sX3BvcnRfc3BsaXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIDg0NzpcdHtcbiA4NDg6XHRcdHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCA9IGRldmxpbmtfbmxfY3R4KGluZm8pLVx1MDAzZWRldmxpbmtfcG9ydDtcbiA4NDk6XHRcdHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rID0gZGV2bGlua19ubF9jdHgoaW5mbyktXHUwMDNlZGV2bGluaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODA4CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRldmxpbmsgTmV0bGluayBTdWJzeXN0ZW0gQW5hbHlzaXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBkZXZsaW5rYCDigJMgdGhhdCYjMzk7cyBhIGNvcmUgbmV0d29ya2luZyBOZXRsaW5rIHN1YnN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhIGdlbmVyaWMgTmV0bGluayBmYW1pbHkgKGBORVRMSU5LX0dFTkVSSUNgKSB1bmRlciBgZGV2bGlua2AuIFRoZSBxdWVzdGlvbiBub3cgaXM6IGlzIGBkZXZsaW5rYCBhY2Nlc3NpYmxlIGluIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IFRoZSBhbnN3ZXIgYXBwZWFycyB0byBiZSB5ZXMuIEl0JiMzOTtzIGEgc3RhbmRhcmQgZ2VuZXJpYyBOZXRsaW5rIGludGVyZmFjZSB1c2VkIGJ5IG5ldCBkZXZpY2VzIOKAkyB0aGluayBgbmV0ZGV2c2ltYCwgYHZpcnRpb19uZXRgLCBvciBldmVuIHRoZSBzaW1wbGUgYGR1bW15YCBpbnRlcmZhY2UuIFN5emthbGxlciYjMzk7cyBoZWF2eSBmdXp6aW5nIG9mIGBkZXZsaW5rYCBkZWZpbml0ZWx5IGNvbmZpcm1zIHRoaXMsIGxvb2tpbmcgYXQgY29tbWFuZHMgbGlrZSBgZGV2bGlua19ubF9jbWRfcG9ydF9zZXRgLCBgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0YCwgYW5kIG9wZXJhdGlvbnMgbGlrZSByZWxvYWQgYW5kIHJhdGUuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyBwYXRjaC4gTXkgZm9jdXMgaGFzIHNoaWZ0ZWQgdG8gYG5ldGxpbmtfZ2VuLmNgIGFuZCBgcG9ydC5jYC4KClRoZSBwYXRjaCBpdHNlbGYgc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHVwZGF0ZXMgdG8gdGhlIGBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sYCBmaWxlLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSByZWZpbmluZyB0aGUgZGVmaW5pdGlvbnMgaGVyZSwgc3BlY2lmaWNhbGx5IHdpdGggdGhlIGByZWxvYWQtbGltaXRgIGVudW0sIG5ldyBzdWJzZXRzIGZvciBwb3J0LWZ1bmN0aW9uIGFuZCByYXRlLXNldCwgYW5kIHJlZmluZW1lbnRzIGxpa2UgbmVzdGVkLWRldmxpbmsgYW5kIG11bHRpLWF0dHJpYnV0ZSBmbGFncy4gSXQgYWxzbyBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGRlYWxpbmcgd2l0aCBwYWRkaW5nIGF0dHJpYnV0ZXMuCgpCYXNlZCBvbiB0aGlzIHNwZWMgeWFtbCwgYG5ldGxpbmtfZ2VuLmNgIGFuZCBgbmV0bGlua19nZW4uaGAgaGF2ZSBiZWVuIHVwZGF0ZWQvcmVnZW5lcmF0ZWQuClRoZSBjaGFuZ2VzIHdpdGhpbiB0aGVzZSBmaWxlcyBsb29rIHNpZ25pZmljYW50OgoqICAgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lgIGlzIHJlcGxhY2VkIGJ5IGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAuIFRoZSBuZXcgcG9saWN5IGluY2x1ZGVzIGBERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTYCwgYW5kIGl0IHJlbW92ZXMgYE9QU1RBVEVgLCBhcyBpdCBpcyByZWFkLW9ubHkuCiogICBUaGUgYGRldmxpbmtfcG9ydF9zZXRfbmxfcG9saWN5YCBub3cgdXNlcyB0aGUgbmVzdGVkIHBvbGljeSBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGZvciB0aGUgYERFVkxJTktfQVRUUl9QT1JUX0ZVTkNUSU9OYCBhdHRyaWJ1dGUuCiogICBgZGV2bGlua19yZWxvYWRfbmxfcG9saWN5YCBub3cgc3BlY2lmaWVzIGBbREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDMpO2Agd2hlcmUgdGhlIGxpbWl0IHdhcyBwcmV2aW91c2x5IDYuCgpGaW5hbGx5LCBpbiBgbmV0L2RldmxpbmsvcG9ydC5jYCwgaXQgbG9va3MgbGlrZSB0aGVyZSYjMzk7cyBzb21lIGNsZWFudXA6CiogICBgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3lgIGFuZCBpdHMgcHJpdmF0ZSBtYXNrIG1hY3JvIGFyZSBnb25lLgoqICAgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgIGlzIG5vdyBkaXJlY3RseSB1c2luZyB0aGUgZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgYW5kIHBhcnNpbmcgaXQgd2l0aCBgQVJSQVlfU0laRShkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSlgLgoKSSBzaG91bGQgcHJvYmFibHkgYWxzbyBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZm9yIGBkZXZsaW5rYCB0byBtYWtlIHN1cmUgbm90aGluZyBoYXMgY2hhbmdlZCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfREVWTElOSyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2NyeXB0by9tYXJ2ZWxsL0tjb25maWc9NDA9Y29uZmlnIENSWVBUT19ERVZfT0NURU9OVFgyX0NQVFxuLS1cbmRyaXZlcnMvY3J5cHRvL21hcnZlbGwvS2NvbmZpZy01MS1cdHNlbGVjdCBDUllQVE9fQVVUSEVOQ1xuZHJpdmVycy9jcnlwdG8vbWFydmVsbC9LY29uZmlnOjUyOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL2NyeXB0by9tYXJ2ZWxsL0tjb25maWctNTMtXHRoZWxwXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZz0zPWNvbmZpZyBaTDMwNzNYXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZy02LVx0c2VsZWN0IERQTExcbmRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWc6NzpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZy04LVx0c2VsZWN0IFJFR01BUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwOS1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cbmRyaXZlcnMvbmV0L0tjb25maWc6NjEwOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMS1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZz0xNjg9Y29uZmlnIENBTl9LVkFTRVJfUENJRUZEXG4tLVxuZHJpdmVycy9uZXQvY2FuL0tjb25maWctMTcwLVx0dHJpc3RhdGUgXCYjMzQ7S3Zhc2VyIFBDSWUgRkQgY2FyZHNcJiMzNDtcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjE3MTpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvY2FuL0tjb25maWctMTcyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZz0zMT1jb25maWcgQ0FOX0VUQVNfRVM1OFhcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWctMzMtXHRzZWxlY3QgQ1JDMTZcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZzozNDpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnLTM1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZz02Nz1jb25maWcgQ0FOX0tWQVNFUl9VU0JcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZy02OC1cdHRyaXN0YXRlIFwmIzM0O0t2YXNlciBDQU4vVVNCIGludGVyZmFjZVwmIzM0O1xuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnOjY5Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWctNzAtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWc9MTk9Y29uZmlnIEVOQV9FVEhFUk5FVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9LY29uZmlnLTIzLVx0c2VsZWN0IERJTUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWc6MjQ6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9LY29uZmlnLTI1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnPTE2OT1jb25maWcgUERTX0NPUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZy0xNzItXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc6MTczOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZy0xNzQtXHRzZWxlY3QgUExETUZXXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yMDc9Y29uZmlnIEJOWFRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIxMi1cdHNlbGVjdCBDUkMzMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyMTM6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjE0LVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjU4PWNvbmZpZyBCTkdFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjAtXHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNjE6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYyLVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTY4PWNvbmZpZyBMSVFVSURJT1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTc1LVx0c2VsZWN0IExJUVVJRElPX0NPUkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjc2Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy03Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZz0yPWNvbmZpZyBGU0xfRFBBQTJfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNy1cdHNlbGVjdCBGU0xfWEdNQUNfTURJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc6ODpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctOS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvS2NvbmZpZz02PWNvbmZpZyBGVU5fRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL0tjb25maWctOS1cdGRlcGVuZHMgb24gVExTIFx1MDAyNlx1MDAyNiBUTFNfREVWSUNFIHx8IFRMU19ERVZJQ0U9blxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL0tjb25maWc6MTA6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9LY29uZmlnLTExLVx0c2VsZWN0IEZVTl9DT1JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc9OTE9Y29uZmlnIEhOUzNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05My1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzo5NDpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctOTUtXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWc9Nj1jb25maWcgSElOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZy04LVx0ZGVwZW5kcyBvbiAoUENJX01TSSBcdTAwMjZcdTAwMjYgKFg4NiB8fCBBUk02NCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZzo5Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZy0xMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE0NT1jb25maWcgSVhHQkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTE1MC1cdHNlbGVjdCBNRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjE1MTpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0xNTItXHRzZWxlY3QgUExETUZXXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMjk9Y29uZmlnIEk0MEVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIzNS1cdHNlbGVjdCBMSUJJRV9BRE1JTlFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjM2Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIzNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTI5MT1jb25maWcgSUNFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0zMDItXHRzZWxlY3QgTElCSUVfRldMT0cgaWYgREVCVUdfRlNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MzAzOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTMwNC1cdHNlbGVjdCBQQUNLSU5HXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhkL0tjb25maWc9ND1jb25maWcgSVhEXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhkL0tjb25maWctOC1cdHNlbGVjdCBMSUJJRV9QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4ZC9LY29uZmlnOjk6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4ZC9LY29uZmlnLTEwLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9OT1jb25maWcgT0NURU9OVFgyX0FGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMS1cdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoxMjpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMy1cdGRlcGVuZHMgb24gKDY0QklUIFx1MDAyNlx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0zMT1jb25maWcgT0NURU9OVFgyX1BGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMy1cdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozNDpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNS1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc9Nj1jb25maWcgUFJFU1RFUkFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWctOS1cdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc6MTA6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZy0xMS1cdHNlbGVjdCBQSFlMSU5LXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnPTI4PWNvbmZpZyBNTFg0X0NPUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctMzEtXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnOjMyOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctMzMtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz02PWNvbmZpZyBNTFg1X0NPUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy05LVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjEwOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0xMS1cdGRlcGVuZHMgb24gTUxYRlcgfHwgIU1MWEZXXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4ZncvS2NvbmZpZz02PWNvbmZpZyBNTFhGV1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGZ3L0tjb25maWctMTQtXHRzZWxlY3QgWFpfREVDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnOjE1Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZz02PWNvbmZpZyBNTFhTV19DT1JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6ODpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy05LVx0c2VsZWN0IE1MWEZXXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTIwPWNvbmZpZyBGQk5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yNi1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyNzpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI4LVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZz0xNT1jb25maWcgTVNDQ19PQ0VMT1RfU1dJVENIX0xJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnLTE2LVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnOjE3Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTgtXHRzZWxlY3QgUkVHTUFQX01NSU9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvS2NvbmZpZz0xOT1jb25maWcgTkZQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL0tjb25maWctMjMtXHRkZXBlbmRzIG9uIFRMUyBcdTAwMjZcdTAwMjYgVExTX0RFVklDRSB8fCBUTFNfREVWSUNFPW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9LY29uZmlnOjI0Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvS2NvbmZpZy0yNS1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc9MjA9Y29uZmlnIElPTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yMy1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjQ6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjUtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWc9NzY9Y29uZmlnIFFFRFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnLTgxLVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZzo4MjpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWctODMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL0tjb25maWc9MTk9Y29uZmlnIFNGQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9LY29uZmlnLTI0LVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZzoyNTpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL0tjb25maWctMjYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yPWNvbmZpZyBTVE1NQUNfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMi1cdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9NjU9Y29uZmlnIFRJX0NQU1dfU1dJVENIREVWXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03My1cdHNlbGVjdCBSRUdNQVBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NzQ6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNzUtXHRpbXBseSBQSFlfVElfR01JSV9TRUxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTk2PWNvbmZpZyBUSV9LM19BTTY1X0NQU1dfTlVTU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctOTgtXHRkZXBlbmRzIG9uIEFSQ0hfSzMgXHUwMDI2XHUwMDI2IE9GIFx1MDAyNlx1MDAyNiBUSV9LM19VRE1BX0dMVUVfTEFZRVJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6OTk6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAwLVx0c2VsZWN0IFRJX0RBVklOQ0lfTURJT1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3p0ZS9kaW5naGFpL0tjb25maWc9Nj1jb25maWcgRElOR0hBSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3p0ZS9kaW5naGFpL0tjb25maWctOC0gICAgZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3p0ZS9kaW5naGFpL0tjb25maWc6OTogICAgc2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC96dGUvZGluZ2hhaS9LY29uZmlnLTEwLSAgICBoZWxwXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTk2PWNvbmZpZyBJT1NNXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTk4LVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo5OTpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTEwMC1cdHNlbGVjdCBSRUxBWSBpZiBXV0FOX0RFQlVHRlNcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTIxMT1jb25maWcgUFRQXzE1ODhfQ0xPQ0tfT0NQXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTgtXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbmRyaXZlcnMvcHRwL0tjb25maWc6MjE5Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIyMC1cdHNlbGVjdCBDUkMxNlxuLS1cbmluY2x1ZGUvbmV0L2RldmxpbmsuaC02LSAqL1xuaW5jbHVkZS9uZXQvZGV2bGluay5oOjc6I2lmbmRlZiBfTkVUX0RFVkxJTktfSF9cbmluY2x1ZGUvbmV0L2RldmxpbmsuaDo4OiNkZWZpbmUgX05FVF9ERVZMSU5LX0hfXG5pbmNsdWRlL25ldC9kZXZsaW5rLmgtOS1cbi0tXG5pbmNsdWRlL25ldC9kZXZsaW5rLmg9MjExND1kZXZsX3RyYXBfcG9saWNlcnNfdW5yZWdpc3RlcihzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbi0tXG5pbmNsdWRlL25ldC9kZXZsaW5rLmgtMjExNy1cbmluY2x1ZGUvbmV0L2RldmxpbmsuaDoyMTE4OiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfREVWTElOSylcbmluY2x1ZGUvbmV0L2RldmxpbmsuaC0yMTE5LVxuLS1cbmluY2x1ZGUvbmV0L2RldmxpbmsuaD0yMTc3PXN0YXRpYyBpbmxpbmUgc2l6ZV90IGRldmxpbmtfbmxfcG9ydF9oYW5kbGVfc2l6ZShzdHJ1Y3QgZGV2bGlua19wb3J0ICpkZXZsaW5rX3BvcnQpXG4tLVxuaW5jbHVkZS9uZXQvZGV2bGluay5oLTIxODMtXG5pbmNsdWRlL25ldC9kZXZsaW5rLmg6MjE4NDojZW5kaWYgLyogX05FVF9ERVZMSU5LX0hfICovXG4tLVxuaW5jbHVkZS90cmFjZS9ldmVudHMvZGV2bGluay5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RldmxpbmsuaDoyOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfREVWTElOSylcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RldmxpbmsuaC0zLVxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RldmxpbmsuaD0xNzc9VFJBQ0VfRVZFTlQoZGV2bGlua190cmFwX3JlcG9ydCxcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9kZXZsaW5rLmgtMjE0LVxuaW5jbHVkZS90cmFjZS9ldmVudHMvZGV2bGluay5oOjIxNTojZWxzZSAvKiBDT05GSUdfTkVUX0RFVkxJTksgKi9cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RldmxpbmsuaC0yMTYtXG4tLVxubmV0L0tjb25maWc9NDc5PWNvbmZpZyBORVRfU09DS19NU0dcbi0tXG5uZXQvS2NvbmZpZy00ODYtXG5uZXQvS2NvbmZpZzo0ODc6Y29uZmlnIE5FVF9ERVZMSU5LXG5uZXQvS2NvbmZpZy00ODgtXHRib29sXG4tLVxubmV0L01ha2VmaWxlPTI1PW9iai0kKENPTkZJR19CUklER0UpXHRcdCYjNDM7PSBicmlkZ2UvXG5uZXQvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX05FVF9ERVZMSU5LKVx0JiM0Mzs9IGRldmxpbmsvXG5uZXQvTWFrZWZpbGUtMjctb2JqLXlcdFx0XHRcdCYjNDM7PSBkc2EvXG4tLVxubmV0L2NvcmUvZHJvcF9tb25pdG9yLmM9MTAxNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kbV9hbGVydF9vcHMgKm5ldF9kbV9hbGVydF9vcHNfYXJyW10gPSB7XG4tLVxubmV0L2NvcmUvZHJvcF9tb25pdG9yLmMtMTAyMS1cbm5ldC9jb3JlL2Ryb3BfbW9uaXRvci5jOjEwMjI6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9ERVZMSU5LKVxubmV0L2NvcmUvZHJvcF9tb25pdG9yLmMtMTAyMy1zdGF0aWMgaW50IG5ldF9kbV9od19wcm9iZV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgbmV0X2RtX2FsZXJ0X29wcyAqb3BzKVxuLS1cbm5ldC9kc2EvS2NvbmZpZz0zPW1lbnVjb25maWcgTkVUX0RTQVxuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMC1cdHNlbGVjdCBQSFlMSU5LXG5uZXQvZHNhL0tjb25maWc6MTE6XHRzZWxlY3QgTkVUX0RFVkxJTktcbm5ldC9kc2EvS2NvbmZpZy0xMi1cdGltcGx5IE5FVF9TRUxGVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTUwNwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDY5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERldmxpbmsgTmV0bGluayBDaGFuZ2VzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBEZXZsaW5rIHVwZGF0ZS4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIHNvIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBORVRfREVWTElOS2AgaW4gYG5ldC9LY29uZmlnYC4gUmlnaHQsIGl0JiMzOTtzIHNlbGVjdGVkIGJ5IHNldmVyYWwgZHJpdmVycyBsaWtlIE5FVERFVlNJTSwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIE5FVERFVlNJTSAqZG9lcyogc2VsZWN0IGBORVRfREVWTElOS2AsIGFuZCBhbHNvIGBORVRfRFNBYCBhbmQgTUxYNS4gR29vZCwgdGhlIGRlcGVuZGVuY2llcyBhcmUgY2xlYXIuCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgY29kZSBjaGFuZ2VzIHRoZW1zZWx2ZXMsIHN0YXJ0aW5nIHdpdGggYG5ldC9kZXZsaW5rL3BvcnQuY2AuIEFoLCBgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldGAgaGFzIGJlZW4gbW9kaWZpZWQuIEkgc2VlIHRoYXQgdGhlIHN0YXRpYyBgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3lgIHN0cnVjdCBoYXMgYmVlbiByZW1vdmVkLiBJbnN0ZWFkLCB3ZSYjMzk7cmUgdXNpbmcgdGhlIGF1dG8tZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgZnJvbSBgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uY2AuIEludGVyZXN0aW5nLiBUaGV5JiMzOTt2ZSB1cGRhdGVkIGhvdyB0aGUgYXR0cmlidXRlcyBhcmUgcGFyc2VkLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIHN3aXRjaGVkIGZyb20gYSBmaXhlZC1zaXplIGB0YmAgYXJyYXkgYW5kIGEgaGFyZGNvZGVkIHNpemUgdG8gdXNpbmcgYEFSUkFZX1NJWkUoKWAgZm9yIHRoZSBgdGJgIGFycmF5IGFuZCBhIGRlcml2ZWQgc2l6ZSBmb3IgdGhlIG5sYV9wYXJzZSBjYWxsLCB3aGljaCBpcyBhIGJldHRlciwgbW9yZSBmbGV4aWJsZSBhcHByb2FjaC4KCkxldCYjMzk7cyBleGFtaW5lIHRoYXQgbmV3IGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgcG9saWN5LiBPa2F5LCBzbyBpdCBoYW5kbGVzIHRoZSBkaWZmZXJlbnQgYXR0cmlidXRlcyBsaWtlIGBIV19BRERSYCwgYFNUQVRFYCwgYENBUFNgLCBhbmQgYE1BWF9JT19FUVNgLiBUaGUgcG9saWN5IGRlZmluaXRpb25zIGxvb2sgc3RhbmRhcmQgZW5vdWdoLiBVc2luZyBgTkxBX0JJTkFSWWAgZm9yIGBIV19BRERSYCwgYE5MQV9QT0xJQ1lfTUFYYCBmb3IgYFNUQVRFYCwgYE5MQV9QT0xJQ1lfQklURklFTEQzMmAgZm9yIGBDQVBTYCwgYW5kIGBOTEFfVTMyYCBmb3IgYE1BWF9JT19FUVNgLiBUaGF0JiMzOTtzIGFsbCB0eXBpY2FsIE5ldGxpbmsgc3R1ZmYuCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZXNlIHBvbGljaWVzIGFyZSB1c2VkIGluIGBuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jYC4gQWgsIHRoZXJlJiMzOTtzIGBkZXZsaW5rX3BvcnRfc2V0X25sX3BvbGljeWAgYW5kIGBkZXZsaW5rX3JlbG9hZF9ubF9wb2xpY3lgLiBUaGUgZmlyc3Qgb25lIHVzZXMgdGhlIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgZm9yIGBERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTmAgYXMgYSBuZXN0ZWQgYXR0cmlidXRlIGFuZCB0aGUgc2Vjb25kIHVzZXMgYE5MQV9QT0xJQ1lfQklURklFTEQzMigzKWAgZm9yIGBERVZMSU5LX0FUVFJfUkVMT0FEX0xJTUlUU2AuCgpGaW5hbGx5LCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgSSBoYXZlIHRvIHNlZSB3aG8gaXMgYWN0dWFsbHkgKnVzaW5nKiB0aGVzZSBjaGFuZ2VzLiBJJiMzOTtsbCBuZWVkIHRvIGdyZXAgZm9yIGNhbGxzIHRvIGBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRgLCBgZGV2bGlua19ubF9jbWRfcmVsb2FkX2RvaXRgIGFuZCBvdGhlcnMgaW4gdGhlIGBkZXZsaW5rYCBzdWJzeXN0ZW0uIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcmFjdGljYWwgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RldmxpbmtfbmxfcG9ydF9zZXRfZG9pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jPTcwMj1jb25zdCBzdHJ1Y3QgZ2VubF9zcGxpdF9vcHMgZGV2bGlua19ubF9vcHNbNzVdID0ge1xuLS1cbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmMtNzM5LVx0XHQucHJlX2RvaXRcdD0gZGV2bGlua19ubF9wcmVfZG9pdF9wb3J0LFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uYzo3NDA6XHRcdC5kb2l0XHRcdD0gZGV2bGlua19ubF9wb3J0X3NldF9kb2l0LFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uYy03NDEtXHRcdC5wb3N0X2RvaXRcdD0gZGV2bGlua19ubF9wb3N0X2RvaXQsXG4tLVxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uaD01MD1pbnQgZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmgtNTEtXHRcdFx0ICAgICAgIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7XG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oOjUyOmludCBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oLTUzLWludCBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG4tLVxubmV0L2RldmxpbmsvcG9ydC5jPTc2OD1zdGF0aWMgaW50IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqcG9ydCxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtODE5LVxubmV0L2RldmxpbmsvcG9ydC5jOjgyMDppbnQgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvZGV2bGluay9wb3J0LmMtODIxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcyNTMKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBEZXZsaW5rIFJlbG9hZCBIYW5kbGVycyoqCgpBbHJpZ2h0LCBzbyB3ZSBuZWVkIHRvIHRyYWNrIGRvd24gaG93IHRoZXNlIHJlbG9hZCBjb21tYW5kcyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIGRldmxpbmsgc3Vic3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgYSByZWxvYWQgb3BlcmF0aW9uLCBpcyB0byB6ZXJvIGluIG9uIGZ1bmN0aW9ucyB0aGF0IGxpa2VseSBtYW5hZ2UgdGhhdCBwcm9jZXNzLiBTcGVjaWZpY2FsbHksIEnigJlkIGJlIGNoZWNraW5nIG91dCBgZGV2bGlua19ubF9jbWRfcmVsb2FkX2RvaXRgIG9yIHNpbWlsYXIgZnVuY3Rpb25zIGluIHRoZSBgbmV0L2RldmxpbmsvYCBkaXJlY3RvcnkuIFRoYXQgbmFtaW5nIGNvbnZlbnRpb24gc3VnZ2VzdHMgYSBkaXJlY3QgbGluayB0byB0aGUgTmV0bGluayBpbnRlcmZhY2UgYW5kIHRoZSBjb3JlIGV4ZWN1dGlvbiBmbG93IGZvciByZWxvYWQgY29tbWFuZHMgd2l0aGluIHRoZSBkZXZsaW5rIGNvbnRleHQuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIG1lYXQgb2YgdGhlIHByb2Nlc3NpbmcgdGhlcmUg4oCTIHBhcnNpbmcgdGhlIE5ldGxpbmsgbWVzc2FnZSwgdmFsaWRhdGluZyB0aGUgcmVxdWVzdCwgYW5kIHVsdGltYXRlbHkgb3JjaGVzdHJhdGluZyB0aGUgZGV2aWNlIHJlbG9hZCBpdHNlbGYuIERlcGVuZGluZyBvbiB0aGUgc29waGlzdGljYXRpb24gb2YgdGhlIGRldmxpbmsgaW1wbGVtZW50YXRpb24sIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24gbWlnaHQgYmUgYSB3cmFwcGVyIG9yIGFuIGVudHJ5IHBvaW50IHRoYXQgZGVsZWdhdGVzIHRvIGEgbW9yZSBncmFudWxhciBzZXQgb2YgaGFuZGxlcnMgZGVwZW5kaW5nIG9uIHRoZSBkZXZsaW5rIG9iamVjdCB0eXBlIGludm9sdmVkLiBUaW1lIHRvIGdvIHNwZWx1bmtpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2bGlua19ubF9jbWRfcmVsb2FkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1MjkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkh1bnRpbmcgRG93biBEZXZsaW5rIFJlbG9hZCBGdW5jdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlICYjMzQ7cmVsb2FkJiMzNDsgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYG5ldC9kZXZsaW5rL2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIGZvciBkZXZsaW5rIGRldmljZSBtYW5hZ2VtZW50IHJlc2lkZXMsIHNvIGl0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcuIFRoaXMgcHJvYmFibHkgbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkZXZsaW5rIGluZnJhc3RydWN0dXJlIGhhbmRsZXMgcmVsb2Fkcywgd2hpY2ggaXMgbGlrZWx5IGEgY3J1Y2lhbCBwYXJ0IG9mIGVycm9yIHJlY292ZXJ5LCBob3RwbHVnZ2luZywgb3IgZXZlbiBjb25maWd1cmF0aW9uIGNoYW5nZXMgdGhhdCByZXF1aXJlIGEgZGV2aWNlIHJlc3RhcnQuIEkgc3VzcGVjdCBpdCYjMzk7cyBnb2luZyB0byBpbnZvbHZlIHNvbWUgZm9ybSBvZiBtb2R1bGUgaW50ZXJhY3Rpb24gb3Igc3RhdGUgbWFuYWdlbWVudCBhbmQgSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBUaGUgJiMzNDtyZWxvYWQgZG9pdCYjMzQ7IHRlcm1pbm9sb2d5IHN1Z2dlc3RzIHRoZXNlIGZ1bmN0aW9ucyBhcmUgd2hlcmUgdGhlIHJlYWwgd29yayBnZXRzIGRvbmUsIHBvc3NpYmx5IGFmdGVyIHNvbWUgcHJlLWZsaWdodCBjaGVja3Mgb3IgY29udGV4dCBzZXR1cC4gVGltZSB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIGFuZCBzdGFydCBncmVwcGluZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVsb2FkLipkb2l0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvZGV2LmM9NDg5PWRldmxpbmtfbmxfcmVsb2FkX2FjdGlvbnNfcGVyZm9ybWVkX3NuZChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywgdTMyIGFjdGlvbnNfcGVyZm9ybWVkLFxuLS1cbm5ldC9kZXZsaW5rL2Rldi5jLTUxOS1cbm5ldC9kZXZsaW5rL2Rldi5jOjUyMDppbnQgZGV2bGlua19ubF9yZWxvYWRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L2RldmxpbmsvZGV2LmMtNTIxLXtcbi0tXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jPTcwMj1jb25zdCBzdHJ1Y3QgZ2VubF9zcGxpdF9vcHMgZGV2bGlua19ubF9vcHNbNzVdID0ge1xuLS1cbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmMtOTk0LVx0XHQucHJlX2RvaXRcdD0gZGV2bGlua19ubF9wcmVfZG9pdF9kZXZfbG9jayxcbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmM6OTk1Olx0XHQuZG9pdFx0XHQ9IGRldmxpbmtfbmxfcmVsb2FkX2RvaXQsXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLTk5Ni1cdFx0LnBvc3RfZG9pdFx0PSBkZXZsaW5rX25sX3Bvc3RfZG9pdF9kZXZfbG9jayxcbi0tXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oPTkxPWludCBkZXZsaW5rX25sX3Jlc291cmNlX2R1bXBfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oLTkyLVx0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7XG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oOjkzOmludCBkZXZsaW5rX25sX3JlbG9hZF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xubmV0L2RldmxpbmsvbmV0bGlua19nZW4uaC05NC1pbnQgZGV2bGlua19ubF9wYXJhbV9nZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxOTAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgZGV2bGlua19ubF9yZWxvYWRfZG9pdGAgYW5kIGl0cyBJbnRlcmFjdGlvbiB3aXRoIGBERVZMSU5LX0FUVFJfUkVMT0FEX0xJTUlUU2AqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJJiMzOTttIGZvY3VzaW5nIG9uIGhvdyBgZGV2bGlua19ubF9yZWxvYWRfZG9pdGAgdXRpbGl6ZXMgdGhlIGBERVZMSU5LX0FUVFJfUkVMT0FEX0xJTUlUU2AgYXR0cmlidXRlLiBNeSBwcmltYXJ5IGludGVyZXN0IGlzIGluIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCBwYXJ0aWN1bGFybHkgaG93IHJlc291cmNlIGNvbnN0cmFpbnRzLCBpZiBhbnksIGFyZSBtYW5hZ2VkIGR1cmluZyBhIGRldmljZSByZWxvYWQgb3BlcmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJlbG9hZCBsaW1pdHMsIHJlcHJlc2VudGVkIGJ5IHRoaXMgYXR0cmlidXRlLCBpbXBhY3QgdGhlIG92ZXJhbGwgZXhlY3V0aW9uIG9mIHRoZSByZWxvYWQgcHJvY2VkdXJlLiBBcmUgdGhleSBzdHJpY3RseSBlbmZvcmNlZD8gQXJlIHRoZXkgYWR2aXNvcnk/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgaWYgdGhlIGxpbWl0cyBhcmUgZXhjZWVkZWQ/IEkgYWxzbyBuZWVkIHRvIGFzY2VydGFpbiB3aGF0IG90aGVyIGFzcGVjdHMgb2YgZGV2bGluayBhcmUgcmVsYXRlZCB0byB0aGlzIGF0dHJpYnV0ZSwgaXMgdGhpcyBhIHN0YW5kYWxvbmUgZmVhdHVyZSwgb3IgaXMgaXQgcmVsYXRlZCB0byB0aGluZ3MgbGlrZSBwb3dlciBjb25zdW1wdGlvbiwgZXRjPyBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgYERFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTYCBhdHRyaWJ1dGUgaXMgYmVpbmcgcHJvcGVybHkgdmFsaWRhdGVkIGFuZCB1c2VkIHRvIHByZXZlbnQgYW55IHBvdGVudGlhbCByZXNvdXJjZSBleGhhdXN0aW9uIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHJlbG9hZHMuIE15IHVsdGltYXRlIGdvYWwgaXMgdG8gZXZhbHVhdGUgaWYgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIG9yIHNlY3VyaXR5IGlzc3VlcyBleGlzdCBpbiB0aGlzIGNvbnRyb2wgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZGV2bGluay9kZXYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTIwOlx0aW50IGRldmxpbmtfbmxfcmVsb2FkX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiA1MjE6XHR7XG4gNTIyOlx0XHRzdHJ1Y3QgZGV2bGluayAqZGV2bGluayA9IGRldmxpbmtfbmxfY3R4KGluZm8pLVx1MDAzZWRldmxpbms7XG4gNTIzOlx0XHRlbnVtIGRldmxpbmtfcmVsb2FkX2FjdGlvbiBhY3Rpb247XG4gNTI0Olx0XHRlbnVtIGRldmxpbmtfcmVsb2FkX2xpbWl0IGxpbWl0O1xuIDUyNTpcdFx0c3RydWN0IG5ldCAqZGVzdF9uZXQgPSBOVUxMO1xuIDUyNjpcdFx0dTMyIGFjdGlvbnNfcGVyZm9ybWVkO1xuIDUyNzpcdFx0aW50IGVycjtcbiA1Mjg6XHRcbiA1Mjk6XHRcdGVyciA9IGRldmxpbmtfcmVzb3VyY2VzX3ZhbGlkYXRlKGRldmxpbmssIE5VTEwsIGluZm8pO1xuIDUzMDpcdFx0aWYgKGVycikge1xuIDUzMTpcdFx0XHROTF9TRVRfRVJSX01TRyhpbmZvLVx1MDAzZWV4dGFjaywgXCYjMzQ7cmVzb3VyY2VzIHNpemUgdmFsaWRhdGlvbiBmYWlsZWRcJiMzNDspO1xuIDUzMjpcdFx0XHRyZXR1cm4gZXJyO1xuIDUzMzpcdFx0fVxuIDUzNDpcdFxuIDUzNTpcdFx0YWN0aW9uID0gbmxhX2dldF91OF9kZWZhdWx0KGluZm8tXHUwMDNlYXR0cnNbREVWTElOS19BVFRSX1JFTE9BRF9BQ1RJT05dLFxuIDUzNjpcdFx0XHRcdFx0ICAgIERFVkxJTktfUkVMT0FEX0FDVElPTl9EUklWRVJfUkVJTklUKTtcbiA1Mzc6XHRcbiA1Mzg6XHRcdGlmICghZGV2bGlua19yZWxvYWRfYWN0aW9uX2lzX3N1cHBvcnRlZChkZXZsaW5rLCBhY3Rpb24pKSB7XG4gNTM5Olx0XHRcdE5MX1NFVF9FUlJfTVNHKGluZm8tXHUwMDNlZXh0YWNrLCBcJiMzNDtSZXF1ZXN0ZWQgcmVsb2FkIGFjdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXJcJiMzNDspO1xuIDU0MDpcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gNTQxOlx0XHR9XG4gNTQyOlx0XG4gNTQzOlx0XHRsaW1pdCA9IERFVkxJTktfUkVMT0FEX0xJTUlUX1VOU1BFQztcbiA1NDQ6XHRcdGlmIChpbmZvLVx1MDAzZWF0dHJzW0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSkge1xuIDU0NTpcdFx0XHRzdHJ1Y3QgbmxhX2JpdGZpZWxkMzIgbGltaXRzO1xuIDU0NjpcdFx0XHR1MzIgbGltaXRzX3NlbGVjdGVkO1xuIDU0NzpcdFxuIDU0ODpcdFx0XHRsaW1pdHMgPSBubGFfZ2V0X2JpdGZpZWxkMzIoaW5mby1cdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfUkVMT0FEX0xJTUlUU10pO1xuIDU0OTpcdFx0XHRsaW1pdHNfc2VsZWN0ZWQgPSBsaW1pdHMudmFsdWUgXHUwMDI2IGxpbWl0cy5zZWxlY3RvcjtcbiA1NTA6XHRcdFx0aWYgKCFsaW1pdHNfc2VsZWN0ZWQpIHtcbiA1NTE6XHRcdFx0XHROTF9TRVRfRVJSX01TRyhpbmZvLVx1MDAzZWV4dGFjaywgXCYjMzQ7SW52YWxpZCBsaW1pdCBzZWxlY3RlZFwmIzM0Oyk7XG4gNTUyOlx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTUzOlx0XHRcdH1cbiA1NTQ6XHRcdFx0Zm9yIChsaW1pdCA9IDAgOyBsaW1pdCBcdTAwM2M9IERFVkxJTktfUkVMT0FEX0xJTUlUX01BWCA7IGxpbWl0JiM0MzsmIzQzOylcbiA1NTU6XHRcdFx0XHRpZiAobGltaXRzX3NlbGVjdGVkIFx1MDAyNiBCSVQobGltaXQpKVxuIDU1NjpcdFx0XHRcdFx0YnJlYWs7XG4gNTU3Olx0XHRcdC8qIFVBUEkgZW5hYmxlcyBtdWx0aXNlbGVjdGlvbiwgYnV0IGN1cnJlbnRseSBpdCBpcyBub3QgdXNlZCAqL1xuIDU1ODpcdFx0XHRpZiAobGltaXRzX3NlbGVjdGVkICE9IEJJVChsaW1pdCkpIHtcbiA1NTk6XHRcdFx0XHROTF9TRVRfRVJSX01TRyhpbmZvLVx1MDAzZWV4dGFjaywgXCYjMzQ7TXVsdGlzZWxlY3Rpb24gb2YgbGltaXQgaXMgbm90IHN1cHBvcnRlZFwmIzM0Oyk7XG4gNTYwOlx0XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIDU2MTpcdFx0XHR9XG4gNTYyOlx0XHRcdGlmICghZGV2bGlua19yZWxvYWRfbGltaXRfaXNfc3VwcG9ydGVkKGRldmxpbmssIGxpbWl0KSkge1xuIDU2MzpcdFx0XHRcdE5MX1NFVF9FUlJfTVNHKGluZm8tXHUwMDNlZXh0YWNrLCBcJiMzNDtSZXF1ZXN0ZWQgbGltaXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyXCYjMzQ7KTtcbiA1NjQ6XHRcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gNTY1Olx0XHRcdH1cbiA1NjY6XHRcdFx0aWYgKGRldmxpbmtfcmVsb2FkX2NvbWJpbmF0aW9uX2lzX2ludmFsaWQoYWN0aW9uLCBsaW1pdCkpIHtcbiA1Njc6XHRcdFx0XHROTF9TRVRfRVJSX01TRyhpbmZvLVx1MDAzZWV4dGFjaywgXCYjMzQ7UmVxdWVzdGVkIGxpbWl0IGlzIGludmFsaWQgZm9yIHRoaXMgYWN0aW9uXCYjMzQ7KTtcbiA1Njg6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1Njk6XHRcdFx0fVxuIDU3MDpcdFx0fVxuIDU3MTpcdFx0aWYgKGluZm8tXHUwMDNlYXR0cnNbREVWTElOS19BVFRSX05FVE5TX1BJRF0gfHxcbiA1NzI6XHRcdCAgICBpbmZvLVx1MDAzZWF0dHJzW0RFVkxJTktfQVRUUl9ORVROU19GRF0gfHxcbiA1NzM6XHRcdCAgICBpbmZvLVx1MDAzZWF0dHJzW0RFVkxJTktfQVRUUl9ORVROU19JRF0pIHtcbiA1NzQ6XHRcdFx0ZGVzdF9uZXQgPSBkZXZsaW5rX25ldG5zX2dldChza2IsIGluZm8pO1xuIDU3NTpcdFx0XHRpZiAoSVNfRVJSKGRlc3RfbmV0KSlcbiA1NzY6XHRcdFx0XHRyZXR1cm4gUFRSX0VSUihkZXN0X25ldCk7XG4gNTc3Olx0XHRcdGlmICghbmV0X2VxKGRlc3RfbmV0LCBkZXZsaW5rX25ldChkZXZsaW5rKSkgXHUwMDI2XHUwMDI2XG4gNTc4Olx0XHRcdCAgICBhY3Rpb24gIT0gREVWTElOS19SRUxPQURfQUNUSU9OX0RSSVZFUl9SRUlOSVQpIHtcbiA1Nzk6XHRcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoaW5mby1cdTAwM2VleHRhY2ssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NjA5CgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDEyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJpYWdlIFZlcmRpY3Q6IFdvcnRoRnV6emluZyA9IFRydWUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhpcyBwYXRjaCB0b3VjaGVzIHRoZSBgbmV0L2RldmxpbmsvYCBzdWJzeXN0ZW0sIGFuZCB0aGF0IGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHNlZWluZyBtb2RpZmljYXRpb25zIHRvIGBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0YCwgYGRldmxpbmtfbmxfcmVsb2FkX2RvaXRgLCBhbmQgdGhlIGFzc29jaWF0ZWQgbmV0bGluayBwb2xpY3kgdGFibGVzLgoKVGhlIGtleSBjaGFuZ2VzIGludm9sdmUgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgIGluIGBuZXQvZGV2bGluay9wb3J0LmNgIG5vdyB1c2luZyBhIGR5bmFtaWNhbGx5IHBhcnNlZCBuZXN0ZWQgYXR0cmlidXRlIHN0cnVjdHVyZSwgYW5kIGEgZml4IGluIGBkZXZsaW5rX3JlbG9hZF9ubF9wb2xpY3lgIHdpdGhpbiBgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uY2AgcmVnYXJkaW5nIHZhbGlkYXRpb24gbGltaXRzLiBBZGRpdGlvbmFsbHksIGEgbmV3IHBvbGljeSBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGlzIG5vdyBpbiB1c2Ugd2l0aGluIGBkZXZsaW5rX3BvcnRfc2V0X25sX3BvbGljeWAuIFRoaXMgZHJvcHMgYE9QU1RBVEVgIGFuZCBhZGRzIGBNQVhfSU9fRVFTYC4KCk15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIGZ1enphYmxlPyYjMzQ7IFRoZSBhbnN3ZXIgaGluZ2VzIG9uIHdoZXRoZXIgdGhlIG1vZGlmaWVkIGNvZGUgaXMgKnJlYWNoYWJsZSouIEFuZCwgeWVzLCBgbmV0L2RldmxpbmsvYCBpcyBjb3JlIG5ldHdvcmtpbmcsIGEgbmV0bGluayBzdWJzeXN0ZW0uIEl0JiMzOTtzIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgaW4gc3RhbmRhcmQgUUVNVS9LVk0gZW52aXJvbm1lbnRzIHZpYSBuZXRkZXZzaW0gb3IgYW55IGRldmxpbmsgbmV0ZGV2aWNlLiBTbyB0aGUgY3JpdGVyaWEgYXJlIG1ldCBmb3IgJiMzNDtXb3J0aEZ1enppbmc9dHJ1ZSYjMzQ7LiBJdCYjMzk7cyBjb3JlIG5ldHdvcmtpbmcsIGFuZCBuZXRsaW5rIGlzIGEgZGVmaW5pdGUgYXR0YWNrIHN1cmZhY2UuCgpOb3csIGxldCYjMzk7cyBkZXRlcm1pbmUgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gYE5FVF9ERVZMSU5LYCBpcyB0aGUgcHJpbWFyeSBvbmUsIG9mIGNvdXJzZSwgYW5kIGBORVRERVZTSU1gIGxvb2tzIGxpa2UgYSBnb29kIGFkZGl0aW9uIHRvIGVuc3VyZSBkZXZsaW5rIGRldmljZXMgYXJlIHByZXNlbnQgZm9yIHRlc3RpbmcuIFNvLCBJIHdpbGwgaW5jbHVkZSBgTkVUX0RFVkxJTktgIGFuZCBgTkVUREVWU0lNYCBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgLgoKTmV4dCwgdGhlICpGb2N1c1N5bWJvbHMqLiBXZSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50IHRoZSBtb2RpZmllZCBsb2dpYyBvciBkaXJlY3RseSBleGVyY2lzZSBpdC4gQmFzZWQgb24gdGhlIHBhdGNoLCB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFyZToKCjEuICBgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0YCAodGhlIG5ldGxpbmsgZW50cnkgcG9pbnQgZm9yIHBvcnQgc2V0KQoyLiAgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgICh0aGUgcmVmYWN0b3JlZCBmdW5jdGlvbiBpbiBgbmV0L2RldmxpbmsvcG9ydC5jYCkKMy4gIGBkZXZsaW5rX25sX3JlbG9hZF9kb2l0YCAod2hvc2UgbmV0bGluayBwb2xpY3kgd2FzIG1vZGlmaWVkKS4KCkEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdCBgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gY2FsbGVkIGJ5IGEgbm9uLXN0YXRpYyAoYGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdGApIGVudHJ5IHBvaW50LiBCb3RoIGFyZSByZWxldmFudCwgYW5kIHNvIGlzIGBkZXZsaW5rX25sX3JlbG9hZF9kb2l0YC4KCkRvdWJsZS1jaGVja2luZyBhZ2FpbnN0IHRoZSBndWlkZWxpbmVzLCB3ZSBoYXZlOgoKKiAgICoqV29ydGhGdXp6aW5nKio6IFRydWUKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBcWyYjMzQ7TkVUX0RFVkxJTksmIzM0OywgJiMzNDtORVRERVZTSU0mIzM0O10KKiAgICoqRm9jdXNTeW1ib2xzKio6IFxbJiMzNDtkZXZsaW5rXF9wb3J0XF9mdW5jdGlvblxfc2V0JiMzNDssICYjMzQ7ZGV2bGlua1xfbmxcX3BvcnRcX3NldFxfZG9pdCYjMzQ7LCAmIzM0O2RldmxpbmtcX25sXF9yZWxvYWRcX2RvaXQmIzM0O10KCkV2ZXJ5dGhpbmcgY2hlY2tzIG91dC4gVGhlIGBuZXQvZGV2bGluay9gIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIG5ldGxpbmssIHdoaWNoIHByZXNlbnRzIGEgY2xlYXIgYXR0YWNrIHZlY3Rvci4gSSYjMzk7bSBjb25maWRlbnQgaW4gdGhlIHZlcmRpY3QuIFdlJiMzOTtyZSBnb2luZyB0byBmdXp6IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfREVWTElOSyYjMzQ7LAogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0JiMzNDssCiAgICAmIzM0O2RldmxpbmtfbmxfcG9ydF9zZXRfZG9pdCYjMzQ7LAogICAgJiMzNDtkZXZsaW5rX25sX3JlbG9hZF9kb2l0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgZGV2bGluayBuZXRsaW5rIGF0dHJpYnV0ZSBwb2xpY2llcyBhbmQgdGhlIGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQgcGFyc2luZyBsb2dpYyBmb3IgZ2VuZXJpYyBuZXRsaW5rIGNvbW1hbmRzIChwb3J0LXNldCBhbmQgcmVsb2FkKS4gVGhlIGNoYW5nZXMgYXJlIGluIGNvcmUgbmV0d29ya2luZyBuZXRsaW5rIGNvZGUsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgZ2VuZXJpYyBuZXRsaW5rIGRldmxpbmsgZmFtaWx5IG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZMSU5LJiMzNDssCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQmIzM0OywKICAgICYjMzQ7ZGV2bGlua19ubF9wb3J0X3NldF9kb2l0JiMzNDssCiAgICAmIzM0O2RldmxpbmtfbmxfcmVsb2FkX2RvaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBkZXZsaW5rIG5ldGxpbmsgYXR0cmlidXRlIHBvbGljaWVzIGFuZCB0aGUgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCBwYXJzaW5nIGxvZ2ljIGZvciBnZW5lcmljIG5ldGxpbmsgY29tbWFuZHMgKHBvcnQtc2V0IGFuZCByZWxvYWQpLiBUaGUgY2hhbmdlcyBhcmUgaW4gY29yZSBuZXR3b3JraW5nIG5ldGxpbmsgY29kZSwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBnZW5lcmljIG5ldGxpbmsgZGV2bGluayBmYW1pbHkgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyB1cGRhdGVzIHRoZSBkZXZsaW5rIE5ldGxpbmsgWUFNTCBzcGVjaWZpY2F0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sKSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYXV0by1nZW5lcmF0ZWQgTmV0bGluayBwb2xpY2llcyAobmV0L2RldmxpbmsvbmV0bGlua19nZW4uYywgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaCksIGFuZCByZWZhY3RvcnMgbmV0L2RldmxpbmsvcG9ydC5jIHRvIHVzZSB0aGUgZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgaW5zdGVhZCBvZiBhIGR1cGxpY2F0ZWQgc3RhdGljIHBvbGljeS5cblxuVGhlc2UgY2hhbmdlcyBzdHJpY3RseSBwZXJ0YWluIHRvIE5ldGxpbmsgbWVzc2FnZSBwb2xpY3kgdmFsaWRhdGlvbiwgc2NoZW1hIGRlc2NyaXB0aW9ucywgYW5kIGF0dHJpYnV0ZSBwYXJzaW5nLiBUaGUgYXJyYXkgYHRiYCBwYXNzZWQgdG8gYG5sYV9wYXJzZV9uZXN0ZWQoKWAgaXMgYXBwcm9wcmlhdGVseSBzaXplZCBhbmQgaW5pdGlhbGl6ZWQvemVyb2VkIGJ5IGBubGFfcGFyc2UoKWAuIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMsIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSBhcmUgaW50cm9kdWNlZC4gU3RhbmRhcmQgc2FuaXRpemVycyAoS0FTQU4pIGFuZCBOZXRsaW5rIHBhcnNlciBjaGVja3MgYXJlIHN1ZmZpY2llbnQ7IGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTQxYzQ3NDJmNzFkZmIzOWQxZTVkNjFiZjA2ZDJiMDRmZGM2MTY4ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDIwOjQ2OjEyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWwKaW5kZXggMzhiMTE5MGYzZDI2OS4uYWNiMjI4NTZhNmE4NSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sCkBAIC0xNzQsNiAmIzQzOzE3NCwxOCBAQCBkZWZpbml0aW9uczoKICAgICAgICAgdmFsdWU6IDEKICAgICAgIC0KICAgICAgICAgbmFtZTogZnctYWN0aXZhdGUKJiM0MzsgIC0KJiM0MzsgICAgdHlwZTogZW51bQomIzQzOyAgICBuYW1lOiByZWxvYWQtbGltaXQKJiM0MzsgICAgZW50cmllczoKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiB1bnNwZWMKJiM0MzsgICAgICAgIGRvYzogbm8gY29uc3RyYWludHMKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBuby1yZXNldAomIzQzOyAgICAgICAgZG9jOiAmZ3Q7LQomIzQzOyAgICAgICAgICBObyByZXNldCBhbGxvd2VkLCBubyBkb3duIHRpbWUgYWxsb3dlZCwgbm8gbGluayBmbGFwIGFuZCBubwomIzQzOyAgICAgICAgICBjb25maWd1cmF0aW9uIGlzIGxvc3QuCiAgIC0KICAgICB0eXBlOiBlbnVtCiAgICAgbmFtZTogcGFyYW0tY21vZGUKQEAgLTc3NSw3ICYjNDM7Nzg3LDcgQEAgYXR0cmlidXRlLXNldHM6CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlbG9hZC1saW1pdHMKICAgICAgICAgdHlwZTogYml0ZmllbGQzMgotICAgICAgICBlbnVtOiByZWxvYWQtYWN0aW9uCiYjNDM7ICAgICAgICBlbnVtOiByZWxvYWQtbGltaXQKICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZQogICAgICAgLQogICAgICAgICBuYW1lOiBkZXYtc3RhdHMKQEAgLTc5Myw2ICYjNDM7ODA1LDcgQEAgYXR0cmlidXRlLXNldHM6CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlbG9hZC1zdGF0cy1saW1pdAogICAgICAgICB0eXBlOiB1OAomIzQzOyAgICAgICAgZW51bTogcmVsb2FkLWxpbWl0CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlbG9hZC1zdGF0cy12YWx1ZQogICAgICAgICB0eXBlOiB1MzIKQEAgLTg0NSwxMyAmIzQzOzg1OCwxNCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogbGluZWNhcmQtc3VwcG9ydGVkLXR5cGVzCiAgICAgICAgIHR5cGU6IG5lc3QKICAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLWxpbmVjYXJkLXN1cHBvcnRlZC10eXBlcwotCi0gICAgICAjIFRPRE86IGZpbGwgaW4gdGhlIGF0dHJpYnV0ZXMgaW4gYmV0d2VlbgotCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogbmVzdGVkLWRldmxpbmsKJiM0MzsgICAgICAgIHR5cGU6IG5lc3QKJiM0MzsgICAgICAgIG11bHRpLWF0dHI6IHRydWUKJiM0MzsgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1uZXN0ZWQtZGV2bGluawogICAgICAgLQogICAgICAgICBuYW1lOiBzZWxmdGVzdHMKICAgICAgICAgdHlwZTogbmVzdAotICAgICAgICB2YWx1ZTogMTc2CiAgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1zZWxmdGVzdC1pZAogICAgICAgLQogICAgICAgICBuYW1lOiByYXRlLXR4LXByaW9yaXR5CkBAIC04OTgsNyAmIzQzOzkxMiw3IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgLQogICAgICAgICBuYW1lOiBwYXJlbnQtZGV2CiAgICAgICAgIHR5cGU6IG5lc3QKLSAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBhcmVudC1kZXYKJiM0MzsgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1uZXN0ZWQtZGV2bGluawogICAgICAgICBkb2M6IHwKICAgICAgICAgICBJZGVudGlmaWVzIHRoZSBkZXZsaW5rIGluc3RhbmNlIHdoaWNoIG93bnMgdGhlIHBhcmVudCByYXRlIG5vZGUuCiAgICAgICAgICAgVXNlZCB3aXRoIHJhdGUtc2V0IGFuZCByYXRlLW5ldyB0byBwYXJlbnQgYSByYXRlIG9iamVjdCB0byBhIG5vZGUgb24KQEAgLTk3OCw2ICYjNDM7OTkyLDQ5IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgICB0eXBlOiBiaXRmaWVsZDMyCiAgICAgICAgIGVudW06IHBvcnQtZm4tYXR0ci1jYXAKICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGRldmxpbmsKJiM0MzsgICAgICAgIHR5cGU6IG5lc3QKJiM0MzsgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1uZXN0ZWQtZGV2bGluawomIzQzOyAgICAgICAgZG9jOiBIYW5kbGUgb2YgdGhlIHBlZXIgZGV2bGluayBpbnN0YW5jZSBpbnN0YW50aWF0ZWQgZm9yIHRoaXMgZnVuY3Rpb24uCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogbWF4LWlvLWVxcwomIzQzOyAgICAgICAgdHlwZTogdTMyCiYjNDM7CiYjNDM7ICAtCiYjNDM7ICAgIG5hbWU6IGRsLXBvcnQtZnVuY3Rpb24tc2V0CiYjNDM7ICAgIHN1YnNldC1vZjogZGwtcG9ydC1mdW5jdGlvbgomIzQzOyAgICBkb2M6IHwKJiM0MzsgICAgICBQb3J0IGZ1bmN0aW9uIGF0dHJpYnV0ZXMgdGhhdCBjYW4gYmUgY29uZmlndXJlZDsgb3BzdGF0ZSBhbmQgdGhlCiYjNDM7ICAgICAgZGV2bGluayBoYW5kbGUgYXJlIHJlYWQtb25seS4KJiM0MzsgICAgYXR0cmlidXRlczoKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBody1hZGRyCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogc3RhdGUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBjYXBzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogbWF4LWlvLWVxcwomIzQzOwomIzQzOyAgLQomIzQzOyAgICBuYW1lOiBkbC1wb3J0LXNldAomIzQzOyAgICBzdWJzZXQtb2Y6IGRldmxpbmsKJiM0MzsgICAgZG9jOiBBdHRyaWJ1dGVzIGFjY2VwdGVkIGJ5IHRoZSBwb3J0LXNldCByZXF1ZXN0LgomIzQzOyAgICBhdHRyaWJ1dGVzOgomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGJ1cy1uYW1lCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogZGV2LW5hbWUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBpbmRleAomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHBvcnQtaW5kZXgKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwb3J0LXR5cGUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwb3J0LWZ1bmN0aW9uCiYjNDM7ICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtcG9ydC1mdW5jdGlvbi1zZXQKIAogICAtCiAgICAgbmFtZTogZGwtZHBpcGUtdGFibGVzCkBAIC0xMDA4LDYgJiM0MzsxMDY1LDggQEAgYXR0cmlidXRlLXNldHM6CiAgICAgICAgIG5hbWU6IGRwaXBlLXRhYmxlLXJlc291cmNlLWlkCiAgICAgICAtCiAgICAgICAgIG5hbWU6IGRwaXBlLXRhYmxlLXJlc291cmNlLXVuaXRzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogcGFkCiAKICAgLQogICAgIG5hbWU6IGRsLWRwaXBlLXRhYmxlLW1hdGNoZXMKQEAgLTEwNDIsNiAmIzQzOzExMDEsOCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogZHBpcGUtZW50cnktYWN0aW9uLXZhbHVlcwogICAgICAgLQogICAgICAgICBuYW1lOiBkcGlwZS1lbnRyeS1jb3VudGVyCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogcGFkCiAKICAgLQogICAgIG5hbWU6IGRsLWRwaXBlLWVudHJ5LW1hdGNoLXZhbHVlcwpAQCAtMTE4MCw2ICYjNDM7MTI0MSw4IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgICBuYW1lOiByZXNvdXJjZS11bml0CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlc291cmNlLW9jYwomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHBhZAogCiAgIC0KICAgICBuYW1lOiBkbC1yZXNvdXJjZS1saXN0CkBAIC0xMjA3LDYgJiM0MzsxMjcwLDcgQEAgYXR0cmlidXRlLXNldHM6CiAgICAgYXR0cmlidXRlczoKICAgICAgIC0KICAgICAgICAgbmFtZTogcmVnaW9uLXNuYXBzaG90CiYjNDM7ICAgICAgICBtdWx0aS1hdHRyOiB0cnVlCiAKICAgLQogICAgIG5hbWU6IGRsLXJlZ2lvbi1zbmFwc2hvdApAQCAtMTIyMSw2ICYjNDM7MTI4NSw3IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgIGF0dHJpYnV0ZXM6CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlZ2lvbi1jaHVuawomIzQzOyAgICAgICAgbXVsdGktYXR0cjogdHJ1ZQogCiAgIC0KICAgICBuYW1lOiBkbC1yZWdpb24tY2h1bmsKQEAgLTEyMzAsNiAmIzQzOzEyOTUsOCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rLWRhdGEKICAgICAgIC0KICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rLWFkZHIKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwYWQKIAogICAtCiAgICAgbmFtZTogZGwtZm1zZwpAQCAtMTI3MCw2ICYjNDM7MTMzNyw4IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgICBuYW1lOiBoZWFsdGgtcmVwb3J0ZXItYXV0by1kdW1wCiAgICAgICAtCiAgICAgICAgIG5hbWU6IGhlYWx0aC1yZXBvcnRlci1idXJzdC1wZXJpb2QKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwYWQKIAogICAtCiAgICAgbmFtZTogZGwtYXR0ci1zdGF0cwpAQCAtMTI4NCw2ICYjNDM7MTM1MywxMCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgIC0KICAgICAgICAgbmFtZTogc3RhdHMtcngtZHJvcHBlZAogICAgICAgICB0eXBlOiB1NjQKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwYWQKJiM0MzsgICAgICAgIHR5cGU6IHBhZAomIzQzOyAgICAgICAgdmFsdWU6IDYxCiAKICAgLQogICAgIG5hbWU6IGRsLXRyYXAtbWV0YWRhdGEKQEAgLTEzMDMsNiAmIzQzOzEzNzYsNyBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICBhdHRyaWJ1dGVzOgogICAgICAgLQogICAgICAgICBuYW1lOiBsaW5lY2FyZC10eXBlCiYjNDM7ICAgICAgICBtdWx0aS1hdHRyOiB0cnVlCiAKICAgLQogICAgIG5hbWU6IGRsLXNlbGZ0ZXN0LWlkCkBAIC0xMzMwLDYgJiM0MzsxNDA0LDUwIEBAIGF0dHJpYnV0ZS1zZXRzOgogICAtCiAgICAgbmFtZTogZGwtcGFyZW50LWRldgogICAgIHN1YnNldC1vZjogZGV2bGluawomIzQzOyAgICBkb2M6IHwKJiM0MzsgICAgICBEZXZsaW5rIGhhbmRsZSBhY2NlcHRlZCBhcyB0aGUgcGFyZW50LWRldiBpbnB1dDsgdGhlIG5ldG5zIGlkIHRoZQomIzQzOyAgICAgIGtlcm5lbCByZXBvcnRzIGJhY2sgaXMgbm90IGFjY2VwdGVkLCB0aGUgcGFyZW50IGlzIGFsd2F5cyByZXNvbHZlZAomIzQzOyAgICAgIGluIHRoZSBjYWxsZXImIzM5O3MgbmV0bnMuCiYjNDM7ICAgIGF0dHJpYnV0ZXM6CiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogYnVzLW5hbWUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBkZXYtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGluZGV4CiYjNDM7CiYjNDM7ICAtCiYjNDM7ICAgIG5hbWU6IGRsLXJhdGUtc2V0CiYjNDM7ICAgIHN1YnNldC1vZjogZGV2bGluawomIzQzOyAgICBkb2M6IEF0dHJpYnV0ZXMgYWNjZXB0ZWQgYnkgdGhlIHJhdGUtc2V0IGFuZCByYXRlLW5ldyByZXF1ZXN0cy4KJiM0MzsgICAgYXR0cmlidXRlczoKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBidXMtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGRldi1uYW1lCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogaW5kZXgKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiByYXRlLW5vZGUtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtdHgtc2hhcmUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiByYXRlLXR4LW1heAomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtdHgtcHJpb3JpdHkKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiByYXRlLXR4LXdlaWdodAomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtcGFyZW50LW5vZGUtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtdGMtYndzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogcGFyZW50LWRldgomIzQzOyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBhcmVudC1kZXYKJiM0MzsKJiM0MzsgIC0KJiM0MzsgICAgbmFtZTogZGwtbmVzdGVkLWRldmxpbmsKJiM0MzsgICAgc3Vic2V0LW9mOiBkZXZsaW5rCiAgICAgYXR0cmlidXRlczoKICAgICAgIC0KICAgICAgICAgbmFtZTogYnVzLW5hbWUKQEAgLTEzMzcsNiAmIzQzOzE0NTUsOCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogZGV2LW5hbWUKICAgICAgIC0KICAgICAgICAgbmFtZTogaW5kZXgKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBuZXRucy1pZAogCiBvcGVyYXRpb25zOgogICBlbnVtLW1vZGVsOiBkaXJlY3Rpb25hbApAQCAtMTM2Myw2ICYjNDM7MTQ4Myw3IEBAIG9wZXJhdGlvbnM6CiAgICAgICAgICAgICAtIGluZGV4CiAgICAgICAgICAgICAtIHJlbG9hZC1mYWlsZWQKICAgICAgICAgICAgIC0gZGV2LXN0YXRzCiYjNDM7ICAgICAgICAgICAgLSBuZXN0ZWQtZGV2bGluawogICAgICAgZHVtcDoKICAgICAgICAgcmVwbHk6ICpnZXQtcmVwbHkKIApAQCAtMTM4OCwxMyAmIzQzOzE1MDksMTIgQEAgb3BlcmF0aW9uczoKICAgICAgICAgcmVxdWVzdDoKICAgICAgICAgICBhdHRyaWJ1dGVzOiAqZGV2LWlkLWF0dHJzCiAgICAgICAgIHJlcGx5OgotICAgICAgICAgIHZhbHVlOiAzICAjIGR1ZSB0byBhIGJ1ZywgcG9ydCBkdW1wIHJldHVybnMgREVWTElOS19DTURfTkVXCiAgICAgICAgICAgYXR0cmlidXRlczogKnBvcnQtaWQtYXR0cnMKIAogICAgIC0KICAgICAgIG5hbWU6IHBvcnQtc2V0CiAgICAgICBkb2M6IFNldCBkZXZsaW5rIHBvcnQgaW5zdGFuY2VzLgotICAgICAgYXR0cmlidXRlLXNldDogZGV2bGluawomIzQzOyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXBvcnQtc2V0CiAgICAgICBkb250LXZhbGlkYXRlOiBbc3RyaWN0XQogICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXQogICAgICAgZG86CkBAIC0xOTc1LDYgJiM0MzsyMDk1LDcgQEAgb3BlcmF0aW9uczoKICAgICAgICAgICAgIC0gaW5kZXgKICAgICAgICAgICAgIC0gcG9ydC1pbmRleAogICAgICAgICAgICAgLSByZWdpb24tbmFtZQomIzQzOyAgICAgICAgICAgIC0gcmVnaW9uLWNodW5rcwogCiAgICAgLQogICAgICAgbmFtZTogcG9ydC1wYXJhbS1nZXQKQEAgLTIzMDUsNyAmIzQzOzI0MjYsNyBAQCBvcGVyYXRpb25zOgogICAgIC0KICAgICAgIG5hbWU6IHJhdGUtc2V0CiAgICAgICBkb2M6IFNldCByYXRlIGluc3RhbmNlcy4KLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmsKJiM0MzsgICAgICBhdHRyaWJ1dGUtc2V0OiBkbC1yYXRlLXNldAogICAgICAgZG9udC12YWxpZGF0ZTogW3N0cmljdF0KICAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV0KICAgICAgIGRvOgpAQCAtMjMyOCw3ICYjNDM7MjQ0OSw3IEBAIG9wZXJhdGlvbnM6CiAgICAgLQogICAgICAgbmFtZTogcmF0ZS1uZXcKICAgICAgIGRvYzogQ3JlYXRlIHJhdGUgaW5zdGFuY2VzLgotICAgICAgYXR0cmlidXRlLXNldDogZGV2bGluawomIzQzOyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXJhdGUtc2V0CiAgICAgICBkb250LXZhbGlkYXRlOiBbc3RyaWN0XQogICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXQogICAgICAgZG86CkBAIC0yMzc0LDE0ICYjNDM7MjQ5NSwyMiBAQCBvcGVyYXRpb25zOgogICAgICAgICBwb3N0OiBkZXZsaW5rLW5sLXBvc3QtZG9pdAogICAgICAgICByZXF1ZXN0OgogICAgICAgICAgIHZhbHVlOiA3OAotICAgICAgICAgIGF0dHJpYnV0ZXM6ICZhbXA7bGluZWNhcmQtaWQtYXR0cnMKJiM0MzsgICAgICAgICAgYXR0cmlidXRlczoKICAgICAgICAgICAgIC0gYnVzLW5hbWUKICAgICAgICAgICAgIC0gZGV2LW5hbWUKICAgICAgICAgICAgIC0gaW5kZXgKICAgICAgICAgICAgIC0gbGluZWNhcmQtaW5kZXgKICAgICAgICAgcmVwbHk6ICZhbXA7bGluZWNhcmQtZ2V0LXJlcGx5CiAgICAgICAgICAgdmFsdWU6IDgwCi0gICAgICAgICAgYXR0cmlidXRlczogKmxpbmVjYXJkLWlkLWF0dHJzCiYjNDM7ICAgICAgICAgIGF0dHJpYnV0ZXM6CiYjNDM7ICAgICAgICAgICAgLSBidXMtbmFtZQomIzQzOyAgICAgICAgICAgIC0gZGV2LW5hbWUKJiM0MzsgICAgICAgICAgICAtIGluZGV4CiYjNDM7ICAgICAgICAgICAgLSBsaW5lY2FyZC1pbmRleAomIzQzOyAgICAgICAgICAgIC0gbGluZWNhcmQtc3RhdGUKJiM0MzsgICAgICAgICAgICAtIGxpbmVjYXJkLXR5cGUKJiM0MzsgICAgICAgICAgICAtIGxpbmVjYXJkLXN1cHBvcnRlZC10eXBlcwomIzQzOyAgICAgICAgICAgIC0gbmVzdGVkLWRldmxpbmsKICAgICAgIGR1bXA6CiAgICAgICAgIHJlcXVlc3Q6CiAgICAgICAgICAgYXR0cmlidXRlczogKmRldi1pZC1hdHRycwpkaWZmIC0tZ2l0IGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uYyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmMKaW5kZXggZGVjMDAxMzMxNzhkMS4uNDNlZjY4NjRkNDYyZiAxMDA2NDQKLS0tIGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jCkBAIC01MiwxMSAmIzQzOzUyLDExIEBAIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcGFyZW50X2Rldl9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICYjNDM7IDFdCiAJW0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsICZhbXA7ZGV2bGlua19hdHRyX2luZGV4X3JhbmdlKSwKIH07CiAKLWNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQUyAmIzQzOyAxXSA9IHsKJiM0Mztjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeVtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTICYjNDM7IDFdID0gewogCVtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZLCB9LAogCVtERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURV0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTgsIDEpLAotCVtERVZMSU5LX1BPUlRfRk5fQVRUUl9PUFNUQVRFXSA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VOCwgMSksCiAJW0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDE1KSwKJiM0MzsJW0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sCiB9OwogCiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3JhdGVfdGNfYndzX25sX3BvbGljeVtERVZMSU5LX1JBVEVfVENfQVRUUl9CVyAmIzQzOyAxXSA9IHsKQEAgLTk3LDcgJiM0Mzs5Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX3BvcnRfc2V0X25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggJiM0MzsgMQogCVtERVZMSU5LX0FUVFJfSU5ERVhdID0gTkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VSU5ULCAmYW1wO2RldmxpbmtfYXR0cl9pbmRleF9yYW5nZSksCiAJW0RFVkxJTktfQVRUUl9QT1JUX0lOREVYXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LAogCVtERVZMSU5LX0FUVFJfUE9SVF9UWVBFXSA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VMTYsIDMpLAotCVtERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl0gPSBOTEFfUE9MSUNZX05FU1RFRChkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5KSwKJiM0MzsJW0RFVkxJTktfQVRUUl9QT1JUX0ZVTkNUSU9OXSA9IE5MQV9QT0xJQ1lfTkVTVEVEKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5KSwKIH07CiAKIC8qIERFVkxJTktfQ01EX1BPUlRfTkVXIC0gZG8gKi8KQEAgLTMzNCw3ICYjNDM7MzM0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfcmVsb2FkX25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggJiM0MzsgMV0KIAlbREVWTElOS19BVFRSX0RFVl9OQU1FXSA9IHsgLnR5cGUgPSBOTEFfTlVMX1NUUklORywgfSwKIAlbREVWTElOS19BVFRSX0lOREVYXSA9IE5MQV9QT0xJQ1lfRlVMTF9SQU5HRShOTEFfVUlOVCwgJmFtcDtkZXZsaW5rX2F0dHJfaW5kZXhfcmFuZ2UpLAogCVtERVZMSU5LX0FUVFJfUkVMT0FEX0FDVElPTl0gPSBOTEFfUE9MSUNZX1JBTkdFKE5MQV9VOCwgMSwgMiksCi0JW0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMig2KSwKJiM0MzsJW0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMigzKSwKIAlbREVWTElOS19BVFRSX05FVE5TX1BJRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSwKIAlbREVWTElOS19BVFRSX05FVE5TX0ZEXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LAogCVtERVZMSU5LX0FUVFJfTkVUTlNfSURdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sCmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oIGIvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaAppbmRleCBhNzBlMGU0NzY5YWE1Li45OWNjYWNjNjkzYjc2IDEwMDY0NAotLS0gYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmgKQEAgLTE0LDcgJiM0MzsxNCw3IEBACiAKIC8qIENvbW1vbiBuZXN0ZWQgdHlwZXMgKi8KIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BhcmVudF9kZXZfbmxfcG9saWN5W0RFVkxJTktfQVRUUl9JTkRFWCAmIzQzOyAxXTsKLWV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFMgJiM0MzsgMV07CiYjNDM7ZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVMgJiM0MzsgMV07CiBleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9yYXRlX3RjX2J3c19ubF9wb2xpY3lbREVWTElOS19SQVRFX1RDX0FUVFJfQlcgJiM0MzsgMV07CiBleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9zZWxmdGVzdF9pZF9ubF9wb2xpY3lbREVWTElOS19BVFRSX1NFTEZURVNUX0lEX0ZMQVNIICYjNDM7IDFdOwogCmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9wb3J0LmMgYi9uZXQvZGV2bGluay9wb3J0LmMKaW5kZXggMTUyOGYyZDE0OGRmYy4uODAzNDI5ZDlhMDA4OSAxMDA2NDQKLS0tIGEvbmV0L2RldmxpbmsvcG9ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kZXZsaW5rL3BvcnQuYwpAQCAtNiwxOSAmIzQzOzYsNiBAQAogCiAjaW5jbHVkZSAmIzM0O2RldmxfaW50ZXJuYWwuaCYjMzQ7CiAKLSNkZWZpbmUgREVWTElOS19QT1JUX0ZOX0NBUFNfVkFMSURfTUFTSyBcCi0JKF9CSVRVTChfX0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNfTUFYKSAtIDEpCi0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeVtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9NQVggJiM0MzsgMV0gPSB7Ci0JW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJdID0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSwKLQlbREVWTElOS19QT1JUX0ZOX0FUVFJfU1RBVEVdID0KLQkJTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIERFVkxJTktfUE9SVF9GTl9TVEFURV9JTkFDVElWRSwKLQkJCQkgREVWTElOS19QT1JUX0ZOX1NUQVRFX0FDVElWRSksCi0JW0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID0KLQkJTkxBX1BPTElDWV9CSVRGSUVMRDMyKERFVkxJTktfUE9SVF9GTl9DQVBTX1ZBTElEX01BU0spLAotCVtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sCi19OwotCiAjZGVmaW5lIEFTU0VSVF9ERVZMSU5LX1BPUlRfUkVHSVNURVJFRChkZXZsaW5rX3BvcnQpCQkJCVwKIAlXQVJOX09OX09OQ0UoIShkZXZsaW5rX3BvcnQpLSZndDtyZWdpc3RlcmVkKQogI2RlZmluZSBBU1NFUlRfREVWTElOS19QT1JUX05PVF9SRUdJU1RFUkVEKGRldmxpbmtfcG9ydCkJCQlcCkBAIC03ODIsMTEgJiM0Mzs3NjksMTEgQEAgc3RhdGljIGludCBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsCiAJCQkJICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLAogCQkJCSAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogewotCXN0cnVjdCBubGF0dHIgKnRiW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCAmIzQzOyAxXTsKJiM0MzsJc3RydWN0IG5sYXR0ciAqdGJbQVJSQVlfU0laRShkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSldOwogCWludCBlcnI7CiAKLQllcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9NQVgsIGF0dHIsCi0JCQkgICAgICAgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3ksIGV4dGFjayk7CiYjNDM7CWVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIEFSUkFZX1NJWkUodGIpIC0gMSwgYXR0ciwKJiM0MzsJCQkgICAgICAgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3ksIGV4dGFjayk7CiAJaWYgKGVyciAmbHQ7IDApIHsKIAkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O0ZhaWwgdG8gcGFyc2UgcG9ydCBmdW5jdGlvbiBhdHRyaWJ1dGVzJiMzNDspOwogCQlyZXR1cm4gZXJyOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ0MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIFVuaW5pdGlhbGl6ZWQgTWVtb3J5IFJpc2tzIGluIHRoZSBEZXZsaW5rIEtlcm5lbCBQYXRjaCBTZXJpZXMqKgoKT2theSwgc28gbXkgdGFzayBoZXJlIGlzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoaXMga2VybmVsIHBhdGNoIHNlcmllcyB3YXJyYW50cyBydW5uaW5nIEtNU0FOLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBpZGVudGlmeSBhbnkgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBMZXQmIzM5O3MgYnJlYWsgaXQgZG93bi4KCkZpcnN0LCBJIHNlZSB1cGRhdGVzIHRvIHRoZSBOZXRsaW5rIHNwZWNpZmljYXRpb24gWUFNTCBmb3IgZGV2bGluayAoYERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWxgKS4gVGhpcyBpcyBtb3N0bHkgc2NoZW1hIGFuZCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMsIGRlZmluaW5nIGF0dHJpYnV0ZXMsIGV0Yy4sIHNvIG9uIGl0cyBvd24sIHNlZW1zIHVubGlrZWx5IHRvIGludHJvZHVjZSBtZW1vcnkgc2FmZXR5IGlzc3Vlcy4gV2UgaGF2ZSBzY2hlbWEgZGVmaW5pdGlvbnMgdGhhdCBhcmUgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMsIGFuZCB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgY29kZSBmcm9tIHRob3NlIHNjaGVtYXMuCgpOZXh0LCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNgIGFuZCBgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaGAuIEl0IGFwcGVhcnMgdG8gYmUgZ2VuZXJhdGluZyBOZXRsaW5rIHBvbGljeSB1cGRhdGVzIGJhc2VkIG9uIHRoZSBZQU1MIGZpbGUuIEkgc2VlIHRoZSBwb2xpY3kgZGVmaW5pdGlvbnMgYmVpbmcgdXBkYXRlZDogYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lgIGJlY29taW5nIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAsIHdpdGggYSBub3RhYmxlIGluY3JlYXNlIGluIHNpemUgYW5kIGBkZXZsaW5rX3JlbG9hZF9ubF9wb2xpY3lgIGdldHMgYSBiaXRmaWVsZCB1cGRhdGUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGV4YWN0IGRpZmZzLCBidXQgdGhpcyBpcyBhdXRvLWdlbmVyYXRlZCBjb2RlLCBzbyBJJiMzOTtkIGJlIGxvb2tpbmcgZm9yIGEgbG9naWMgZXJyb3IgaW4gdGhlIGNvZGUgZ2VuZXJhdG9yIHdoaWNoIGlzIHVubGlrZWx5LCBidXQgcG9zc2libGUuCgpGaW5hbGx5LCB0aGUgY29yZSBvZiB0aGUgY29uY2VybiBsaWVzIGluIGBuZXQvZGV2bGluay9wb3J0LmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBwYXRjaCByZW1vdmVzIGEgaGFuZC13cml0dGVuIGBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeWAgYW5kIHJlcGxhY2VzIGl0IHdpdGggdGhlIGF1dG8tZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAuIFRoZSBjaGFuZ2UgaW52b2x2ZXMgYSBgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCgpYCBmdW5jdGlvbi4gSW5zaWRlIHRoaXMgZnVuY3Rpb24sIEkgc2VlIGBzdHJ1Y3QgbmxhdHRyICp0YltBUlJBWV9TSVpFKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5KV07YCBkZWNsYXJlZCwgYW5kIHRoZW4gYG5sYV9wYXJzZV9uZXN0ZWQodGIsIEFSUkFZX1NJWkUodGIpIC0gMSwgYXR0ciwgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3ksIGV4dGFjayk7YC4KClRoaXMgaXMgd2hlcmUgSSBmb2N1cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGB0YmAgaXMgaW5pdGlhbGl6ZWQgYW5kIHVzZWQuIGBubGFfcGFyc2VfbmVzdGVkYCBmaWxscyB0aGUgYHRiYCBhcnJheSwgd2hpY2gsIHdoZW4gcHJvcGVybHkgaW1wbGVtZW50ZWQsIHNob3VsZCBiZSBPSy4gSG93ZXZlciwgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgYXJndW1lbnRzIGZyb20gYG5sYV9wYXJzZV9uZXN0ZWRgIGFyZSB1c2VkLiBJZiBgdGJgIGlzIHBhcnRpYWxseSBpbml0aWFsaXplZCBhbmQgaXRzIGNvbnRlbnRzIGFyZSB1c2VkIHdpdGhvdXQgcHJvcGVyIGJvdW5kcyBjaGVja3Mgb3IgaW5pdGlhbGl6YXRpb24gY2hlY2tzIGVsc2V3aGVyZSwgdGhhdCBjb3VsZCBiZSBhIHByb2JsZW0uIE15IHByaW1hcnkgZm9jdXMgaXMgdG8gdmVyaWZ5IHRoYXQgYHRiYCBpcyBmdWxseSBpbml0aWFsaXplZCBieSBgbmxhX3BhcnNlX25lc3RlZGAgb3IgdGhhdCBhbnkgdW5pbml0aWFsaXplZCBwYXJ0cyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCgpUaGVyZWZvcmUsIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBuZXQvZGV2bGluay9wb3J0LmNgIGFyb3VuZCBgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCgpYC4gSSB3aWxsIHVzZSBgZ3JlcHBlcmAgb3Igc2ltcGx5IHJlYWQgdGhlIGNvZGUgYXJvdW5kIHRoYXQgYXJlYSB0byB2ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3IgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbnMgZHVlIHRvIGNoYW5nZXMgaW4gdGhlIGRhdGEgc3RydWN0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kZXZsaW5rLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZGV2bGluay9wb3J0LmM9NjkzPXN0YXRpYyBpbnQgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3ZhbGlkYXRlKHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtNzY3LVxubmV0L2RldmxpbmsvcG9ydC5jOjc2ODpzdGF0aWMgaW50IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqcG9ydCxcbm5ldC9kZXZsaW5rL3BvcnQuYy03NjktXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jPTgyMD1pbnQgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jLTgzNy1cbm5ldC9kZXZsaW5rL3BvcnQuYzo4Mzg6XHRcdGVyciA9IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoZGV2bGlua19wb3J0LCBhdHRyLCBleHRhY2spO1xubmV0L2RldmxpbmsvcG9ydC5jLTgzOS1cdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc3MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHByb2Nlc3NpbmcgdGhlIGNvZGUgbXlzZWxmOgoKKipEZWx2aW5nIGludG8gRGV2bGluayBQb3J0IENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byBgbmV0L2RldmxpbmsvcG9ydC5jYCwgc3BlY2lmaWNhbGx5IGxpbmVzIDc2MCB0byA4MjAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaW1wbGVtZW50ZWQgaW4gdGhpcyBzZWN0aW9uLCBsaWtlbHkgaW52b2x2aW5nIHRoZSBjb25maWd1cmF0aW9uIG9yIG1hbmlwdWxhdGlvbiBvZiBhIGRldmxpbmsgcG9ydC4gSSYjMzk7bSBpbW1lZGlhdGVseSBleHBlY3RpbmcgdG8gc2VlIGRldGFpbHMgYXJvdW5kIHNldHRpbmcgb3IgcmV0cmlldmluZyBwcm9wZXJ0aWVzLCBoYW5kbGluZyBzcGVjaWZpYyBjb21tYW5kcywgb3IgcG90ZW50aWFsbHkgZXZlbiBtYW5hZ2luZyB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgdGhyb3VnaCB0aGlzIHBvcnQuIEJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIHRoaXMgbGlrZWx5IGludm9sdmVzIGNoZWNraW5nIHBlcm1pc3Npb25zIG9yIHZhcmlvdXMgcGFyYW1ldGVycyB0byBlc3RhYmxpc2ggdGhlIGNvcnJlY3QgY29uZGl0aW9ucyBmb3IgYWNjZXNzLCBoYW5kbGluZyBlcnJvciBjb25kaXRpb25zLCBhbmQgbWFuYWdpbmcgbG9ja3MgdG8gZW5zdXJlIHRocmVhZCBzYWZldHkgd2hlbiBtb2RpZnlpbmcgc2hhcmVkIGRhdGEuIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBob3cgdGhleSBoYW5kbGUgZGlmZmVyZW50IHBvcnQgdHlwZXMgb3Igb3BlcmF0aW9uYWwgc3RhdGVzLCBhcyB0aGVzZSBhcmUgZnJlcXVlbnRseSB0aGUgc291cmNlcyBvZiBzdWJ0bGUgYnVncywgZGVwZW5kaW5nIG9uIHRoZSBwYXJ0aWN1bGFyIGRyaXZlci4gSSYjMzk7bSBhbHNvIGFudGljaXBhdGluZyBzb21lIGludGVyYWN0aW9uIHdpdGggbmV0bGluayBtZXNzYWdlcyBvciBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcywgZ2l2ZW4gdGhlIG5hdHVyZSBvZiBkZXZsaW5rLiBUaGlzIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHBpY3R1cmUgb2YgaG93IHRoZXNlIHBvcnRzIGFyZSBpbml0aWFsaXplZCBhbmQgd2hhdCBzb3J0IG9mIGN1c3RvbWl6YXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBJJiMzOTtsbCBiZSBsb29raW5nIGNhcmVmdWxseSBhdCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIHBhc3NlZCBhcm91bmQsIGJlY2F1c2UsIGRlcGVuZGluZyBvbiB0aGUgYXJjaGl0ZWN0dXJlLCB0aGVyZSBjb3VsZCBiZSBpbnRlcmVzdGluZyBvcHRpbWl6YXRpb25zIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGRldGFpbHMgaW4gdGhlIGRlc2lnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZGV2bGluay9wb3J0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc2MDpcdFx0ICAgICFvcHMtXHUwMDNlcG9ydF9mbl9tYXhfaW9fZXFzX3NldCkge1xuIDc2MTpcdFx0XHROTF9TRVRfRVJSX01TR19BVFRSKGV4dGFjaywgdGJbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU10sXG4gNzYyOlx0XHRcdFx0XHQgICAgXCYjMzQ7RnVuY3Rpb24gZG9lcyBub3Qgc3VwcG9ydCBtYXhfaW9fZXFzIHNldHRpbmdcJiMzNDspO1xuIDc2MzpcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gNzY0Olx0XHR9XG4gNzY1Olx0XHRyZXR1cm4gMDtcbiA3NjY6XHR9XG4gNzY3Olx0XG4gNzY4Olx0c3RhdGljIGludCBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsXG4gNzY5Olx0XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4gNzcwOlx0XHRcdFx0XHQgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiA3NzE6XHR7XG4gNzcyOlx0XHRzdHJ1Y3QgbmxhdHRyICp0YltBUlJBWV9TSVpFKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5KV07XG4gNzczOlx0XHRpbnQgZXJyO1xuIDc3NDpcdFxuIDc3NTpcdFx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgQVJSQVlfU0laRSh0YikgLSAxLCBhdHRyLFxuIDc3NjpcdFx0XHRcdCAgICAgICBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSwgZXh0YWNrKTtcbiA3Nzc6XHRcdGlmIChlcnIgXHUwMDNjIDApIHtcbiA3Nzg6XHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtGYWlsIHRvIHBhcnNlIHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlc1wmIzM0Oyk7XG4gNzc5Olx0XHRcdHJldHVybiBlcnI7XG4gNzgwOlx0XHR9XG4gNzgxOlx0XG4gNzgyOlx0XHRlcnIgPSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fdmFsaWRhdGUocG9ydCwgdGIsIGV4dGFjayk7XG4gNzgzOlx0XHRpZiAoZXJyKVxuIDc4NDpcdFx0XHRyZXR1cm4gZXJyO1xuIDc4NTpcdFxuIDc4NjpcdFx0YXR0ciA9IHRiW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJdO1xuIDc4NzpcdFx0aWYgKGF0dHIpIHtcbiA3ODg6XHRcdFx0ZXJyID0gZGV2bGlua19wb3J0X2Z1bmN0aW9uX2h3X2FkZHJfc2V0KHBvcnQsIGF0dHIsIGV4dGFjayk7XG4gNzg5Olx0XHRcdGlmIChlcnIpXG4gNzkwOlx0XHRcdFx0cmV0dXJuIGVycjtcbiA3OTE6XHRcdH1cbiA3OTI6XHRcbiA3OTM6XHRcdGF0dHIgPSB0YltERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTXTtcbiA3OTQ6XHRcdGlmIChhdHRyKSB7XG4gNzk1Olx0XHRcdGVyciA9IGRldmxpbmtfcG9ydF9mbl9jYXBzX3NldChwb3J0LCBhdHRyLCBleHRhY2spO1xuIDc5NjpcdFx0XHRpZiAoZXJyKVxuIDc5NzpcdFx0XHRcdHJldHVybiBlcnI7XG4gNzk4Olx0XHR9XG4gNzk5Olx0XG4gODAwOlx0XHRhdHRyID0gdGJbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU107XG4gODAxOlx0XHRpZiAoYXR0cikge1xuIDgwMjpcdFx0XHRlcnIgPSBkZXZsaW5rX3BvcnRfZm5fbWF4X2lvX2Vxc19zZXQocG9ydCwgYXR0ciwgZXh0YWNrKTtcbiA4MDM6XHRcdFx0aWYgKGVycilcbiA4MDQ6XHRcdFx0XHRyZXR1cm4gZXJyO1xuIDgwNTpcdFx0fVxuIDgwNjpcdFxuIDgwNzpcdFx0LyogS2VlcCB0aGlzIGFzIHRoZSBsYXN0IGZ1bmN0aW9uIGF0dHJpYnV0ZSBzZXQsIHNvIHRoYXQgd2hlblxuIDgwODpcdFx0ICogbXVsdGlwbGUgcG9ydCBmdW5jdGlvbiBhdHRyaWJ1dGVzIGFyZSBzZXQgYWxvbmcgd2l0aCBzdGF0ZSxcbiA4MDk6XHRcdCAqIFRob3NlIGNhbiBiZSBhcHBsaWVkIGZpcnN0IGJlZm9yZSBhY3RpdmF0aW5nIHRoZSBzdGF0ZS5cbiA4MTA6XHRcdCAqL1xuIDgxMTpcdFx0YXR0ciA9IHRiW0RFVkxJTktfUE9SVF9GTl9BVFRSX1NUQVRFXTtcbiA4MTI6XHRcdGlmIChhdHRyKVxuIDgxMzpcdFx0XHRlcnIgPSBkZXZsaW5rX3BvcnRfZm5fc3RhdGVfc2V0KHBvcnQsIGF0dHIsIGV4dGFjayk7XG4gODE0Olx0XG4gODE1Olx0XHRpZiAoIWVycilcbiA4MTY6XHRcdFx0ZGV2bGlua19wb3J0X25vdGlmeShwb3J0LCBERVZMSU5LX0NNRF9QT1JUX05FVyk7XG4gODE3Olx0XHRyZXR1cm4gZXJyO1xuIDgxODpcdH1cbiA4MTk6XHRcbiA4MjA6XHRpbnQgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gODIxOlx0e1xuIDgyMjpcdFx0c3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0ID0gZGV2bGlua19ubF9jdHgoaW5mbyktXHUwMDNlZGV2bGlua19wb3J0O1xuIDgyMzpcdFx0aW50IGVycjtcbiA4MjQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTEyOAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGxpbmsgQXR0cmlidXRlIFBhcnNpbmcgTG9naWMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBubGFfcGFyc2VfbmVzdGVkYCBpcyBiZWluZyB1c2VkIGhlcmUsIGFuZCBpdCBsb29rcyBsaWtlIGl0IGluaXRpYWxpemVzIHRoZSBgdGJgIGFycmF5IGJ5IGNsZWFyaW5nIG9yIHNldHRpbmcgdGhlIHBvaW50ZXJzLiBTcGVjaWZpY2FsbHksIGBubGFfcGFyc2VfbmVzdGVkYCBpcyBjYWxsZWQgd2l0aCBgdGJgIGFuZCBgQVJSQVlfU0laRSh0YikgLSAxYCwgYWxvbmcgd2l0aCBvdGhlciBwYXJhbWV0ZXJzIGxpa2UgYGF0dHJgLiBJIG5lZWQgdG8gY29uZmlybSBob3cgYG5sYV9wYXJzZV9uZXN0ZWRgIG9wZXJhdGVzIHVuZGVyIHRoZSBob29kLiBJdCBzZWVtcyB0byBiZSBlaXRoZXIgZG9pbmcgYSBgbWVtc2V0YCB0byB6ZXJvIG91dCBgdGJgIG9yIHVzaW5nIGBubGFfcGFyc2VgLgoKQSBkZWVwZXIgbG9vayBhdCBgbmxhX3BhcnNlYCBjb25maXJtcyBpdCYjMzk7cyBkb2luZyBhIGBtZW1zZXRgIG9uIGB0YmAgd2l0aCBgbWVtc2V0KHRiLCAwLCBzaXplb2Yoc3RydWN0IG5sYXR0ciAqKSAqIChtYXh0eXBlICYjNDM7IDEpKWAuIEluIHRoaXMgY29udGV4dCwgdGhlIHNpemUgb2YgdGhlIGB0YmAgYXJyYXksIGBBUlJBWV9TSVpFKHRiKWAsIGlzIGVxdWFsIHRvIGBERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTICYjNDM7IDFgLiBUaGlzIGltcGxpZXMgdGhhdCBgQVJSQVlfU0laRSh0YikgLSAxYCBpcyB0aGVuIGBERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTYC4gU28sIGB0YlswXWAgdXAgdG8gYHRiW0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdYCBzaG91bGQgYmUgZ2V0dGluZyB6ZXJvZWQgb3V0LCBhbmQgdGhlbiBwb3B1bGF0ZWQgYnkgYG5sYV9wYXJzZWAuCgpOZXh0LCBJJiMzOTtsbCBleGFtaW5lIHRoZSBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGRlZmluaXRpb24sIGZvdW5kIGluIGBuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jYC4gSXQmIzM5O3MgYSBgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3lgIGFycmF5IHdpdGggYSBzaXplIG9mIGBbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRUyAmIzQzOyAxXWAuCgpOb3csIEkgbmVlZCB0byBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaW5kZXggYWNjZXNzIHRvIGFsbCBlbGVtZW50cyBpbiBgdGJgIGFyZSB3aXRoaW4gYWNjZXB0YWJsZSBib3VuZHMsIGFuZCBpdCBsb29rcyBsaWtlIGl0IGlzLiBIZXJlIGFyZSB0aGUgYXR0cmlidXRlcyB0aGF0IHNlZW0gdG8gYmUgcmVsZXZhbnQ6IGBERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSYCAodmFsdWUgMSksIGBERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTYCAodmFsdWUgMyksIGBERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTYCAodmFsdWUgNCksIGFuZCBgREVWTElOS19QT1JUX0ZOX0FUVFJfU1RBVEVgICh2YWx1ZSAyKS4gQWxsIHRoZSBpbmRpY2VzIGFyZSB3aXRoaW4gdGhlIHJhbmdlIEkmIzM5O3ZlIGNhbGN1bGF0ZWQsIHVwIHRvIGBERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTYC4KCkZpbmFsbHksIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIHJldmlldyB0aGUgZW51bSB2YWx1ZXMgb2YgYERFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSXypgIHRvIHZlcmlmeSB0aGV5IGFsaWduIHdpdGggdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCB3aGljaCBJJiMzOTtsbCBmaW5kIGluIGBpbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7REVWTElOS19QT1JUX0ZOX0FUVFJfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oPTcyMT1lbnVtIGRldmxpbmtfcG9ydF9mbl9hdHRyX2NhcCB7XG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oOjcyMjpcdERFVkxJTktfUE9SVF9GTl9BVFRSX0NBUF9ST0NFX0JJVCxcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzIzOlx0REVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX01JR1JBVEFCTEVfQklULFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3MjQ6XHRERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBfSVBTRUNfQ1JZUFRPX0JJVCxcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzI1Olx0REVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX0lQU0VDX1BBQ0tFVF9CSVQsXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTcyNi1cbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmgtNzI3LVx0LyogQWRkIG5ldyBjYXBzIGFib3ZlICovXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oOjcyODpcdF9fREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQU19NQVgsXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTcyOS19O1xuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaC03MzAtXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oOjczMTojZGVmaW5lIERFVkxJTktfUE9SVF9GTl9DQVBfUk9DRSBfQklUVUwoREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX1JPQ0VfQklUKVxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaC03MzItI2RlZmluZSBERVZMSU5LX1BPUlRfRk5fQ0FQX01JR1JBVEFCTEUgXFxcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzMzOlx0X0JJVFVMKERFVkxJTktfUE9SVF9GTl9BVFRSX0NBUF9NSUdSQVRBQkxFX0JJVClcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzM0OiNkZWZpbmUgREVWTElOS19QT1JUX0ZOX0NBUF9JUFNFQ19DUllQVE8gX0JJVFVMKERFVkxJTktfUE9SVF9GTl9BVFRSX0NBUF9JUFNFQ19DUllQVE9fQklUKVxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3MzU6I2RlZmluZSBERVZMSU5LX1BPUlRfRk5fQ0FQX0lQU0VDX1BBQ0tFVCBfQklUVUwoREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX0lQU0VDX1BBQ0tFVF9CSVQpXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTczNi1cbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg9NzM3PWVudW0gZGV2bGlua19wb3J0X2Z1bmN0aW9uX2F0dHIge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmgtNzM5LVx0REVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfSFdfQUREUixcdC8qIGJpbmFyeSAqL1xuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3NDA6XHRERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURSxcdC8qIHU4ICovXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oOjc0MTpcdERFVkxJTktfUE9SVF9GTl9BVFRSX09QU1RBVEUsXHQvKiB1OCAqL1xuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3NDI6XHRERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTLFx0LyogYml0ZmllbGQzMiAqL1xuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3NDM6XHRERVZMSU5LX1BPUlRfRk5fQVRUUl9ERVZMSU5LLFx0LyogbmVzdGVkICovXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oOjc0NDpcdERFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVMsXHQvKiB1MzIgKi9cbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmgtNzQ1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAwMgoJCQkJCQkJb3V0cHV0OiAyMjEKCQkJCQkJCXRob3VnaHRzOiA0MTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBEZXZsaW5rIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBvbiByZWZpbmluZyB0aGUgaW50ZXJuYWwgd29ya2luZ3MgYW5kIGRvY3VtZW50YXRpb24gb2YgdGhlIERldmxpbmsgc3Vic3lzdGVtLCBwYXJ0aWN1bGFybHkgYXJvdW5kIGhvdyBpdCBoYW5kbGVzIE5ldGxpbmsgYXR0cmlidXRlcy4KCkZpcnN0LCB0aGUgY29yZSBvZiBpdCBpbnZvbHZlcyB1cGRhdGluZyB0aGUgYGRldmxpbmsueWFtbGAgc3BlY2lmaWNhdGlvbi4gSXQgc2VlbXMgbGlrZSB0aGUgZ29hbCBpcyB0byBtYWtlIHRoZSBzY2hlbWEgZGVmaW5pdGlvbnMgbW9yZSBwcmVjaXNlLCBlc3BlY2lhbGx5IGFyb3VuZCBhdHRyaWJ1dGVzIHJlbGF0ZWQgdG8gc2V0cywgcmVwbGllcywgbXVsdGktYXR0cmlidXRlIGZsYWdzLCBhbmQgZW51bXMuIFRoaXMgaXMgYSBnb29kIG1vdmU7IGEgbW9yZSBhY2N1cmF0ZSBZQU1MIHNwZWMgaXMgY3J1Y2lhbCBmb3IgZ2VuZXJhdGluZyBjb3JyZWN0IGFuZCBtYWludGFpbmFibGUgTmV0bGluayBjb2RlLgoKVGhlIHVwZGF0ZXMgdG8gdGhlIGF1dG8tZ2VuZXJhdGVkIGZpbGVzLCBgbmV0bGlua19nZW4uY2AgYW5kIGBuZXRsaW5rX2dlbi5oYCwgYXJlIGV4cGVjdGVkLiBUaGV54oCZcmUgZGlyZWN0bHkgZGVyaXZlZCBmcm9tIHRoZSBZQU1MIHNwZWMuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZSBmcm9tIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5YCB0byBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGFuZCB0aGUgYml0bWFzayBjb25zdHJhaW50IGZvciByZWxvYWQgbGltaXRzIGluIGBkZXZsaW5rX3JlbG9hZF9ubF9wb2xpY3lgIGFyZSBzaW1wbHkgdGhlIGRvd25zdHJlYW0gZWZmZWN0cyBvZiByZWZpbmluZyB0aGUgWUFNTC4KClRoZSBtb3N0IGludGVyZXN0aW5nIHBhcnQgaXMgaW4gYG5ldC9kZXZsaW5rL3BvcnQuY2AuIEl0JiMzOTtzIGNsZWFuaW5nIHVwIHRoZSBjb2RlIGJ5IGRlZHVwbGljYXRpbmcgdGhlIHBvbGljeSwgcmVwbGFjaW5nIHRoZSBtYW51YWxseSBkZWZpbmVkIGBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeWAgd2l0aCB0aGUgYXV0by1nZW5lcmF0ZWQgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5YCB3aXRoaW4gdGhlIGBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KClgIGZ1bmN0aW9uLiBUaGlzIGltcHJvdmVzIG1haW50YWluYWJpbGl0eSBhbmQgZW5zdXJlcyBjb25zaXN0ZW5jeS4KCk5vdywgbGV0JiMzOTtzIGFkZHJlc3MgdGhlIGNydWNpYWwgcXVlc3Rpb246IGFyZSB0aGVyZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/IEJhc2VkIG9uIG15IHJldmlldywgdGhlIHBhdGNoIHNlZW1zIHRvIGJlIHF1aXRlIHNhZmUuIE5vIG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aG91dCBpbml0aWFsaXphdGlvbiwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIGRvbiYjMzk7dCBzZWUgYW55IG9idmlvdXMgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlIGVpdGhlci4gVGhlIHVzZSBvZiBgbmxhX3BhcnNlX25lc3RlZGAgZm9yIHBhcnNpbmcgbmVzdGVkIE5ldGxpbmsgYXR0cmlidXRlcyBwcm92aWRlcyBhIHJvYnVzdCBzb2x1dGlvbiwgc2luY2UgaXQgemVyb2VzIG91dCB0aGUgYHRiYCBzdHJ1Y3QsIHdoaWNoIGlzIGVzc2VudGlhbC4gVGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBmb2N1c2VkIG9uIE5ldGxpbmsgYXR0cmlidXRlIHZhbGlkYXRpb24gYW5kIGRvY3VtZW50YXRpb24sIHdoaWNoIHNob3VsZCByZWR1Y2UgdGhlIGNoYW5jZSBmb3IgZXJyb3JzLiBFeGlzdGluZyBOZXRsaW5rIHBhcnNpbmcgbWVjaGFuaXNtcywgYW5kIEtBU0FOLCBzZWVtIHRvIGNhdGNoIGFueSBvdXQtb2YtYm91bmRzIGFjY2Vzcy4KClNvLCB0byBzdW1tYXJpemUgYW5kIGFuc3dlciBteSBvd24gcXVlc3Rpb25zOgoKKiAgIERvZXMgdGhpcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBOby4gVGhlIHBhdGNoIGxvb2tzIHZlcnkgc2FmZSBvbiB0aGF0IGZyb250LgoqICAgVGhlIHN0YW5kYXJkIEtBU0FOIGFuZCBVQlNBTiBidWlsZHMgc2hvdWxkIGVhc2lseSBiZSBhYmxlIHRvIGRldGVjdCBhbnkgYnVmZmVyIG92ZXJydW5zIG9yIHR5cGUgaXNzdWVzIGlmIHRoZXkgc29tZWhvdyBleGlzdGVkLgoqICAgTmVlZHNLTVNBTiBzaG91bGQgYmUgZmFsc2UuCgpGaW5hbGx5LCBqdXN0IHRvIGJlIHN1cmU6CgpgTmVlZHNLTVNBTmA6IGZhbHNlCmBLTVNBTlJlYXNvbmluZ2A6IFRoZSByZWFzb25pbmcgaXMgY2xlYXIuIEtBU0FOIGlzIHRoZSByaWdodCB0b29sIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyB1cGRhdGVzIHRoZSBkZXZsaW5rIE5ldGxpbmsgWUFNTCBzcGVjaWZpY2F0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sKSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYXV0by1nZW5lcmF0ZWQgTmV0bGluayBwb2xpY2llcyAobmV0L2RldmxpbmsvbmV0bGlua19nZW4uYywgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaCksIGFuZCByZWZhY3RvcnMgbmV0L2RldmxpbmsvcG9ydC5jIHRvIHVzZSB0aGUgZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgaW5zdGVhZCBvZiBhIGR1cGxpY2F0ZWQgc3RhdGljIHBvbGljeS5cblxuVGhlc2UgY2hhbmdlcyBzdHJpY3RseSBwZXJ0YWluIHRvIE5ldGxpbmsgbWVzc2FnZSBwb2xpY3kgdmFsaWRhdGlvbiwgc2NoZW1hIGRlc2NyaXB0aW9ucywgYW5kIGF0dHJpYnV0ZSBwYXJzaW5nLiBUaGUgYXJyYXkgYHRiYCBwYXNzZWQgdG8gYG5sYV9wYXJzZV9uZXN0ZWQoKWAgaXMgYXBwcm9wcmlhdGVseSBzaXplZCBhbmQgaW5pdGlhbGl6ZWQvemVyb2VkIGJ5IGBubGFfcGFyc2UoKWAuIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMsIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSBhcmUgaW50cm9kdWNlZC4gU3RhbmRhcmQgc2FuaXRpemVycyAoS0FTQU4pIGFuZCBOZXRsaW5rIHBhcnNlciBjaGVja3MgYXJlIHN1ZmZpY2llbnQ7IGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIHVwZGF0ZXMgdGhlIGRldmxpbmsgTmV0bGluayBZQU1MIHNwZWNpZmljYXRpb24gKERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWwpIGFuZCB0aGUgY29ycmVzcG9uZGluZyBhdXRvLWdlbmVyYXRlZCBOZXRsaW5rIHBvbGljaWVzIChuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLCBuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oKSwgYW5kIHJlZmFjdG9ycyBuZXQvZGV2bGluay9wb3J0LmMgdG8gdXNlIHRoZSBnZW5lcmF0ZWQgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5YCBpbnN0ZWFkIG9mIGEgZHVwbGljYXRlZCBzdGF0aWMgcG9saWN5LlxuXG5UaGVzZSBjaGFuZ2VzIHN0cmljdGx5IHBlcnRhaW4gdG8gTmV0bGluayBtZXNzYWdlIHBvbGljeSB2YWxpZGF0aW9uLCBzY2hlbWEgZGVzY3JpcHRpb25zLCBhbmQgYXR0cmlidXRlIHBhcnNpbmcuIFRoZSBhcnJheSBgdGJgIHBhc3NlZCB0byBgbmxhX3BhcnNlX25lc3RlZCgpYCBpcyBhcHByb3ByaWF0ZWx5IHNpemVkIGFuZCBpbml0aWFsaXplZC96ZXJvZWQgYnkgYG5sYV9wYXJzZSgpYC4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSByZWFkcywgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIGFyZSBpbnRyb2R1Y2VkLiBTdGFuZGFyZCBzYW5pdGl6ZXJzIChLQVNBTikgYW5kIE5ldGxpbmsgcGFyc2VyIGNoZWNrcyBhcmUgc3VmZmljaWVudDsgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjQ2OjEzLjE2NTMwODc1NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NjgxNDY1MzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9ERVZMSU5LXCIsXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0XCIsXG4gICAgXCJkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRcIixcbiAgICBcImRldmxpbmtfbmxfcmVsb2FkX2RvaXRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyB1cGRhdGVzIHRoZSBkZXZsaW5rIE5ldGxpbmsgWUFNTCBzcGVjaWZpY2F0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sKSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYXV0by1nZW5lcmF0ZWQgTmV0bGluayBwb2xpY2llcyAobmV0L2RldmxpbmsvbmV0bGlua19nZW4uYywgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaCksIGFuZCByZWZhY3RvcnMgbmV0L2RldmxpbmsvcG9ydC5jIHRvIHVzZSB0aGUgZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgaW5zdGVhZCBvZiBhIGR1cGxpY2F0ZWQgc3RhdGljIHBvbGljeS5cXG5cXG5UaGVzZSBjaGFuZ2VzIHN0cmljdGx5IHBlcnRhaW4gdG8gTmV0bGluayBtZXNzYWdlIHBvbGljeSB2YWxpZGF0aW9uLCBzY2hlbWEgZGVzY3JpcHRpb25zLCBhbmQgYXR0cmlidXRlIHBhcnNpbmcuIFRoZSBhcnJheSBgdGJgIHBhc3NlZCB0byBgbmxhX3BhcnNlX25lc3RlZCgpYCBpcyBhcHByb3ByaWF0ZWx5IHNpemVkIGFuZCBpbml0aWFsaXplZC96ZXJvZWQgYnkgYG5sYV9wYXJzZSgpYC4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSByZWFkcywgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIGFyZSBpbnRyb2R1Y2VkLiBTdGFuZGFyZCBzYW5pdGl6ZXJzIChLQVNBTikgYW5kIE5ldGxpbmsgcGFyc2VyIGNoZWNrcyBhcmUgc3VmZmljaWVudDsgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBkZXZsaW5rIG5ldGxpbmsgYXR0cmlidXRlIHBvbGljaWVzIGFuZCB0aGUgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCBwYXJzaW5nIGxvZ2ljIGZvciBnZW5lcmljIG5ldGxpbmsgY29tbWFuZHMgKHBvcnQtc2V0IGFuZCByZWxvYWQpLiBUaGUgY2hhbmdlcyBhcmUgaW4gY29yZSBuZXR3b3JraW5nIG5ldGxpbmsgY29kZSwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBnZW5lcmljIG5ldGxpbmsgZGV2bGluayBmYW1pbHkgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6MTMuMTY1MzEzMDM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU4MTE0MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5NDFjNDc0MmY3MWRmYjM5ZDFlNWQ2MWJmMDZkMmIwNGZkYzYxNjhkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDIwOjQ2OjEyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWwgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sXFxuaW5kZXggMzhiMTE5MGYzZDI2OS4uYWNiMjI4NTZhNmE4NSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbFxcbkBAIC0xNzQsNiArMTc0LDE4IEBAIGRlZmluaXRpb25zOlxcbiAgICAgICAgIHZhbHVlOiAxXFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBmdy1hY3RpdmF0ZVxcbisgIC1cXG4rICAgIHR5cGU6IGVudW1cXG4rICAgIG5hbWU6IHJlbG9hZC1saW1pdFxcbisgICAgZW50cmllczpcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHVuc3BlY1xcbisgICAgICAgIGRvYzogbm8gY29uc3RyYWludHNcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IG5vLXJlc2V0XFxuKyAgICAgICAgZG9jOiBcXHUwMDNlLVxcbisgICAgICAgICAgTm8gcmVzZXQgYWxsb3dlZCwgbm8gZG93biB0aW1lIGFsbG93ZWQsIG5vIGxpbmsgZmxhcCBhbmQgbm9cXG4rICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaXMgbG9zdC5cXG4gICAtXFxuICAgICB0eXBlOiBlbnVtXFxuICAgICBuYW1lOiBwYXJhbS1jbW9kZVxcbkBAIC03NzUsNyArNzg3LDcgQEAgYXR0cmlidXRlLXNldHM6XFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiByZWxvYWQtbGltaXRzXFxuICAgICAgICAgdHlwZTogYml0ZmllbGQzMlxcbi0gICAgICAgIGVudW06IHJlbG9hZC1hY3Rpb25cXG4rICAgICAgICBlbnVtOiByZWxvYWQtbGltaXRcXG4gICAgICAgICBlbnVtLWFzLWZsYWdzOiB0cnVlXFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBkZXYtc3RhdHNcXG5AQCAtNzkzLDYgKzgwNSw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogcmVsb2FkLXN0YXRzLWxpbWl0XFxuICAgICAgICAgdHlwZTogdThcXG4rICAgICAgICBlbnVtOiByZWxvYWQtbGltaXRcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IHJlbG9hZC1zdGF0cy12YWx1ZVxcbiAgICAgICAgIHR5cGU6IHUzMlxcbkBAIC04NDUsMTMgKzg1OCwxNCBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgICAgICBuYW1lOiBsaW5lY2FyZC1zdXBwb3J0ZWQtdHlwZXNcXG4gICAgICAgICB0eXBlOiBuZXN0XFxuICAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLWxpbmVjYXJkLXN1cHBvcnRlZC10eXBlc1xcbi1cXG4tICAgICAgIyBUT0RPOiBmaWxsIGluIHRoZSBhdHRyaWJ1dGVzIGluIGJldHdlZW5cXG4tXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBuZXN0ZWQtZGV2bGlua1xcbisgICAgICAgIHR5cGU6IG5lc3RcXG4rICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXFxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLW5lc3RlZC1kZXZsaW5rXFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBzZWxmdGVzdHNcXG4gICAgICAgICB0eXBlOiBuZXN0XFxuLSAgICAgICAgdmFsdWU6IDE3NlxcbiAgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1zZWxmdGVzdC1pZFxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogcmF0ZS10eC1wcmlvcml0eVxcbkBAIC04OTgsNyArOTEyLDcgQEAgYXR0cmlidXRlLXNldHM6XFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBwYXJlbnQtZGV2XFxuICAgICAgICAgdHlwZTogbmVzdFxcbi0gICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1wYXJlbnQtZGV2XFxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLW5lc3RlZC1kZXZsaW5rXFxuICAgICAgICAgZG9jOiB8XFxuICAgICAgICAgICBJZGVudGlmaWVzIHRoZSBkZXZsaW5rIGluc3RhbmNlIHdoaWNoIG93bnMgdGhlIHBhcmVudCByYXRlIG5vZGUuXFxuICAgICAgICAgICBVc2VkIHdpdGggcmF0ZS1zZXQgYW5kIHJhdGUtbmV3IHRvIHBhcmVudCBhIHJhdGUgb2JqZWN0IHRvIGEgbm9kZSBvblxcbkBAIC05NzgsNiArOTkyLDQ5IEBAIGF0dHJpYnV0ZS1zZXRzOlxcbiAgICAgICAgIHR5cGU6IGJpdGZpZWxkMzJcXG4gICAgICAgICBlbnVtOiBwb3J0LWZuLWF0dHItY2FwXFxuICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZVxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogZGV2bGlua1xcbisgICAgICAgIHR5cGU6IG5lc3RcXG4rICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtbmVzdGVkLWRldmxpbmtcXG4rICAgICAgICBkb2M6IEhhbmRsZSBvZiB0aGUgcGVlciBkZXZsaW5rIGluc3RhbmNlIGluc3RhbnRpYXRlZCBmb3IgdGhpcyBmdW5jdGlvbi5cXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IG1heC1pby1lcXNcXG4rICAgICAgICB0eXBlOiB1MzJcXG4rXFxuKyAgLVxcbisgICAgbmFtZTogZGwtcG9ydC1mdW5jdGlvbi1zZXRcXG4rICAgIHN1YnNldC1vZjogZGwtcG9ydC1mdW5jdGlvblxcbisgICAgZG9jOiB8XFxuKyAgICAgIFBvcnQgZnVuY3Rpb24gYXR0cmlidXRlcyB0aGF0IGNhbiBiZSBjb25maWd1cmVkOyBvcHN0YXRlIGFuZCB0aGVcXG4rICAgICAgZGV2bGluayBoYW5kbGUgYXJlIHJlYWQtb25seS5cXG4rICAgIGF0dHJpYnV0ZXM6XFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBody1hZGRyXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBzdGF0ZVxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogY2Fwc1xcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogbWF4LWlvLWVxc1xcbitcXG4rICAtXFxuKyAgICBuYW1lOiBkbC1wb3J0LXNldFxcbisgICAgc3Vic2V0LW9mOiBkZXZsaW5rXFxuKyAgICBkb2M6IEF0dHJpYnV0ZXMgYWNjZXB0ZWQgYnkgdGhlIHBvcnQtc2V0IHJlcXVlc3QuXFxuKyAgICBhdHRyaWJ1dGVzOlxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogYnVzLW5hbWVcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IGRldi1uYW1lXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBpbmRleFxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogcG9ydC1pbmRleFxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogcG9ydC10eXBlXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBwb3J0LWZ1bmN0aW9uXFxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBvcnQtZnVuY3Rpb24tc2V0XFxuIFxcbiAgIC1cXG4gICAgIG5hbWU6IGRsLWRwaXBlLXRhYmxlc1xcbkBAIC0xMDA4LDYgKzEwNjUsOCBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgICAgICBuYW1lOiBkcGlwZS10YWJsZS1yZXNvdXJjZS1pZFxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogZHBpcGUtdGFibGUtcmVzb3VyY2UtdW5pdHNcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHBhZFxcbiBcXG4gICAtXFxuICAgICBuYW1lOiBkbC1kcGlwZS10YWJsZS1tYXRjaGVzXFxuQEAgLTEwNDIsNiArMTEwMSw4IEBAIGF0dHJpYnV0ZS1zZXRzOlxcbiAgICAgICAgIG5hbWU6IGRwaXBlLWVudHJ5LWFjdGlvbi12YWx1ZXNcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IGRwaXBlLWVudHJ5LWNvdW50ZXJcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHBhZFxcbiBcXG4gICAtXFxuICAgICBuYW1lOiBkbC1kcGlwZS1lbnRyeS1tYXRjaC12YWx1ZXNcXG5AQCAtMTE4MCw2ICsxMjQxLDggQEAgYXR0cmlidXRlLXNldHM6XFxuICAgICAgICAgbmFtZTogcmVzb3VyY2UtdW5pdFxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogcmVzb3VyY2Utb2NjXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBwYWRcXG4gXFxuICAgLVxcbiAgICAgbmFtZTogZGwtcmVzb3VyY2UtbGlzdFxcbkBAIC0xMjA3LDYgKzEyNzAsNyBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgIGF0dHJpYnV0ZXM6XFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiByZWdpb24tc25hcHNob3RcXG4rICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXFxuIFxcbiAgIC1cXG4gICAgIG5hbWU6IGRsLXJlZ2lvbi1zbmFwc2hvdFxcbkBAIC0xMjIxLDYgKzEyODUsNyBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgIGF0dHJpYnV0ZXM6XFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiByZWdpb24tY2h1bmtcXG4rICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXFxuIFxcbiAgIC1cXG4gICAgIG5hbWU6IGRsLXJlZ2lvbi1jaHVua1xcbkBAIC0xMjMwLDYgKzEyOTUsOCBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgICAgICBuYW1lOiByZWdpb24tY2h1bmstZGF0YVxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rLWFkZHJcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHBhZFxcbiBcXG4gICAtXFxuICAgICBuYW1lOiBkbC1mbXNnXFxuQEAgLTEyNzAsNiArMTMzNyw4IEBAIGF0dHJpYnV0ZS1zZXRzOlxcbiAgICAgICAgIG5hbWU6IGhlYWx0aC1yZXBvcnRlci1hdXRvLWR1bXBcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IGhlYWx0aC1yZXBvcnRlci1idXJzdC1wZXJpb2RcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHBhZFxcbiBcXG4gICAtXFxuICAgICBuYW1lOiBkbC1hdHRyLXN0YXRzXFxuQEAgLTEyODQsNiArMTM1MywxMCBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IHN0YXRzLXJ4LWRyb3BwZWRcXG4gICAgICAgICB0eXBlOiB1NjRcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHBhZFxcbisgICAgICAgIHR5cGU6IHBhZFxcbisgICAgICAgIHZhbHVlOiA2MVxcbiBcXG4gICAtXFxuICAgICBuYW1lOiBkbC10cmFwLW1ldGFkYXRhXFxuQEAgLTEzMDMsNiArMTM3Niw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxcbiAgICAgYXR0cmlidXRlczpcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IGxpbmVjYXJkLXR5cGVcXG4rICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXFxuIFxcbiAgIC1cXG4gICAgIG5hbWU6IGRsLXNlbGZ0ZXN0LWlkXFxuQEAgLTEzMzAsNiArMTQwNCw1MCBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAtXFxuICAgICBuYW1lOiBkbC1wYXJlbnQtZGV2XFxuICAgICBzdWJzZXQtb2Y6IGRldmxpbmtcXG4rICAgIGRvYzogfFxcbisgICAgICBEZXZsaW5rIGhhbmRsZSBhY2NlcHRlZCBhcyB0aGUgcGFyZW50LWRldiBpbnB1dDsgdGhlIG5ldG5zIGlkIHRoZVxcbisgICAgICBrZXJuZWwgcmVwb3J0cyBiYWNrIGlzIG5vdCBhY2NlcHRlZCwgdGhlIHBhcmVudCBpcyBhbHdheXMgcmVzb2x2ZWRcXG4rICAgICAgaW4gdGhlIGNhbGxlcidzIG5ldG5zLlxcbisgICAgYXR0cmlidXRlczpcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IGJ1cy1uYW1lXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBkZXYtbmFtZVxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogaW5kZXhcXG4rXFxuKyAgLVxcbisgICAgbmFtZTogZGwtcmF0ZS1zZXRcXG4rICAgIHN1YnNldC1vZjogZGV2bGlua1xcbisgICAgZG9jOiBBdHRyaWJ1dGVzIGFjY2VwdGVkIGJ5IHRoZSByYXRlLXNldCBhbmQgcmF0ZS1uZXcgcmVxdWVzdHMuXFxuKyAgICBhdHRyaWJ1dGVzOlxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogYnVzLW5hbWVcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IGRldi1uYW1lXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBpbmRleFxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogcmF0ZS1ub2RlLW5hbWVcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHJhdGUtdHgtc2hhcmVcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHJhdGUtdHgtbWF4XFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiByYXRlLXR4LXByaW9yaXR5XFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiByYXRlLXR4LXdlaWdodFxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogcmF0ZS1wYXJlbnQtbm9kZS1uYW1lXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiByYXRlLXRjLWJ3c1xcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogcGFyZW50LWRldlxcbisgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1wYXJlbnQtZGV2XFxuK1xcbisgIC1cXG4rICAgIG5hbWU6IGRsLW5lc3RlZC1kZXZsaW5rXFxuKyAgICBzdWJzZXQtb2Y6IGRldmxpbmtcXG4gICAgIGF0dHJpYnV0ZXM6XFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBidXMtbmFtZVxcbkBAIC0xMzM3LDYgKzE0NTUsOCBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgICAgICBuYW1lOiBkZXYtbmFtZVxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogaW5kZXhcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IG5ldG5zLWlkXFxuIFxcbiBvcGVyYXRpb25zOlxcbiAgIGVudW0tbW9kZWw6IGRpcmVjdGlvbmFsXFxuQEAgLTEzNjMsNiArMTQ4Myw3IEBAIG9wZXJhdGlvbnM6XFxuICAgICAgICAgICAgIC0gaW5kZXhcXG4gICAgICAgICAgICAgLSByZWxvYWQtZmFpbGVkXFxuICAgICAgICAgICAgIC0gZGV2LXN0YXRzXFxuKyAgICAgICAgICAgIC0gbmVzdGVkLWRldmxpbmtcXG4gICAgICAgZHVtcDpcXG4gICAgICAgICByZXBseTogKmdldC1yZXBseVxcbiBcXG5AQCAtMTM4OCwxMyArMTUwOSwxMiBAQCBvcGVyYXRpb25zOlxcbiAgICAgICAgIHJlcXVlc3Q6XFxuICAgICAgICAgICBhdHRyaWJ1dGVzOiAqZGV2LWlkLWF0dHJzXFxuICAgICAgICAgcmVwbHk6XFxuLSAgICAgICAgICB2YWx1ZTogMyAgIyBkdWUgdG8gYSBidWcsIHBvcnQgZHVtcCByZXR1cm5zIERFVkxJTktfQ01EX05FV1xcbiAgICAgICAgICAgYXR0cmlidXRlczogKnBvcnQtaWQtYXR0cnNcXG4gXFxuICAgICAtXFxuICAgICAgIG5hbWU6IHBvcnQtc2V0XFxuICAgICAgIGRvYzogU2V0IGRldmxpbmsgcG9ydCBpbnN0YW5jZXMuXFxuLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmtcXG4rICAgICAgYXR0cmlidXRlLXNldDogZGwtcG9ydC1zZXRcXG4gICAgICAgZG9udC12YWxpZGF0ZTogW3N0cmljdF1cXG4gICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXVxcbiAgICAgICBkbzpcXG5AQCAtMTk3NSw2ICsyMDk1LDcgQEAgb3BlcmF0aW9uczpcXG4gICAgICAgICAgICAgLSBpbmRleFxcbiAgICAgICAgICAgICAtIHBvcnQtaW5kZXhcXG4gICAgICAgICAgICAgLSByZWdpb24tbmFtZVxcbisgICAgICAgICAgICAtIHJlZ2lvbi1jaHVua3NcXG4gXFxuICAgICAtXFxuICAgICAgIG5hbWU6IHBvcnQtcGFyYW0tZ2V0XFxuQEAgLTIzMDUsNyArMjQyNiw3IEBAIG9wZXJhdGlvbnM6XFxuICAgICAtXFxuICAgICAgIG5hbWU6IHJhdGUtc2V0XFxuICAgICAgIGRvYzogU2V0IHJhdGUgaW5zdGFuY2VzLlxcbi0gICAgICBhdHRyaWJ1dGUtc2V0OiBkZXZsaW5rXFxuKyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXJhdGUtc2V0XFxuICAgICAgIGRvbnQtdmFsaWRhdGU6IFtzdHJpY3RdXFxuICAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV1cXG4gICAgICAgZG86XFxuQEAgLTIzMjgsNyArMjQ0OSw3IEBAIG9wZXJhdGlvbnM6XFxuICAgICAtXFxuICAgICAgIG5hbWU6IHJhdGUtbmV3XFxuICAgICAgIGRvYzogQ3JlYXRlIHJhdGUgaW5zdGFuY2VzLlxcbi0gICAgICBhdHRyaWJ1dGUtc2V0OiBkZXZsaW5rXFxuKyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXJhdGUtc2V0XFxuICAgICAgIGRvbnQtdmFsaWRhdGU6IFtzdHJpY3RdXFxuICAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV1cXG4gICAgICAgZG86XFxuQEAgLTIzNzQsMTQgKzI0OTUsMjIgQEAgb3BlcmF0aW9uczpcXG4gICAgICAgICBwb3N0OiBkZXZsaW5rLW5sLXBvc3QtZG9pdFxcbiAgICAgICAgIHJlcXVlc3Q6XFxuICAgICAgICAgICB2YWx1ZTogNzhcXG4tICAgICAgICAgIGF0dHJpYnV0ZXM6IFxcdTAwMjZsaW5lY2FyZC1pZC1hdHRyc1xcbisgICAgICAgICAgYXR0cmlidXRlczpcXG4gICAgICAgICAgICAgLSBidXMtbmFtZVxcbiAgICAgICAgICAgICAtIGRldi1uYW1lXFxuICAgICAgICAgICAgIC0gaW5kZXhcXG4gICAgICAgICAgICAgLSBsaW5lY2FyZC1pbmRleFxcbiAgICAgICAgIHJlcGx5OiBcXHUwMDI2bGluZWNhcmQtZ2V0LXJlcGx5XFxuICAgICAgICAgICB2YWx1ZTogODBcXG4tICAgICAgICAgIGF0dHJpYnV0ZXM6ICpsaW5lY2FyZC1pZC1hdHRyc1xcbisgICAgICAgICAgYXR0cmlidXRlczpcXG4rICAgICAgICAgICAgLSBidXMtbmFtZVxcbisgICAgICAgICAgICAtIGRldi1uYW1lXFxuKyAgICAgICAgICAgIC0gaW5kZXhcXG4rICAgICAgICAgICAgLSBsaW5lY2FyZC1pbmRleFxcbisgICAgICAgICAgICAtIGxpbmVjYXJkLXN0YXRlXFxuKyAgICAgICAgICAgIC0gbGluZWNhcmQtdHlwZVxcbisgICAgICAgICAgICAtIGxpbmVjYXJkLXN1cHBvcnRlZC10eXBlc1xcbisgICAgICAgICAgICAtIG5lc3RlZC1kZXZsaW5rXFxuICAgICAgIGR1bXA6XFxuICAgICAgICAgcmVxdWVzdDpcXG4gICAgICAgICAgIGF0dHJpYnV0ZXM6ICpkZXYtaWQtYXR0cnNcXG5kaWZmIC0tZ2l0IGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uYyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNcXG5pbmRleCBkZWMwMDEzMzE3OGQxLi40M2VmNjg2NGQ0NjJmIDEwMDY0NFxcbi0tLSBhL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNcXG4rKysgYi9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jXFxuQEAgLTUyLDExICs1MiwxMSBAQCBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BhcmVudF9kZXZfbmxfcG9saWN5W0RFVkxJTktfQVRUUl9JTkRFWCArIDFdXFxuIFxcdFtERVZMSU5LX0FUVFJfSU5ERVhdID0gTkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VSU5ULCBcXHUwMDI2ZGV2bGlua19hdHRyX2luZGV4X3JhbmdlKSxcXG4gfTtcXG4gXFxuLWNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQUyArIDFdID0ge1xcbitjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeVtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTICsgMV0gPSB7XFxuIFxcdFtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZLCB9LFxcbiBcXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfU1RBVEVdID0gTkxBX1BPTElDWV9NQVgoTkxBX1U4LCAxKSxcXG4tXFx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX09QU1RBVEVdID0gTkxBX1BPTElDWV9NQVgoTkxBX1U4LCAxKSxcXG4gXFx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDE1KSxcXG4rXFx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXFxuIH07XFxuIFxcbiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3JhdGVfdGNfYndzX25sX3BvbGljeVtERVZMSU5LX1JBVEVfVENfQVRUUl9CVyArIDFdID0ge1xcbkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX3BvcnRfc2V0X25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggKyAxXFxuIFxcdFtERVZMSU5LX0FUVFJfSU5ERVhdID0gTkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VSU5ULCBcXHUwMDI2ZGV2bGlua19hdHRyX2luZGV4X3JhbmdlKSxcXG4gXFx0W0RFVkxJTktfQVRUUl9QT1JUX0lOREVYXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LFxcbiBcXHRbREVWTElOS19BVFRSX1BPUlRfVFlQRV0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTE2LCAzKSxcXG4tXFx0W0RFVkxJTktfQVRUUl9QT1JUX0ZVTkNUSU9OXSA9IE5MQV9QT0xJQ1lfTkVTVEVEKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3kpLFxcbitcXHRbREVWTElOS19BVFRSX1BPUlRfRlVOQ1RJT05dID0gTkxBX1BPTElDWV9ORVNURUQoZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3kpLFxcbiB9O1xcbiBcXG4gLyogREVWTElOS19DTURfUE9SVF9ORVcgLSBkbyAqL1xcbkBAIC0zMzQsNyArMzM0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfcmVsb2FkX25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggKyAxXVxcbiBcXHRbREVWTElOS19BVFRSX0RFVl9OQU1FXSA9IHsgLnR5cGUgPSBOTEFfTlVMX1NUUklORywgfSxcXG4gXFx0W0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsIFxcdTAwMjZkZXZsaW5rX2F0dHJfaW5kZXhfcmFuZ2UpLFxcbiBcXHRbREVWTElOS19BVFRSX1JFTE9BRF9BQ1RJT05dID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIDEsIDIpLFxcbi1cXHRbREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDYpLFxcbitcXHRbREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDMpLFxcbiBcXHRbREVWTElOS19BVFRSX05FVE5TX1BJRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcXG4gXFx0W0RFVkxJTktfQVRUUl9ORVROU19GRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcXG4gXFx0W0RFVkxJTktfQVRUUl9ORVROU19JRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcXG5kaWZmIC0tZ2l0IGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaCBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmhcXG5pbmRleCBhNzBlMGU0NzY5YWE1Li45OWNjYWNjNjkzYjc2IDEwMDY0NFxcbi0tLSBhL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmhcXG4rKysgYi9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oXFxuQEAgLTE0LDcgKzE0LDcgQEBcXG4gXFxuIC8qIENvbW1vbiBuZXN0ZWQgdHlwZXMgKi9cXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcGFyZW50X2Rldl9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICsgMV07XFxuLWV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFMgKyAxXTtcXG4rZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVMgKyAxXTtcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcmF0ZV90Y19id3NfbmxfcG9saWN5W0RFVkxJTktfUkFURV9UQ19BVFRSX0JXICsgMV07XFxuIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3NlbGZ0ZXN0X2lkX25sX3BvbGljeVtERVZMSU5LX0FUVFJfU0VMRlRFU1RfSURfRkxBU0ggKyAxXTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9kZXZsaW5rL3BvcnQuYyBiL25ldC9kZXZsaW5rL3BvcnQuY1xcbmluZGV4IDE1MjhmMmQxNDhkZmMuLjgwMzQyOWQ5YTAwODkgMTAwNjQ0XFxuLS0tIGEvbmV0L2RldmxpbmsvcG9ydC5jXFxuKysrIGIvbmV0L2RldmxpbmsvcG9ydC5jXFxuQEAgLTYsMTkgKzYsNiBAQFxcbiBcXG4gI2luY2x1ZGUgXFxcImRldmxfaW50ZXJuYWwuaFxcXCJcXG4gXFxuLSNkZWZpbmUgREVWTElOS19QT1JUX0ZOX0NBUFNfVkFMSURfTUFTSyBcXFxcXFxuLVxcdChfQklUVUwoX19ERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTX01BWCkgLSAxKVxcbi1cXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZnVuY3Rpb25fbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCArIDFdID0ge1xcbi1cXHRbREVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfSFdfQUREUl0gPSB7IC50eXBlID0gTkxBX0JJTkFSWSB9LFxcbi1cXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfU1RBVEVdID1cXG4tXFx0XFx0TkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIERFVkxJTktfUE9SVF9GTl9TVEFURV9JTkFDVElWRSxcXG4tXFx0XFx0XFx0XFx0IERFVkxJTktfUE9SVF9GTl9TVEFURV9BQ1RJVkUpLFxcbi1cXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQU10gPVxcbi1cXHRcXHROTEFfUE9MSUNZX0JJVEZJRUxEMzIoREVWTElOS19QT1JUX0ZOX0NBUFNfVkFMSURfTUFTSyksXFxuLVxcdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuLX07XFxuLVxcbiAjZGVmaW5lIEFTU0VSVF9ERVZMSU5LX1BPUlRfUkVHSVNURVJFRChkZXZsaW5rX3BvcnQpXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRXQVJOX09OX09OQ0UoIShkZXZsaW5rX3BvcnQpLVxcdTAwM2VyZWdpc3RlcmVkKVxcbiAjZGVmaW5lIEFTU0VSVF9ERVZMSU5LX1BPUlRfTk9UX1JFR0lTVEVSRUQoZGV2bGlua19wb3J0KVxcdFxcdFxcdFxcXFxcXG5AQCAtNzgyLDExICs3NjksMTEgQEAgc3RhdGljIGludCBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsXFxuIFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG4gXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIHtcXG4tXFx0c3RydWN0IG5sYXR0ciAqdGJbREVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfTUFYICsgMV07XFxuK1xcdHN0cnVjdCBubGF0dHIgKnRiW0FSUkFZX1NJWkUoZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3kpXTtcXG4gXFx0aW50IGVycjtcXG4gXFxuLVxcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIERFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCwgYXR0cixcXG4tXFx0XFx0XFx0ICAgICAgIGRldmxpbmtfZnVuY3Rpb25fbmxfcG9saWN5LCBleHRhY2spO1xcbitcXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBBUlJBWV9TSVpFKHRiKSAtIDEsIGF0dHIsXFxuK1xcdFxcdFxcdCAgICAgICBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSwgZXh0YWNrKTtcXG4gXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4gXFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiRmFpbCB0byBwYXJzZSBwb3J0IGZ1bmN0aW9uIGF0dHJpYnV0ZXNcXFwiKTtcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6MTMuNzIxODg4ODk2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozOTUxMDExODAwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfREVWTElOS1wiLFxuICAgIFwiTkVUREVWU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldFwiLFxuICAgIFwiZGV2bGlua19ubF9wb3J0X3NldF9kb2l0XCIsXG4gICAgXCJkZXZsaW5rX25sX3JlbG9hZF9kb2l0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBkZXZsaW5rIG5ldGxpbmsgYXR0cmlidXRlIHBvbGljaWVzIGFuZCB0aGUgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCBwYXJzaW5nIGxvZ2ljIGZvciBnZW5lcmljIG5ldGxpbmsgY29tbWFuZHMgKHBvcnQtc2V0IGFuZCByZWxvYWQpLiBUaGUgY2hhbmdlcyBhcmUgaW4gY29yZSBuZXR3b3JraW5nIG5ldGxpbmsgY29kZSwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBnZW5lcmljIG5ldGxpbmsgZGV2bGluayBmYW1pbHkgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5NDFjNDc0MmY3MWRmYjM5ZDFlNWQ2MWJmMDZkMmIwNGZkYzYxNjhkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMjA6NDY6MTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbFxuaW5kZXggMzhiMTE5MGYzZDI2OS4uYWNiMjI4NTZhNmE4NSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWxcbkBAIC0xNzQsNiArMTc0LDE4IEBAIGRlZmluaXRpb25zOlxuICAgICAgICAgdmFsdWU6IDFcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBmdy1hY3RpdmF0ZVxuKyAgLVxuKyAgICB0eXBlOiBlbnVtXG4rICAgIG5hbWU6IHJlbG9hZC1saW1pdFxuKyAgICBlbnRyaWVzOlxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHVuc3BlY1xuKyAgICAgICAgZG9jOiBubyBjb25zdHJhaW50c1xuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IG5vLXJlc2V0XG4rICAgICAgICBkb2M6IFx1MDAzZS1cbisgICAgICAgICAgTm8gcmVzZXQgYWxsb3dlZCwgbm8gZG93biB0aW1lIGFsbG93ZWQsIG5vIGxpbmsgZmxhcCBhbmQgbm9cbisgICAgICAgICAgY29uZmlndXJhdGlvbiBpcyBsb3N0LlxuICAgLVxuICAgICB0eXBlOiBlbnVtXG4gICAgIG5hbWU6IHBhcmFtLWNtb2RlXG5AQCAtNzc1LDcgKzc4Nyw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHJlbG9hZC1saW1pdHNcbiAgICAgICAgIHR5cGU6IGJpdGZpZWxkMzJcbi0gICAgICAgIGVudW06IHJlbG9hZC1hY3Rpb25cbisgICAgICAgIGVudW06IHJlbG9hZC1saW1pdFxuICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZVxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGRldi1zdGF0c1xuQEAgLTc5Myw2ICs4MDUsNyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWxvYWQtc3RhdHMtbGltaXRcbiAgICAgICAgIHR5cGU6IHU4XG4rICAgICAgICBlbnVtOiByZWxvYWQtbGltaXRcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWxvYWQtc3RhdHMtdmFsdWVcbiAgICAgICAgIHR5cGU6IHUzMlxuQEAgLTg0NSwxMyArODU4LDE0IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogbGluZWNhcmQtc3VwcG9ydGVkLXR5cGVzXG4gICAgICAgICB0eXBlOiBuZXN0XG4gICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtbGluZWNhcmQtc3VwcG9ydGVkLXR5cGVzXG4tXG4tICAgICAgIyBUT0RPOiBmaWxsIGluIHRoZSBhdHRyaWJ1dGVzIGluIGJldHdlZW5cbi1cbisgICAgICAtXG4rICAgICAgICBuYW1lOiBuZXN0ZWQtZGV2bGlua1xuKyAgICAgICAgdHlwZTogbmVzdFxuKyAgICAgICAgbXVsdGktYXR0cjogdHJ1ZVxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLW5lc3RlZC1kZXZsaW5rXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogc2VsZnRlc3RzXG4gICAgICAgICB0eXBlOiBuZXN0XG4tICAgICAgICB2YWx1ZTogMTc2XG4gICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtc2VsZnRlc3QtaWRcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByYXRlLXR4LXByaW9yaXR5XG5AQCAtODk4LDcgKzkxMiw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHBhcmVudC1kZXZcbiAgICAgICAgIHR5cGU6IG5lc3Rcbi0gICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1wYXJlbnQtZGV2XG4rICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtbmVzdGVkLWRldmxpbmtcbiAgICAgICAgIGRvYzogfFxuICAgICAgICAgICBJZGVudGlmaWVzIHRoZSBkZXZsaW5rIGluc3RhbmNlIHdoaWNoIG93bnMgdGhlIHBhcmVudCByYXRlIG5vZGUuXG4gICAgICAgICAgIFVzZWQgd2l0aCByYXRlLXNldCBhbmQgcmF0ZS1uZXcgdG8gcGFyZW50IGEgcmF0ZSBvYmplY3QgdG8gYSBub2RlIG9uXG5AQCAtOTc4LDYgKzk5Miw0OSBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIHR5cGU6IGJpdGZpZWxkMzJcbiAgICAgICAgIGVudW06IHBvcnQtZm4tYXR0ci1jYXBcbiAgICAgICAgIGVudW0tYXMtZmxhZ3M6IHRydWVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBkZXZsaW5rXG4rICAgICAgICB0eXBlOiBuZXN0XG4rICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtbmVzdGVkLWRldmxpbmtcbisgICAgICAgIGRvYzogSGFuZGxlIG9mIHRoZSBwZWVyIGRldmxpbmsgaW5zdGFuY2UgaW5zdGFudGlhdGVkIGZvciB0aGlzIGZ1bmN0aW9uLlxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IG1heC1pby1lcXNcbisgICAgICAgIHR5cGU6IHUzMlxuK1xuKyAgLVxuKyAgICBuYW1lOiBkbC1wb3J0LWZ1bmN0aW9uLXNldFxuKyAgICBzdWJzZXQtb2Y6IGRsLXBvcnQtZnVuY3Rpb25cbisgICAgZG9jOiB8XG4rICAgICAgUG9ydCBmdW5jdGlvbiBhdHRyaWJ1dGVzIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQ7IG9wc3RhdGUgYW5kIHRoZVxuKyAgICAgIGRldmxpbmsgaGFuZGxlIGFyZSByZWFkLW9ubHkuXG4rICAgIGF0dHJpYnV0ZXM6XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogaHctYWRkclxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHN0YXRlXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogY2Fwc1xuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IG1heC1pby1lcXNcbitcbisgIC1cbisgICAgbmFtZTogZGwtcG9ydC1zZXRcbisgICAgc3Vic2V0LW9mOiBkZXZsaW5rXG4rICAgIGRvYzogQXR0cmlidXRlcyBhY2NlcHRlZCBieSB0aGUgcG9ydC1zZXQgcmVxdWVzdC5cbisgICAgYXR0cmlidXRlczpcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBidXMtbmFtZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGRldi1uYW1lXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogaW5kZXhcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBwb3J0LWluZGV4XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcG9ydC10eXBlXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcG9ydC1mdW5jdGlvblxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBvcnQtZnVuY3Rpb24tc2V0XG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLWRwaXBlLXRhYmxlc1xuQEAgLTEwMDgsNiArMTA2NSw4IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogZHBpcGUtdGFibGUtcmVzb3VyY2UtaWRcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBkcGlwZS10YWJsZS1yZXNvdXJjZS11bml0c1xuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1kcGlwZS10YWJsZS1tYXRjaGVzXG5AQCAtMTA0Miw2ICsxMTAxLDggQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICBuYW1lOiBkcGlwZS1lbnRyeS1hY3Rpb24tdmFsdWVzXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZHBpcGUtZW50cnktY291bnRlclxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1kcGlwZS1lbnRyeS1tYXRjaC12YWx1ZXNcbkBAIC0xMTgwLDYgKzEyNDEsOCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IHJlc291cmNlLXVuaXRcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZXNvdXJjZS1vY2NcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBwYWRcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtcmVzb3VyY2UtbGlzdFxuQEAgLTEyMDcsNiArMTI3MCw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICBhdHRyaWJ1dGVzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHJlZ2lvbi1zbmFwc2hvdFxuKyAgICAgICAgbXVsdGktYXR0cjogdHJ1ZVxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1yZWdpb24tc25hcHNob3RcbkBAIC0xMjIxLDYgKzEyODUsNyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgYXR0cmlidXRlczpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWdpb24tY2h1bmtcbisgICAgICAgIG11bHRpLWF0dHI6IHRydWVcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtcmVnaW9uLWNodW5rXG5AQCAtMTIzMCw2ICsxMjk1LDggQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICBuYW1lOiByZWdpb24tY2h1bmstZGF0YVxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHJlZ2lvbi1jaHVuay1hZGRyXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcGFkXG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLWZtc2dcbkBAIC0xMjcwLDYgKzEzMzcsOCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IGhlYWx0aC1yZXBvcnRlci1hdXRvLWR1bXBcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBoZWFsdGgtcmVwb3J0ZXItYnVyc3QtcGVyaW9kXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcGFkXG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLWF0dHItc3RhdHNcbkBAIC0xMjg0LDYgKzEzNTMsMTAgQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogc3RhdHMtcngtZHJvcHBlZFxuICAgICAgICAgdHlwZTogdTY0XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcGFkXG4rICAgICAgICB0eXBlOiBwYWRcbisgICAgICAgIHZhbHVlOiA2MVxuIFxuICAgLVxuICAgICBuYW1lOiBkbC10cmFwLW1ldGFkYXRhXG5AQCAtMTMwMyw2ICsxMzc2LDcgQEAgYXR0cmlidXRlLXNldHM6XG4gICAgIGF0dHJpYnV0ZXM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogbGluZWNhcmQtdHlwZVxuKyAgICAgICAgbXVsdGktYXR0cjogdHJ1ZVxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1zZWxmdGVzdC1pZFxuQEAgLTEzMzAsNiArMTQwNCw1MCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgIC1cbiAgICAgbmFtZTogZGwtcGFyZW50LWRldlxuICAgICBzdWJzZXQtb2Y6IGRldmxpbmtcbisgICAgZG9jOiB8XG4rICAgICAgRGV2bGluayBoYW5kbGUgYWNjZXB0ZWQgYXMgdGhlIHBhcmVudC1kZXYgaW5wdXQ7IHRoZSBuZXRucyBpZCB0aGVcbisgICAgICBrZXJuZWwgcmVwb3J0cyBiYWNrIGlzIG5vdCBhY2NlcHRlZCwgdGhlIHBhcmVudCBpcyBhbHdheXMgcmVzb2x2ZWRcbisgICAgICBpbiB0aGUgY2FsbGVyJ3MgbmV0bnMuXG4rICAgIGF0dHJpYnV0ZXM6XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogYnVzLW5hbWVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBkZXYtbmFtZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGluZGV4XG4rXG4rICAtXG4rICAgIG5hbWU6IGRsLXJhdGUtc2V0XG4rICAgIHN1YnNldC1vZjogZGV2bGlua1xuKyAgICBkb2M6IEF0dHJpYnV0ZXMgYWNjZXB0ZWQgYnkgdGhlIHJhdGUtc2V0IGFuZCByYXRlLW5ldyByZXF1ZXN0cy5cbisgICAgYXR0cmlidXRlczpcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBidXMtbmFtZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGRldi1uYW1lXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogaW5kZXhcbisgICAgICAtXG4rICAgICAgICBuYW1lOiByYXRlLW5vZGUtbmFtZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHJhdGUtdHgtc2hhcmVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiByYXRlLXR4LW1heFxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHJhdGUtdHgtcHJpb3JpdHlcbisgICAgICAtXG4rICAgICAgICBuYW1lOiByYXRlLXR4LXdlaWdodFxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHJhdGUtcGFyZW50LW5vZGUtbmFtZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHJhdGUtdGMtYndzXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcGFyZW50LWRldlxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBhcmVudC1kZXZcbitcbisgIC1cbisgICAgbmFtZTogZGwtbmVzdGVkLWRldmxpbmtcbisgICAgc3Vic2V0LW9mOiBkZXZsaW5rXG4gICAgIGF0dHJpYnV0ZXM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogYnVzLW5hbWVcbkBAIC0xMzM3LDYgKzE0NTUsOCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IGRldi1uYW1lXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogaW5kZXhcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBuZXRucy1pZFxuIFxuIG9wZXJhdGlvbnM6XG4gICBlbnVtLW1vZGVsOiBkaXJlY3Rpb25hbFxuQEAgLTEzNjMsNiArMTQ4Myw3IEBAIG9wZXJhdGlvbnM6XG4gICAgICAgICAgICAgLSBpbmRleFxuICAgICAgICAgICAgIC0gcmVsb2FkLWZhaWxlZFxuICAgICAgICAgICAgIC0gZGV2LXN0YXRzXG4rICAgICAgICAgICAgLSBuZXN0ZWQtZGV2bGlua1xuICAgICAgIGR1bXA6XG4gICAgICAgICByZXBseTogKmdldC1yZXBseVxuIFxuQEAgLTEzODgsMTMgKzE1MDksMTIgQEAgb3BlcmF0aW9uczpcbiAgICAgICAgIHJlcXVlc3Q6XG4gICAgICAgICAgIGF0dHJpYnV0ZXM6ICpkZXYtaWQtYXR0cnNcbiAgICAgICAgIHJlcGx5OlxuLSAgICAgICAgICB2YWx1ZTogMyAgIyBkdWUgdG8gYSBidWcsIHBvcnQgZHVtcCByZXR1cm5zIERFVkxJTktfQ01EX05FV1xuICAgICAgICAgICBhdHRyaWJ1dGVzOiAqcG9ydC1pZC1hdHRyc1xuIFxuICAgICAtXG4gICAgICAgbmFtZTogcG9ydC1zZXRcbiAgICAgICBkb2M6IFNldCBkZXZsaW5rIHBvcnQgaW5zdGFuY2VzLlxuLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmtcbisgICAgICBhdHRyaWJ1dGUtc2V0OiBkbC1wb3J0LXNldFxuICAgICAgIGRvbnQtdmFsaWRhdGU6IFtzdHJpY3RdXG4gICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXVxuICAgICAgIGRvOlxuQEAgLTE5NzUsNiArMjA5NSw3IEBAIG9wZXJhdGlvbnM6XG4gICAgICAgICAgICAgLSBpbmRleFxuICAgICAgICAgICAgIC0gcG9ydC1pbmRleFxuICAgICAgICAgICAgIC0gcmVnaW9uLW5hbWVcbisgICAgICAgICAgICAtIHJlZ2lvbi1jaHVua3NcbiBcbiAgICAgLVxuICAgICAgIG5hbWU6IHBvcnQtcGFyYW0tZ2V0XG5AQCAtMjMwNSw3ICsyNDI2LDcgQEAgb3BlcmF0aW9uczpcbiAgICAgLVxuICAgICAgIG5hbWU6IHJhdGUtc2V0XG4gICAgICAgZG9jOiBTZXQgcmF0ZSBpbnN0YW5jZXMuXG4tICAgICAgYXR0cmlidXRlLXNldDogZGV2bGlua1xuKyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXJhdGUtc2V0XG4gICAgICAgZG9udC12YWxpZGF0ZTogW3N0cmljdF1cbiAgICAgICBmbGFnczogW2FkbWluLXBlcm1dXG4gICAgICAgZG86XG5AQCAtMjMyOCw3ICsyNDQ5LDcgQEAgb3BlcmF0aW9uczpcbiAgICAgLVxuICAgICAgIG5hbWU6IHJhdGUtbmV3XG4gICAgICAgZG9jOiBDcmVhdGUgcmF0ZSBpbnN0YW5jZXMuXG4tICAgICAgYXR0cmlidXRlLXNldDogZGV2bGlua1xuKyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXJhdGUtc2V0XG4gICAgICAgZG9udC12YWxpZGF0ZTogW3N0cmljdF1cbiAgICAgICBmbGFnczogW2FkbWluLXBlcm1dXG4gICAgICAgZG86XG5AQCAtMjM3NCwxNCArMjQ5NSwyMiBAQCBvcGVyYXRpb25zOlxuICAgICAgICAgcG9zdDogZGV2bGluay1ubC1wb3N0LWRvaXRcbiAgICAgICAgIHJlcXVlc3Q6XG4gICAgICAgICAgIHZhbHVlOiA3OFxuLSAgICAgICAgICBhdHRyaWJ1dGVzOiBcdTAwMjZsaW5lY2FyZC1pZC1hdHRyc1xuKyAgICAgICAgICBhdHRyaWJ1dGVzOlxuICAgICAgICAgICAgIC0gYnVzLW5hbWVcbiAgICAgICAgICAgICAtIGRldi1uYW1lXG4gICAgICAgICAgICAgLSBpbmRleFxuICAgICAgICAgICAgIC0gbGluZWNhcmQtaW5kZXhcbiAgICAgICAgIHJlcGx5OiBcdTAwMjZsaW5lY2FyZC1nZXQtcmVwbHlcbiAgICAgICAgICAgdmFsdWU6IDgwXG4tICAgICAgICAgIGF0dHJpYnV0ZXM6ICpsaW5lY2FyZC1pZC1hdHRyc1xuKyAgICAgICAgICBhdHRyaWJ1dGVzOlxuKyAgICAgICAgICAgIC0gYnVzLW5hbWVcbisgICAgICAgICAgICAtIGRldi1uYW1lXG4rICAgICAgICAgICAgLSBpbmRleFxuKyAgICAgICAgICAgIC0gbGluZWNhcmQtaW5kZXhcbisgICAgICAgICAgICAtIGxpbmVjYXJkLXN0YXRlXG4rICAgICAgICAgICAgLSBsaW5lY2FyZC10eXBlXG4rICAgICAgICAgICAgLSBsaW5lY2FyZC1zdXBwb3J0ZWQtdHlwZXNcbisgICAgICAgICAgICAtIG5lc3RlZC1kZXZsaW5rXG4gICAgICAgZHVtcDpcbiAgICAgICAgIHJlcXVlc3Q6XG4gICAgICAgICAgIGF0dHJpYnV0ZXM6ICpkZXYtaWQtYXR0cnNcbmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jIGIvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uY1xuaW5kZXggZGVjMDAxMzMxNzhkMS4uNDNlZjY4NjRkNDYyZiAxMDA2NDRcbi0tLSBhL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNcbisrKyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNcbkBAIC01MiwxMSArNTIsMTEgQEAgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9wYXJlbnRfZGV2X25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggKyAxXVxuIFx0W0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsIFx1MDAyNmRldmxpbmtfYXR0cl9pbmRleF9yYW5nZSksXG4gfTtcbiBcbi1jb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFMgKyAxXSA9IHtcbitjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeVtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTICsgMV0gPSB7XG4gXHRbREVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfSFdfQUREUl0gPSB7IC50eXBlID0gTkxBX0JJTkFSWSwgfSxcbiBcdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURV0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTgsIDEpLFxuLVx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX09QU1RBVEVdID0gTkxBX1BPTElDWV9NQVgoTkxBX1U4LCAxKSxcbiBcdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMigxNSksXG4rXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU10gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcbiB9O1xuIFxuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcmF0ZV90Y19id3NfbmxfcG9saWN5W0RFVkxJTktfUkFURV9UQ19BVFRSX0JXICsgMV0gPSB7XG5AQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19wb3J0X3NldF9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICsgMVxuIFx0W0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsIFx1MDAyNmRldmxpbmtfYXR0cl9pbmRleF9yYW5nZSksXG4gXHRbREVWTElOS19BVFRSX1BPUlRfSU5ERVhdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXG4gXHRbREVWTElOS19BVFRSX1BPUlRfVFlQRV0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTE2LCAzKSxcbi1cdFtERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl0gPSBOTEFfUE9MSUNZX05FU1RFRChkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5KSxcbitcdFtERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl0gPSBOTEFfUE9MSUNZX05FU1RFRChkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSksXG4gfTtcbiBcbiAvKiBERVZMSU5LX0NNRF9QT1JUX05FVyAtIGRvICovXG5AQCAtMzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX3JlbG9hZF9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICsgMV1cbiBcdFtERVZMSU5LX0FUVFJfREVWX05BTUVdID0geyAudHlwZSA9IE5MQV9OVUxfU1RSSU5HLCB9LFxuIFx0W0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsIFx1MDAyNmRldmxpbmtfYXR0cl9pbmRleF9yYW5nZSksXG4gXHRbREVWTElOS19BVFRSX1JFTE9BRF9BQ1RJT05dID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIDEsIDIpLFxuLVx0W0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMig2KSxcbitcdFtERVZMSU5LX0FUVFJfUkVMT0FEX0xJTUlUU10gPSBOTEFfUE9MSUNZX0JJVEZJRUxEMzIoMyksXG4gXHRbREVWTElOS19BVFRSX05FVE5TX1BJRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcbiBcdFtERVZMSU5LX0FUVFJfTkVUTlNfRkRdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXG4gXHRbREVWTElOS19BVFRSX05FVE5TX0lEXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LFxuZGlmZiAtLWdpdCBhL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmggYi9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oXG5pbmRleCBhNzBlMGU0NzY5YWE1Li45OWNjYWNjNjkzYjc2IDEwMDY0NFxuLS0tIGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaFxuKysrIGIvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaFxuQEAgLTE0LDcgKzE0LDcgQEBcbiBcbiAvKiBDb21tb24gbmVzdGVkIHR5cGVzICovXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcGFyZW50X2Rldl9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICsgMV07XG4tZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQUyArIDFdO1xuK2V4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeVtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTICsgMV07XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcmF0ZV90Y19id3NfbmxfcG9saWN5W0RFVkxJTktfUkFURV9UQ19BVFRSX0JXICsgMV07XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfc2VsZnRlc3RfaWRfbmxfcG9saWN5W0RFVkxJTktfQVRUUl9TRUxGVEVTVF9JRF9GTEFTSCArIDFdO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9kZXZsaW5rL3BvcnQuYyBiL25ldC9kZXZsaW5rL3BvcnQuY1xuaW5kZXggMTUyOGYyZDE0OGRmYy4uODAzNDI5ZDlhMDA4OSAxMDA2NDRcbi0tLSBhL25ldC9kZXZsaW5rL3BvcnQuY1xuKysrIGIvbmV0L2RldmxpbmsvcG9ydC5jXG5AQCAtNiwxOSArNiw2IEBAXG4gXG4gI2luY2x1ZGUgXCJkZXZsX2ludGVybmFsLmhcIlxuIFxuLSNkZWZpbmUgREVWTElOS19QT1JUX0ZOX0NBUFNfVkFMSURfTUFTSyBcXFxuLVx0KF9CSVRVTChfX0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNfTUFYKSAtIDEpXG4tXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZnVuY3Rpb25fbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCArIDFdID0ge1xuLVx0W0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJdID0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSxcbi1cdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURV0gPVxuLVx0XHROTEFfUE9MSUNZX1JBTkdFKE5MQV9VOCwgREVWTElOS19QT1JUX0ZOX1NUQVRFX0lOQUNUSVZFLFxuLVx0XHRcdFx0IERFVkxJTktfUE9SVF9GTl9TVEFURV9BQ1RJVkUpLFxuLVx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID1cbi1cdFx0TkxBX1BPTElDWV9CSVRGSUVMRDMyKERFVkxJTktfUE9SVF9GTl9DQVBTX1ZBTElEX01BU0spLFxuLVx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbi19O1xuLVxuICNkZWZpbmUgQVNTRVJUX0RFVkxJTktfUE9SVF9SRUdJU1RFUkVEKGRldmxpbmtfcG9ydClcdFx0XHRcdFxcXG4gXHRXQVJOX09OX09OQ0UoIShkZXZsaW5rX3BvcnQpLVx1MDAzZXJlZ2lzdGVyZWQpXG4gI2RlZmluZSBBU1NFUlRfREVWTElOS19QT1JUX05PVF9SRUdJU1RFUkVEKGRldmxpbmtfcG9ydClcdFx0XHRcXFxuQEAgLTc4MiwxMSArNzY5LDExIEBAIHN0YXRpYyBpbnQgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpwb3J0LFxuIFx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuLVx0c3RydWN0IG5sYXR0ciAqdGJbREVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfTUFYICsgMV07XG4rXHRzdHJ1Y3QgbmxhdHRyICp0YltBUlJBWV9TSVpFKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5KV07XG4gXHRpbnQgZXJyO1xuIFxuLVx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgREVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfTUFYLCBhdHRyLFxuLVx0XHRcdCAgICAgICBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeSwgZXh0YWNrKTtcbitcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIEFSUkFZX1NJWkUodGIpIC0gMSwgYXR0cixcbitcdFx0XHQgICAgICAgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3ksIGV4dGFjayk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJGYWlsIHRvIHBhcnNlIHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlc1wiKTtcbiBcdFx0cmV0dXJuIGVycjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjQ2OjEzLjcyMTg5MTMzNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4Mjc1NjA4OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZXZsaW5rIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLiBJIHNlZSB3ZSdyZSB0b3VjaGluZyBgRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbGAsIGBuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jYCwgYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmhgLCBhbmQgYG5ldC9kZXZsaW5rL3BvcnQuY2AuIFRoYXQgaW5kaWNhdGVzIHNvbWUgbW9kaWZpY2F0aW9uIHRvIHRoZSBkZXZsaW5rIHN1YnN5c3RlbSwgbGlrZWx5IGludm9sdmluZyBOZXRsaW5rIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIHBvcnQgY29uZmlndXJhdGlvbi5cblxuRmlyc3QsIEknbGwgemVybyBpbiBvbiBgbmV0L2RldmxpbmsvcG9ydC5jYCBhbmQgYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNgLCBhbG9uZyB3aXRoIHJlbGF0ZWQgZmlsZXMgZm9yIGNvbnRleHQuIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSBleGlzdGluZyBOZXRsaW5rIG1lc3NhZ2UgZ2VuZXJhdGlvbiBpcyBhZmZlY3RlZCBhbmQgaWYgdGhlIHBvcnQgbWFuYWdlbWVudCBsb2dpYyBpcyBiZWluZyBhbHRlcmVkLiBHaXZlbiB0aGUgYC55YW1sYCBjaGFuZ2UsIEknbSBhbnRpY2lwYXRpbmcgc29tZSBzY2hlbWEgdXBkYXRlcyB0b28uXG5cblRvIHF1aWNrbHkgZ2V0IHVwIHRvIHNwZWVkIHdpdGggYW55IHVuZmFtaWxpYXIgcGFydHMgb2YgdGhlIGNoYW5nZSwgSSdsbCBwcm9iYWJseSBmaXJlIHVwIHNvbWUgc2VhcmNoIHRvb2xzIG9yIHJlYWQgc3Vycm91bmRpbmcgY29kZSB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRldmxpbmsgc3Vic3lzdGVtIGFuZCBpdHMgY3VycmVudCByb2xlIGluIHRoZSBrZXJuZWwuIFRoaXMgaXMgZXNzZW50aWFsIGZvciBhIHRob3JvdWdoIHJldmlldzsgSSBuZWVkIHRvIGtub3cgaG93IHRoZXNlIGNoYW5nZXMgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjI4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6MTYuNTQ5NDU0ODI3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTEyNDMzMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZGV2bGluay9wb3J0LmM9NjkzPXN0YXRpYyBpbnQgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3ZhbGlkYXRlKHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCxcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYy03NjctXFxubmV0L2RldmxpbmsvcG9ydC5jOjc2ODpzdGF0aWMgaW50IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqcG9ydCxcXG5uZXQvZGV2bGluay9wb3J0LmMtNzY5LVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYz04MjA9aW50IGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jLTgzNy1cXG5uZXQvZGV2bGluay9wb3J0LmM6ODM4OlxcdFxcdGVyciA9IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoZGV2bGlua19wb3J0LCBhdHRyLCBleHRhY2spO1xcbm5ldC9kZXZsaW5rL3BvcnQuYy04MzktXFx0XFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6MTguMzYwNzAzNzkzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzA4MTQ3NjUwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQncyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGlzIGNvZGUsIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gdGhlIERldmxpbmsgUG9ydCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzIGBkZXZsaW5rYCBwb3J0IGNvbmZpZ3VyYXRpb24gc3R1ZmYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBwb3J0IGZ1bmN0aW9ucyBhcmUgYmVpbmcgc2V0LiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IGBuZXQvZGV2bGluay9wb3J0LmNgLCBmb2N1c2luZyBzcGVjaWZpY2FsbHkgb24gdGhlIGBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0YCBhbmQgYGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdGAgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBtYXAgb3V0IHRoZSBjYWxsIGZsb3cgYW5kIGlkZW50aWZ5IHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLiBJJ20gYXNzdW1pbmcsIGJhc2VkIG9uIHRoZSBuYW1pbmcsIHRoYXQgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIGZvciBjaGFuZ2luZyB0aGUgcG9ydCdzIHJvbGUsIHdoZXJlYXMgYGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdGAgaXMgbW9zdCBsaWtlbHkgdGhlIE5ldGxpbmsgaGFuZGxlciB0aGF0IHJlY2VpdmVzIGFuZCBwcm9jZXNzZXMgdGhlIHVzZXItc3BhY2UgcmVxdWVzdHMuXG5cbkknbGwgYmUgbG9va2luZyBmb3IgaG93IHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgZGF0YSBtYWtlcyBpdHMgd2F5IGZyb20gdGhlIE5ldGxpbmsgbWVzc2FnZSB0byB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGBkZXZsaW5rYCBwb3J0LCB0aGUgdmFsaWRhdGlvbiB0aGF0IG9jY3VycywgYW5kIGhvdyB0aGUgaGFyZHdhcmUgaXMgdWx0aW1hdGVseSBwcm9ncmFtbWVkIChpZiBhcHBsaWNhYmxlKS4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5IGhhbmRsZSBlcnJvciBjb25kaXRpb25zLCBhbmQgaWYgdGhleSBsb2NrIGFueXRoaW5nIChsaWtlIHRoZSBwb3J0KSB3aGVuIHBlcmZvcm1pbmcgdGhpcyBzZXR0aW5nLCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMuXG5cbkknbGwgYWxzbyBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBpbnRlcmVzdGluZyBvciBub24tb2J2aW91cyBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgYGRldmxpbmtgIHN1YnN5c3RlbS4gQXJlIHRoZXJlIGFueSBjYWxsYmFja3Mgb3IgZXZlbnQgbm90aWZpY2F0aW9ucyBpbnZvbHZlZD8gSXMgdGhlcmUgYW4gQVBJIGZvciB2ZW5kb3JzIHRvIGV4dGVuZCB0aGlzLCBvciBpcyBpdCBwcmV0dHkgdGlnaHRseSBjb3VwbGVkPyBJJ20gYW50aWNpcGF0aW5nIHRoZXJlIHdpbGwgYmUgc29tZSBjaGVja3MgZm9yIHRoZSBzcGVjaWZpYyBjYXBhYmlsaXRpZXMgb2YgdGhlIHVuZGVybHlpbmcgZGV2aWNlIOKAkyB0aGVyZSdzIHByb2JhYmx5IGEgZGV2aWNlLXNwZWNpZmljIGRhdGEgbW9kZWwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYXMgd2VsbCwgYW5kIEknZCBsaWtlIHRvIGlkZW50aWZ5IHdoYXQgdGhhdCBsb29rcyBsaWtlLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSB0cmlja3kgY2FzZXMsIHN1Y2ggYXMgcG9ydCByb2xlcyBjaGFuZ2luZyBmcm9tIGEgcGh5c2ljYWwgaW50ZXJmYWNlIHRvIGEgdmlydHVhbCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4ODksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0NjoyMS40NDIxODI2MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvZGV2bGluay9wb3J0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzYwLFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzYwOlxcdFxcdCAgICAhb3BzLVxcdTAwM2Vwb3J0X2ZuX21heF9pb19lcXNfc2V0KSB7XFxuIDc2MTpcXHRcXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGV4dGFjaywgdGJbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU10sXFxuIDc2MjpcXHRcXHRcXHRcXHRcXHQgICAgXFxcIkZ1bmN0aW9uIGRvZXMgbm90IHN1cHBvcnQgbWF4X2lvX2VxcyBzZXR0aW5nXFxcIik7XFxuIDc2MzpcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIDc2NDpcXHRcXHR9XFxuIDc2NTpcXHRcXHRyZXR1cm4gMDtcXG4gNzY2OlxcdH1cXG4gNzY3OlxcdFxcbiA3Njg6XFx0c3RhdGljIGludCBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsXFxuIDc2OTpcXHRcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXFxuIDc3MDpcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4gNzcxOlxcdHtcXG4gNzcyOlxcdFxcdHN0cnVjdCBubGF0dHIgKnRiW0FSUkFZX1NJWkUoZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3kpXTtcXG4gNzczOlxcdFxcdGludCBlcnI7XFxuIDc3NDpcXHRcXG4gNzc1OlxcdFxcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIEFSUkFZX1NJWkUodGIpIC0gMSwgYXR0cixcXG4gNzc2OlxcdFxcdFxcdFxcdCAgICAgICBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSwgZXh0YWNrKTtcXG4gNzc3OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuIDc3ODpcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJGYWlsIHRvIHBhcnNlIHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlc1xcXCIpO1xcbiA3Nzk6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNzgwOlxcdFxcdH1cXG4gNzgxOlxcdFxcbiA3ODI6XFx0XFx0ZXJyID0gZGV2bGlua19wb3J0X2Z1bmN0aW9uX3ZhbGlkYXRlKHBvcnQsIHRiLCBleHRhY2spO1xcbiA3ODM6XFx0XFx0aWYgKGVycilcXG4gNzg0OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDc4NTpcXHRcXG4gNzg2OlxcdFxcdGF0dHIgPSB0YltERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSXTtcXG4gNzg3OlxcdFxcdGlmIChhdHRyKSB7XFxuIDc4ODpcXHRcXHRcXHRlcnIgPSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25faHdfYWRkcl9zZXQocG9ydCwgYXR0ciwgZXh0YWNrKTtcXG4gNzg5OlxcdFxcdFxcdGlmIChlcnIpXFxuIDc5MDpcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA3OTE6XFx0XFx0fVxcbiA3OTI6XFx0XFxuIDc5MzpcXHRcXHRhdHRyID0gdGJbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQU107XFxuIDc5NDpcXHRcXHRpZiAoYXR0cikge1xcbiA3OTU6XFx0XFx0XFx0ZXJyID0gZGV2bGlua19wb3J0X2ZuX2NhcHNfc2V0KHBvcnQsIGF0dHIsIGV4dGFjayk7XFxuIDc5NjpcXHRcXHRcXHRpZiAoZXJyKVxcbiA3OTc6XFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNzk4OlxcdFxcdH1cXG4gNzk5OlxcdFxcbiA4MDA6XFx0XFx0YXR0ciA9IHRiW0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdO1xcbiA4MDE6XFx0XFx0aWYgKGF0dHIpIHtcXG4gODAyOlxcdFxcdFxcdGVyciA9IGRldmxpbmtfcG9ydF9mbl9tYXhfaW9fZXFzX3NldChwb3J0LCBhdHRyLCBleHRhY2spO1xcbiA4MDM6XFx0XFx0XFx0aWYgKGVycilcXG4gODA0OlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDgwNTpcXHRcXHR9XFxuIDgwNjpcXHRcXG4gODA3OlxcdFxcdC8qIEtlZXAgdGhpcyBhcyB0aGUgbGFzdCBmdW5jdGlvbiBhdHRyaWJ1dGUgc2V0LCBzbyB0aGF0IHdoZW5cXG4gODA4OlxcdFxcdCAqIG11bHRpcGxlIHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlcyBhcmUgc2V0IGFsb25nIHdpdGggc3RhdGUsXFxuIDgwOTpcXHRcXHQgKiBUaG9zZSBjYW4gYmUgYXBwbGllZCBmaXJzdCBiZWZvcmUgYWN0aXZhdGluZyB0aGUgc3RhdGUuXFxuIDgxMDpcXHRcXHQgKi9cXG4gODExOlxcdFxcdGF0dHIgPSB0YltERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURV07XFxuIDgxMjpcXHRcXHRpZiAoYXR0cilcXG4gODEzOlxcdFxcdFxcdGVyciA9IGRldmxpbmtfcG9ydF9mbl9zdGF0ZV9zZXQocG9ydCwgYXR0ciwgZXh0YWNrKTtcXG4gODE0OlxcdFxcbiA4MTU6XFx0XFx0aWYgKCFlcnIpXFxuIDgxNjpcXHRcXHRcXHRkZXZsaW5rX3BvcnRfbm90aWZ5KHBvcnQsIERFVkxJTktfQ01EX1BPUlRfTkVXKTtcXG4gODE3OlxcdFxcdHJldHVybiBlcnI7XFxuIDgxODpcXHR9XFxuIDgxOTpcXHRcXG4gODIwOlxcdGludCBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gODIxOlxcdHtcXG4gODIyOlxcdFxcdHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCA9IGRldmxpbmtfbmxfY3R4KGluZm8pLVxcdTAwM2VkZXZsaW5rX3BvcnQ7XFxuIDgyMzpcXHRcXHRpbnQgZXJyO1xcbiA4MjQ6XFx0XFxuIDgyNTpcXHRcXHRpZiAoaW5mby1cXHUwMDNlYXR0cnNbREVWTElOS19BVFRSX1BPUlRfVFlQRV0pIHtcXG4gODI2OlxcdFxcdFxcdGVudW0gZGV2bGlua19wb3J0X3R5cGUgcG9ydF90eXBlO1xcbiA4Mjc6XFx0XFxuIDgyODpcXHRcXHRcXHRwb3J0X3R5cGUgPSBubGFfZ2V0X3UxNihpbmZvLVxcdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfUE9SVF9UWVBFXSk7XFxuIDgyOTpcXHRcXHRcXHRlcnIgPSBkZXZsaW5rX3BvcnRfdHlwZV9zZXQoZGV2bGlua19wb3J0LCBwb3J0X3R5cGUpO1xcbiA4MzA6XFx0XFx0XFx0aWYgKGVycilcXG4gODMxOlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDgzMjpcXHRcXHR9XFxuIDgzMzpcXHRcXG4gODM0OlxcdFxcdGlmIChpbmZvLVxcdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl0pIHtcXG4gODM1OlxcdFxcdFxcdHN0cnVjdCBubGF0dHIgKmF0dHIgPSBpbmZvLVxcdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl07XFxuIDgzNjpcXHRcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2sgPSBpbmZvLVxcdTAwM2VleHRhY2s7XFxuIDgzNzpcXHRcXG4gODM4OlxcdFxcdFxcdGVyciA9IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoZGV2bGlua19wb3J0LCBhdHRyLCBleHRhY2spO1xcbiA4Mzk6XFx0XFx0XFx0aWYgKGVycilcXG4gODQwOlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDg0MTpcXHRcXHR9XFxuIDg0MjpcXHRcXG4gODQzOlxcdFxcdHJldHVybiAwO1xcbiA4NDQ6XFx0fVxcbiA4NDU6XFx0XFxuIDg0NjpcXHRpbnQgZGV2bGlua19ubF9wb3J0X3NwbGl0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gODQ3OlxcdHtcXG4gODQ4OlxcdFxcdHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCA9IGRldmxpbmtfbmxfY3R4KGluZm8pLVxcdTAwM2VkZXZsaW5rX3BvcnQ7XFxuIDg0OTpcXHRcXHRzdHJ1Y3QgZGV2bGluayAqZGV2bGluayA9IGRldmxpbmtfbmxfY3R4KGluZm8pLVxcdTAwM2VkZXZsaW5rO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0NjoyMS40NDIyOTk5NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5NzYxNjA0MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGV2bGluayBOZXRsaW5rIFN1YnN5c3RlbSBBbmFseXNpcyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBkZXZsaW5rYCDigJMgdGhhdCdzIGEgY29yZSBuZXR3b3JraW5nIE5ldGxpbmsgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0J3MgYSBnZW5lcmljIE5ldGxpbmsgZmFtaWx5IChgTkVUTElOS19HRU5FUklDYCkgdW5kZXIgYGRldmxpbmtgLiBUaGUgcXVlc3Rpb24gbm93IGlzOiBpcyBgZGV2bGlua2AgYWNjZXNzaWJsZSBpbiB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBUaGUgYW5zd2VyIGFwcGVhcnMgdG8gYmUgeWVzLiBJdCdzIGEgc3RhbmRhcmQgZ2VuZXJpYyBOZXRsaW5rIGludGVyZmFjZSB1c2VkIGJ5IG5ldCBkZXZpY2VzIOKAkyB0aGluayBgbmV0ZGV2c2ltYCwgYHZpcnRpb19uZXRgLCBvciBldmVuIHRoZSBzaW1wbGUgYGR1bW15YCBpbnRlcmZhY2UuIFN5emthbGxlcidzIGhlYXZ5IGZ1enppbmcgb2YgYGRldmxpbmtgIGRlZmluaXRlbHkgY29uZmlybXMgdGhpcywgbG9va2luZyBhdCBjb21tYW5kcyBsaWtlIGBkZXZsaW5rX25sX2NtZF9wb3J0X3NldGAsIGBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRgLCBhbmQgb3BlcmF0aW9ucyBsaWtlIHJlbG9hZCBhbmQgcmF0ZS5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgcGF0Y2guIE15IGZvY3VzIGhhcyBzaGlmdGVkIHRvIGBuZXRsaW5rX2dlbi5jYCBhbmQgYHBvcnQuY2AuXG5cblRoZSBwYXRjaCBpdHNlbGYgc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHVwZGF0ZXMgdG8gdGhlIGBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sYCBmaWxlLiBJdCBsb29rcyBsaWtlIHdlJ3JlIHJlZmluaW5nIHRoZSBkZWZpbml0aW9ucyBoZXJlLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGUgYHJlbG9hZC1saW1pdGAgZW51bSwgbmV3IHN1YnNldHMgZm9yIHBvcnQtZnVuY3Rpb24gYW5kIHJhdGUtc2V0LCBhbmQgcmVmaW5lbWVudHMgbGlrZSBuZXN0ZWQtZGV2bGluayBhbmQgbXVsdGktYXR0cmlidXRlIGZsYWdzLiBJdCBhbHNvIGxvb2tzIGxpa2UgdGhleSdyZSBkZWFsaW5nIHdpdGggcGFkZGluZyBhdHRyaWJ1dGVzLlxuXG5CYXNlZCBvbiB0aGlzIHNwZWMgeWFtbCwgYG5ldGxpbmtfZ2VuLmNgIGFuZCBgbmV0bGlua19nZW4uaGAgaGF2ZSBiZWVuIHVwZGF0ZWQvcmVnZW5lcmF0ZWQuXG5UaGUgY2hhbmdlcyB3aXRoaW4gdGhlc2UgZmlsZXMgbG9vayBzaWduaWZpY2FudDpcbiogICBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX25sX3BvbGljeWAgaXMgcmVwbGFjZWQgYnkgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5YC4gVGhlIG5ldyBwb2xpY3kgaW5jbHVkZXMgYERFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNgLCBhbmQgaXQgcmVtb3ZlcyBgT1BTVEFURWAsIGFzIGl0IGlzIHJlYWQtb25seS5cbiogICBUaGUgYGRldmxpbmtfcG9ydF9zZXRfbmxfcG9saWN5YCBub3cgdXNlcyB0aGUgbmVzdGVkIHBvbGljeSBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGZvciB0aGUgYERFVkxJTktfQVRUUl9QT1JUX0ZVTkNUSU9OYCBhdHRyaWJ1dGUuXG4qICAgYGRldmxpbmtfcmVsb2FkX25sX3BvbGljeWAgbm93IHNwZWNpZmllcyBgW0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMigzKTtgIHdoZXJlIHRoZSBsaW1pdCB3YXMgcHJldmlvdXNseSA2LlxuXG5GaW5hbGx5LCBpbiBgbmV0L2RldmxpbmsvcG9ydC5jYCwgaXQgbG9va3MgbGlrZSB0aGVyZSdzIHNvbWUgY2xlYW51cDpcbiogICBgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3lgIGFuZCBpdHMgcHJpdmF0ZSBtYXNrIG1hY3JvIGFyZSBnb25lLlxuKiAgIGBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0YCBpcyBub3cgZGlyZWN0bHkgdXNpbmcgdGhlIGdlbmVyYXRlZCBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGFuZCBwYXJzaW5nIGl0IHdpdGggYEFSUkFZX1NJWkUoZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3kpYC5cblxuSSBzaG91bGQgcHJvYmFibHkgYWxzbyBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZm9yIGBkZXZsaW5rYCB0byBtYWtlIHN1cmUgbm90aGluZyBoYXMgY2hhbmdlZCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTgwOCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjQ2OjI4LjQxODQ2MzMwM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDgxODQyNjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9ERVZMSU5LXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvY3J5cHRvL21hcnZlbGwvS2NvbmZpZz00MD1jb25maWcgQ1JZUFRPX0RFVl9PQ1RFT05UWDJfQ1BUXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9tYXJ2ZWxsL0tjb25maWctNTEtXFx0c2VsZWN0IENSWVBUT19BVVRIRU5DXFxuZHJpdmVycy9jcnlwdG8vbWFydmVsbC9LY29uZmlnOjUyOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvY3J5cHRvL21hcnZlbGwvS2NvbmZpZy01My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnPTM9Y29uZmlnIFpMMzA3M1hcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWctNi1cXHRzZWxlY3QgRFBMTFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWc6NzpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnLTgtXFx0c2VsZWN0IFJFR01BUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz02MDQ9Y29uZmlnIE5FVERFVlNJTVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDktXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19NT0NLIHx8IFBUUF8xNTg4X0NMT0NLX01PQ0s9blxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjEwOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L0tjb25maWctNjExLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnPTE2OD1jb25maWcgQ0FOX0tWQVNFUl9QQ0lFRkRcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTE3MC1cXHR0cmlzdGF0ZSBcXFwiS3Zhc2VyIFBDSWUgRkQgY2FyZHNcXFwiXFxuZHJpdmVycy9uZXQvY2FuL0tjb25maWc6MTcxOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTE3Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWc9MzE9Y29uZmlnIENBTl9FVEFTX0VTNThYXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWctMzMtXFx0c2VsZWN0IENSQzE2XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnOjM0OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZy0zNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWc9Njc9Y29uZmlnIENBTl9LVkFTRVJfVVNCXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnLTY4LVxcdHRyaXN0YXRlIFxcXCJLdmFzZXIgQ0FOL1VTQiBpbnRlcmZhY2VcXFwiXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnOjY5OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZy03MC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vS2NvbmZpZz0xOT1jb25maWcgRU5BX0VUSEVSTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vS2NvbmZpZy0yMy1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWc6MjQ6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWctMjUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc9MTY5PWNvbmZpZyBQRFNfQ09SRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWctMTcyLVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc6MTczOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnLTE3NC1cXHRzZWxlY3QgUExETUZXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTIwNz1jb25maWcgQk5YVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTItXFx0c2VsZWN0IENSQzMyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyMTM6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTQtXFx0c2VsZWN0IFBBR0VfUE9PTFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yNTg9Y29uZmlnIEJOR0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYwLVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNjE6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjItXFx0c2VsZWN0IFBBR0VfUE9PTFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9Njg9Y29uZmlnIExJUVVJRElPXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy03NS1cXHRzZWxlY3QgTElRVUlESU9fQ09SRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjc2OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTc3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnPTI9Y29uZmlnIEZTTF9EUEFBMl9FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTctXFx0c2VsZWN0IEZTTF9YR01BQ19NRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc6ODpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy05LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9LY29uZmlnPTY9Y29uZmlnIEZVTl9FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9LY29uZmlnLTktXFx0ZGVwZW5kcyBvbiBUTFMgXFx1MDAyNlxcdTAwMjYgVExTX0RFVklDRSB8fCBUTFNfREVWSUNFPW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvS2NvbmZpZzoxMDpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvS2NvbmZpZy0xMS1cXHRzZWxlY3QgRlVOX0NPUkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTkxPWNvbmZpZyBITlMzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05My1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjk0OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk1LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnPTY9Y29uZmlnIEhJTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gKFBDSV9NU0kgXFx1MDAyNlxcdTAwMjYgKFg4NiB8fCBBUk02NCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWc6OTpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZy0xMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE0NT1jb25maWcgSVhHQkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTUwLVxcdHNlbGVjdCBNRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoxNTE6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0xNTItXFx0c2VsZWN0IFBMRE1GV1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMjk9Y29uZmlnIEk0MEVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjM1LVxcdHNlbGVjdCBMSUJJRV9BRE1JTlFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjIzNjpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIzNy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTI5MT1jb25maWcgSUNFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTMwMi1cXHRzZWxlY3QgTElCSUVfRldMT0cgaWYgREVCVUdfRlNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjMwMzpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTMwNC1cXHRzZWxlY3QgUEFDS0lOR1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhkL0tjb25maWc9ND1jb25maWcgSVhEXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGQvS2NvbmZpZy04LVxcdHNlbGVjdCBMSUJJRV9QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGQvS2NvbmZpZzo5OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4ZC9LY29uZmlnLTEwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9OT1jb25maWcgT0NURU9OVFgyX0FGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTExLVxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MTI6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMy1cXHRkZXBlbmRzIG9uICg2NEJJVCBcXHUwMDI2XFx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTMxPWNvbmZpZyBPQ1RFT05UWDJfUEZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzMtXFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozNDpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM1LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZz02PWNvbmZpZyBQUkVTVEVSQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTktXFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc6MTA6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTExLVxcdHNlbGVjdCBQSFlMSU5LXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc9Mjg9Y29uZmlnIE1MWDRfQ09SRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTMxLVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnOjMyOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy0zMy1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTY9Y29uZmlnIE1MWDVfQ09SRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctOS1cXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjEwOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTExLVxcdGRlcGVuZHMgb24gTUxYRlcgfHwgIU1MWEZXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnPTY9Y29uZmlnIE1MWEZXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnLTE0LVxcdHNlbGVjdCBYWl9ERUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnOjE1OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZz02PWNvbmZpZyBNTFhTV19DT1JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzo4OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctOS1cXHRzZWxlY3QgTUxYRldcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yNi1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjI3OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOC1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc9MTU9Y29uZmlnIE1TQ0NfT0NFTE9UX1NXSVRDSF9MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTYtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZzoxNzpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTgtXFx0c2VsZWN0IFJFR01BUF9NTUlPXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvS2NvbmZpZz0xOT1jb25maWcgTkZQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvS2NvbmZpZy0yMy1cXHRkZXBlbmRzIG9uIFRMUyBcXHUwMDI2XFx1MDAyNiBUTFNfREVWSUNFIHx8IFRMU19ERVZJQ0U9blxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9LY29uZmlnOjI0OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9LY29uZmlnLTI1LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZz0yMD1jb25maWcgSU9OSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjMtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjQ6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNS1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZz03Nj1jb25maWcgUUVEXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy04MS1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZzo4MjpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy04My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZz0xOT1jb25maWcgU0ZDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZy0yNC1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZzoyNTpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZy0yNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTItXFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz02NT1jb25maWcgVElfQ1BTV19TV0lUQ0hERVZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNzMtXFx0c2VsZWN0IFJFR01BUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NzQ6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03NS1cXHRpbXBseSBQSFlfVElfR01JSV9TRUxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9OTY9Y29uZmlnIFRJX0szX0FNNjVfQ1BTV19OVVNTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTk4LVxcdGRlcGVuZHMgb24gQVJDSF9LMyBcXHUwMDI2XFx1MDAyNiBPRiBcXHUwMDI2XFx1MDAyNiBUSV9LM19VRE1BX0dMVUVfTEFZRVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjk5OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAwLVxcdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3p0ZS9kaW5naGFpL0tjb25maWc9Nj1jb25maWcgRElOR0hBSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvenRlL2RpbmdoYWkvS2NvbmZpZy04LSAgICBkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3p0ZS9kaW5naGFpL0tjb25maWc6OTogICAgc2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvenRlL2RpbmdoYWkvS2NvbmZpZy0xMC0gICAgaGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTk2PWNvbmZpZyBJT1NNXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctOTgtXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6OTk6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTEwMC1cXHRzZWxlY3QgUkVMQVkgaWYgV1dBTl9ERUJVR0ZTXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTIxMT1jb25maWcgUFRQXzE1ODhfQ0xPQ0tfT0NQXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxOC1cXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG5kcml2ZXJzL3B0cC9LY29uZmlnOjIxOTpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIyMC1cXHRzZWxlY3QgQ1JDMTZcXG4tLVxcbmluY2x1ZGUvbmV0L2RldmxpbmsuaC02LSAqL1xcbmluY2x1ZGUvbmV0L2RldmxpbmsuaDo3OiNpZm5kZWYgX05FVF9ERVZMSU5LX0hfXFxuaW5jbHVkZS9uZXQvZGV2bGluay5oOjg6I2RlZmluZSBfTkVUX0RFVkxJTktfSF9cXG5pbmNsdWRlL25ldC9kZXZsaW5rLmgtOS1cXG4tLVxcbmluY2x1ZGUvbmV0L2RldmxpbmsuaD0yMTE0PWRldmxfdHJhcF9wb2xpY2Vyc191bnJlZ2lzdGVyKHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLFxcbi0tXFxuaW5jbHVkZS9uZXQvZGV2bGluay5oLTIxMTctXFxuaW5jbHVkZS9uZXQvZGV2bGluay5oOjIxMTg6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9ERVZMSU5LKVxcbmluY2x1ZGUvbmV0L2RldmxpbmsuaC0yMTE5LVxcbi0tXFxuaW5jbHVkZS9uZXQvZGV2bGluay5oPTIxNzc9c3RhdGljIGlubGluZSBzaXplX3QgZGV2bGlua19ubF9wb3J0X2hhbmRsZV9zaXplKHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydClcXG4tLVxcbmluY2x1ZGUvbmV0L2RldmxpbmsuaC0yMTgzLVxcbmluY2x1ZGUvbmV0L2RldmxpbmsuaDoyMTg0OiNlbmRpZiAvKiBfTkVUX0RFVkxJTktfSF8gKi9cXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RldmxpbmsuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvZGV2bGluay5oOjI6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9ERVZMSU5LKVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RldmxpbmsuaC0zLVxcbi0tXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvZGV2bGluay5oPTE3Nz1UUkFDRV9FVkVOVChkZXZsaW5rX3RyYXBfcmVwb3J0LFxcbi0tXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvZGV2bGluay5oLTIxNC1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9kZXZsaW5rLmg6MjE1OiNlbHNlIC8qIENPTkZJR19ORVRfREVWTElOSyAqL1xcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RldmxpbmsuaC0yMTYtXFxuLS1cXG5uZXQvS2NvbmZpZz00Nzk9Y29uZmlnIE5FVF9TT0NLX01TR1xcbi0tXFxubmV0L0tjb25maWctNDg2LVxcbm5ldC9LY29uZmlnOjQ4Nzpjb25maWcgTkVUX0RFVkxJTktcXG5uZXQvS2NvbmZpZy00ODgtXFx0Ym9vbFxcbi0tXFxubmV0L01ha2VmaWxlPTI1PW9iai0kKENPTkZJR19CUklER0UpXFx0XFx0Kz0gYnJpZGdlL1xcbm5ldC9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfTkVUX0RFVkxJTkspXFx0Kz0gZGV2bGluay9cXG5uZXQvTWFrZWZpbGUtMjctb2JqLXlcXHRcXHRcXHRcXHQrPSBkc2EvXFxuLS1cXG5uZXQvY29yZS9kcm9wX21vbml0b3IuYz0xMDE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RtX2FsZXJ0X29wcyAqbmV0X2RtX2FsZXJ0X29wc19hcnJbXSA9IHtcXG4tLVxcbm5ldC9jb3JlL2Ryb3BfbW9uaXRvci5jLTEwMjEtXFxubmV0L2NvcmUvZHJvcF9tb25pdG9yLmM6MTAyMjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RFVkxJTkspXFxubmV0L2NvcmUvZHJvcF9tb25pdG9yLmMtMTAyMy1zdGF0aWMgaW50IG5ldF9kbV9od19wcm9iZV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgbmV0X2RtX2FsZXJ0X29wcyAqb3BzKVxcbi0tXFxubmV0L2RzYS9LY29uZmlnPTM9bWVudWNvbmZpZyBORVRfRFNBXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTAtXFx0c2VsZWN0IFBIWUxJTktcXG5uZXQvZHNhL0tjb25maWc6MTE6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxubmV0L2RzYS9LY29uZmlnLTEyLVxcdGltcGx5IE5FVF9TRUxGVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6MzAuNTAwMzExNTk1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTI5ODIzNDE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERldmxpbmsgTmV0bGluayBDaGFuZ2VzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgRGV2bGluayB1cGRhdGUuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLCBzbyBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBORVRfREVWTElOS2AgaW4gYG5ldC9LY29uZmlnYC4gUmlnaHQsIGl0J3Mgc2VsZWN0ZWQgYnkgc2V2ZXJhbCBkcml2ZXJzIGxpa2UgTkVUREVWU0lNLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzZWUgTkVUREVWU0lNICpkb2VzKiBzZWxlY3QgYE5FVF9ERVZMSU5LYCwgYW5kIGFsc28gYE5FVF9EU0FgIGFuZCBNTFg1LiBHb29kLCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBjbGVhci5cblxuTm93LCBsZXQncyBnZXQgaW50byB0aGUgY29kZSBjaGFuZ2VzIHRoZW1zZWx2ZXMsIHN0YXJ0aW5nIHdpdGggYG5ldC9kZXZsaW5rL3BvcnQuY2AuIEFoLCBgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldGAgaGFzIGJlZW4gbW9kaWZpZWQuIEkgc2VlIHRoYXQgdGhlIHN0YXRpYyBgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3lgIHN0cnVjdCBoYXMgYmVlbiByZW1vdmVkLiBJbnN0ZWFkLCB3ZSdyZSB1c2luZyB0aGUgYXV0by1nZW5lcmF0ZWQgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5YCBmcm9tIGBuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jYC4gSW50ZXJlc3RpbmcuIFRoZXkndmUgdXBkYXRlZCBob3cgdGhlIGF0dHJpYnV0ZXMgYXJlIHBhcnNlZC4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIHN3aXRjaGVkIGZyb20gYSBmaXhlZC1zaXplIGB0YmAgYXJyYXkgYW5kIGEgaGFyZGNvZGVkIHNpemUgdG8gdXNpbmcgYEFSUkFZX1NJWkUoKWAgZm9yIHRoZSBgdGJgIGFycmF5IGFuZCBhIGRlcml2ZWQgc2l6ZSBmb3IgdGhlIG5sYV9wYXJzZSBjYWxsLCB3aGljaCBpcyBhIGJldHRlciwgbW9yZSBmbGV4aWJsZSBhcHByb2FjaC5cblxuTGV0J3MgZXhhbWluZSB0aGF0IG5ldyBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIHBvbGljeS4gT2theSwgc28gaXQgaGFuZGxlcyB0aGUgZGlmZmVyZW50IGF0dHJpYnV0ZXMgbGlrZSBgSFdfQUREUmAsIGBTVEFURWAsIGBDQVBTYCwgYW5kIGBNQVhfSU9fRVFTYC4gVGhlIHBvbGljeSBkZWZpbml0aW9ucyBsb29rIHN0YW5kYXJkIGVub3VnaC4gVXNpbmcgYE5MQV9CSU5BUllgIGZvciBgSFdfQUREUmAsIGBOTEFfUE9MSUNZX01BWGAgZm9yIGBTVEFURWAsIGBOTEFfUE9MSUNZX0JJVEZJRUxEMzJgIGZvciBgQ0FQU2AsIGFuZCBgTkxBX1UzMmAgZm9yIGBNQVhfSU9fRVFTYC4gVGhhdCdzIGFsbCB0eXBpY2FsIE5ldGxpbmsgc3R1ZmYuXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayBob3cgdGhlc2UgcG9saWNpZXMgYXJlIHVzZWQgaW4gYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNgLiBBaCwgdGhlcmUncyBgZGV2bGlua19wb3J0X3NldF9ubF9wb2xpY3lgIGFuZCBgZGV2bGlua19yZWxvYWRfbmxfcG9saWN5YC4gVGhlIGZpcnN0IG9uZSB1c2VzIHRoZSBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGZvciBgREVWTElOS19BVFRSX1BPUlRfRlVOQ1RJT05gIGFzIGEgbmVzdGVkIGF0dHJpYnV0ZSBhbmQgdGhlIHNlY29uZCB1c2VzIGBOTEFfUE9MSUNZX0JJVEZJRUxEMzIoMylgIGZvciBgREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNgLlxuXG5GaW5hbGx5LCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgSSBoYXZlIHRvIHNlZSB3aG8gaXMgYWN0dWFsbHkgKnVzaW5nKiB0aGVzZSBjaGFuZ2VzLiBJJ2xsIG5lZWQgdG8gZ3JlcCBmb3IgY2FsbHMgdG8gYGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdGAsIGBkZXZsaW5rX25sX2NtZF9yZWxvYWRfZG9pdGAgYW5kIG90aGVycyBpbiB0aGUgYGRldmxpbmtgIHN1YnN5c3RlbS4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByYWN0aWNhbCBpbXBhY3Qgb2YgdGhlc2UgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1MDcsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6MzUuNzk4NTQ4NzY0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjc1NTM5MzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jPTcwMj1jb25zdCBzdHJ1Y3QgZ2VubF9zcGxpdF9vcHMgZGV2bGlua19ubF9vcHNbNzVdID0ge1xcbi0tXFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uYy03MzktXFx0XFx0LnByZV9kb2l0XFx0PSBkZXZsaW5rX25sX3ByZV9kb2l0X3BvcnQsXFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uYzo3NDA6XFx0XFx0LmRvaXRcXHRcXHQ9IGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdCxcXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLTc0MS1cXHRcXHQucG9zdF9kb2l0XFx0PSBkZXZsaW5rX25sX3Bvc3RfZG9pdCxcXG4tLVxcbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmg9NTA9aW50IGRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uaC01MS1cXHRcXHRcXHQgICAgICAgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTtcXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oOjUyOmludCBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uaC01My1pbnQgZGV2bGlua19ubF9wb3J0X25ld19kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTc2OD1zdGF0aWMgaW50IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqcG9ydCxcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYy04MTktXFxubmV0L2RldmxpbmsvcG9ydC5jOjgyMDppbnQgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L2RldmxpbmsvcG9ydC5jLTgyMS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjQ2OjM3LjQ3NDA5NzMzMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDk4NDgxMTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBEZXZsaW5rIFJlbG9hZCBIYW5kbGVycyoqXG5cbkFscmlnaHQsIHNvIHdlIG5lZWQgdG8gdHJhY2sgZG93biBob3cgdGhlc2UgcmVsb2FkIGNvbW1hbmRzIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgZGV2bGluayBzdWJzeXN0ZW0uIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgY29udGV4dCBvZiBhIHJlbG9hZCBvcGVyYXRpb24sIGlzIHRvIHplcm8gaW4gb24gZnVuY3Rpb25zIHRoYXQgbGlrZWx5IG1hbmFnZSB0aGF0IHByb2Nlc3MuIFNwZWNpZmljYWxseSwgSeKAmWQgYmUgY2hlY2tpbmcgb3V0IGBkZXZsaW5rX25sX2NtZF9yZWxvYWRfZG9pdGAgb3Igc2ltaWxhciBmdW5jdGlvbnMgaW4gdGhlIGBuZXQvZGV2bGluay9gIGRpcmVjdG9yeS4gVGhhdCBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0cyBhIGRpcmVjdCBsaW5rIHRvIHRoZSBOZXRsaW5rIGludGVyZmFjZSBhbmQgdGhlIGNvcmUgZXhlY3V0aW9uIGZsb3cgZm9yIHJlbG9hZCBjb21tYW5kcyB3aXRoaW4gdGhlIGRldmxpbmsgY29udGV4dC4gSSBleHBlY3QgdG8gZmluZCB0aGUgbWVhdCBvZiB0aGUgcHJvY2Vzc2luZyB0aGVyZSDigJMgcGFyc2luZyB0aGUgTmV0bGluayBtZXNzYWdlLCB2YWxpZGF0aW5nIHRoZSByZXF1ZXN0LCBhbmQgdWx0aW1hdGVseSBvcmNoZXN0cmF0aW5nIHRoZSBkZXZpY2UgcmVsb2FkIGl0c2VsZi4gRGVwZW5kaW5nIG9uIHRoZSBzb3BoaXN0aWNhdGlvbiBvZiB0aGUgZGV2bGluayBpbXBsZW1lbnRhdGlvbiwgdGhhdCBzcGVjaWZpYyBmdW5jdGlvbiBtaWdodCBiZSBhIHdyYXBwZXIgb3IgYW4gZW50cnkgcG9pbnQgdGhhdCBkZWxlZ2F0ZXMgdG8gYSBtb3JlIGdyYW51bGFyIHNldCBvZiBoYW5kbGVycyBkZXBlbmRpbmcgb24gdGhlIGRldmxpbmsgb2JqZWN0IHR5cGUgaW52b2x2ZWQuIFRpbWUgdG8gZ28gc3BlbHVua2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTcyNTMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0NjozOS41NzI1ODEzNzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzE2NDQxODgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmxpbmtfbmxfY21kX3JlbG9hZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6NDEuMjA0MjMzMDJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE4MzcwNDQwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipIdW50aW5nIERvd24gRGV2bGluayBSZWxvYWQgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIFwicmVsb2FkXCIgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYG5ldC9kZXZsaW5rL2AgZGlyZWN0b3J5LiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgZm9yIGRldmxpbmsgZGV2aWNlIG1hbmFnZW1lbnQgcmVzaWRlcywgc28gaXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nLiBUaGlzIHByb2JhYmx5IG1lYW5zIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGV2bGluayBpbmZyYXN0cnVjdHVyZSBoYW5kbGVzIHJlbG9hZHMsIHdoaWNoIGlzIGxpa2VseSBhIGNydWNpYWwgcGFydCBvZiBlcnJvciByZWNvdmVyeSwgaG90cGx1Z2dpbmcsIG9yIGV2ZW4gY29uZmlndXJhdGlvbiBjaGFuZ2VzIHRoYXQgcmVxdWlyZSBhIGRldmljZSByZXN0YXJ0LiBJIHN1c3BlY3QgaXQncyBnb2luZyB0byBpbnZvbHZlIHNvbWUgZm9ybSBvZiBtb2R1bGUgaW50ZXJhY3Rpb24gb3Igc3RhdGUgbWFuYWdlbWVudCBhbmQgSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUuIFRoZSBcInJlbG9hZCBkb2l0XCIgdGVybWlub2xvZ3kgc3VnZ2VzdHMgdGhlc2UgZnVuY3Rpb25zIGFyZSB3aGVyZSB0aGUgcmVhbCB3b3JrIGdldHMgZG9uZSwgcG9zc2libHkgYWZ0ZXIgc29tZSBwcmUtZmxpZ2h0IGNoZWNrcyBvciBjb250ZXh0IHNldHVwLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgYW5kIHN0YXJ0IGdyZXBwaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzUyOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjQ2OjQzLjM4NzkzOTY5MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUzNDU4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVsb2FkLipkb2l0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9kZXZsaW5rXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9kZXZsaW5rL2Rldi5jPTQ4OT1kZXZsaW5rX25sX3JlbG9hZF9hY3Rpb25zX3BlcmZvcm1lZF9zbmQoc3RydWN0IGRldmxpbmsgKmRldmxpbmssIHUzMiBhY3Rpb25zX3BlcmZvcm1lZCxcXG4tLVxcbm5ldC9kZXZsaW5rL2Rldi5jLTUxOS1cXG5uZXQvZGV2bGluay9kZXYuYzo1MjA6aW50IGRldmxpbmtfbmxfcmVsb2FkX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvZGV2bGluay9kZXYuYy01MjEte1xcbi0tXFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uYz03MDI9Y29uc3Qgc3RydWN0IGdlbmxfc3BsaXRfb3BzIGRldmxpbmtfbmxfb3BzWzc1XSA9IHtcXG4tLVxcbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmMtOTk0LVxcdFxcdC5wcmVfZG9pdFxcdD0gZGV2bGlua19ubF9wcmVfZG9pdF9kZXZfbG9jayxcXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jOjk5NTpcXHRcXHQuZG9pdFxcdFxcdD0gZGV2bGlua19ubF9yZWxvYWRfZG9pdCxcXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLTk5Ni1cXHRcXHQucG9zdF9kb2l0XFx0PSBkZXZsaW5rX25sX3Bvc3RfZG9pdF9kZXZfbG9jayxcXG4tLVxcbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmg9OTE9aW50IGRldmxpbmtfbmxfcmVzb3VyY2VfZHVtcF9kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oLTkyLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpO1xcbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmg6OTM6aW50IGRldmxpbmtfbmxfcmVsb2FkX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uaC05NC1pbnQgZGV2bGlua19ubF9wYXJhbV9nZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6NDMuNDMzMjg5MDNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ0NDIwODAzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYGRldmxpbmtfbmxfcmVsb2FkX2RvaXRgIGFuZCBpdHMgSW50ZXJhY3Rpb24gd2l0aCBgREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNgKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEknbSBmb2N1c2luZyBvbiBob3cgYGRldmxpbmtfbmxfcmVsb2FkX2RvaXRgIHV0aWxpemVzIHRoZSBgREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNgIGF0dHJpYnV0ZS4gTXkgcHJpbWFyeSBpbnRlcmVzdCBpcyBpbiB1bmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgcGFydGljdWxhcmx5IGhvdyByZXNvdXJjZSBjb25zdHJhaW50cywgaWYgYW55LCBhcmUgbWFuYWdlZCBkdXJpbmcgYSBkZXZpY2UgcmVsb2FkIG9wZXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSByZWxvYWQgbGltaXRzLCByZXByZXNlbnRlZCBieSB0aGlzIGF0dHJpYnV0ZSwgaW1wYWN0IHRoZSBvdmVyYWxsIGV4ZWN1dGlvbiBvZiB0aGUgcmVsb2FkIHByb2NlZHVyZS4gQXJlIHRoZXkgc3RyaWN0bHkgZW5mb3JjZWQ/IEFyZSB0aGV5IGFkdmlzb3J5PyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGlmIHRoZSBsaW1pdHMgYXJlIGV4Y2VlZGVkPyBJIGFsc28gbmVlZCB0byBhc2NlcnRhaW4gd2hhdCBvdGhlciBhc3BlY3RzIG9mIGRldmxpbmsgYXJlIHJlbGF0ZWQgdG8gdGhpcyBhdHRyaWJ1dGUsIGlzIHRoaXMgYSBzdGFuZGFsb25lIGZlYXR1cmUsIG9yIGlzIGl0IHJlbGF0ZWQgdG8gdGhpbmdzIGxpa2UgcG93ZXIgY29uc3VtcHRpb24sIGV0Yz8gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGBERVZMSU5LX0FUVFJfUkVMT0FEX0xJTUlUU2AgYXR0cmlidXRlIGlzIGJlaW5nIHByb3Blcmx5IHZhbGlkYXRlZCBhbmQgdXNlZCB0byBwcmV2ZW50IGFueSBwb3RlbnRpYWwgcmVzb3VyY2UgZXhoYXVzdGlvbiBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1cmluZyByZWxvYWRzLiBNeSB1bHRpbWF0ZSBnb2FsIGlzIHRvIGV2YWx1YXRlIGlmIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBvciBzZWN1cml0eSBpc3N1ZXMgZXhpc3QgaW4gdGhpcyBjb250cm9sIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTkwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6NDUuODc3NTAwNTc2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvZGV2bGluay9kZXYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MjAsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MjA6XFx0aW50IGRldmxpbmtfbmxfcmVsb2FkX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gNTIxOlxcdHtcXG4gNTIyOlxcdFxcdHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rID0gZGV2bGlua19ubF9jdHgoaW5mbyktXFx1MDAzZWRldmxpbms7XFxuIDUyMzpcXHRcXHRlbnVtIGRldmxpbmtfcmVsb2FkX2FjdGlvbiBhY3Rpb247XFxuIDUyNDpcXHRcXHRlbnVtIGRldmxpbmtfcmVsb2FkX2xpbWl0IGxpbWl0O1xcbiA1MjU6XFx0XFx0c3RydWN0IG5ldCAqZGVzdF9uZXQgPSBOVUxMO1xcbiA1MjY6XFx0XFx0dTMyIGFjdGlvbnNfcGVyZm9ybWVkO1xcbiA1Mjc6XFx0XFx0aW50IGVycjtcXG4gNTI4OlxcdFxcbiA1Mjk6XFx0XFx0ZXJyID0gZGV2bGlua19yZXNvdXJjZXNfdmFsaWRhdGUoZGV2bGluaywgTlVMTCwgaW5mbyk7XFxuIDUzMDpcXHRcXHRpZiAoZXJyKSB7XFxuIDUzMTpcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhpbmZvLVxcdTAwM2VleHRhY2ssIFxcXCJyZXNvdXJjZXMgc2l6ZSB2YWxpZGF0aW9uIGZhaWxlZFxcXCIpO1xcbiA1MzI6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNTMzOlxcdFxcdH1cXG4gNTM0OlxcdFxcbiA1MzU6XFx0XFx0YWN0aW9uID0gbmxhX2dldF91OF9kZWZhdWx0KGluZm8tXFx1MDAzZWF0dHJzW0RFVkxJTktfQVRUUl9SRUxPQURfQUNUSU9OXSxcXG4gNTM2OlxcdFxcdFxcdFxcdFxcdCAgICBERVZMSU5LX1JFTE9BRF9BQ1RJT05fRFJJVkVSX1JFSU5JVCk7XFxuIDUzNzpcXHRcXG4gNTM4OlxcdFxcdGlmICghZGV2bGlua19yZWxvYWRfYWN0aW9uX2lzX3N1cHBvcnRlZChkZXZsaW5rLCBhY3Rpb24pKSB7XFxuIDUzOTpcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhpbmZvLVxcdTAwM2VleHRhY2ssIFxcXCJSZXF1ZXN0ZWQgcmVsb2FkIGFjdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXJcXFwiKTtcXG4gNTQwOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gNTQxOlxcdFxcdH1cXG4gNTQyOlxcdFxcbiA1NDM6XFx0XFx0bGltaXQgPSBERVZMSU5LX1JFTE9BRF9MSU1JVF9VTlNQRUM7XFxuIDU0NDpcXHRcXHRpZiAoaW5mby1cXHUwMDNlYXR0cnNbREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNdKSB7XFxuIDU0NTpcXHRcXHRcXHRzdHJ1Y3QgbmxhX2JpdGZpZWxkMzIgbGltaXRzO1xcbiA1NDY6XFx0XFx0XFx0dTMyIGxpbWl0c19zZWxlY3RlZDtcXG4gNTQ3OlxcdFxcbiA1NDg6XFx0XFx0XFx0bGltaXRzID0gbmxhX2dldF9iaXRmaWVsZDMyKGluZm8tXFx1MDAzZWF0dHJzW0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSk7XFxuIDU0OTpcXHRcXHRcXHRsaW1pdHNfc2VsZWN0ZWQgPSBsaW1pdHMudmFsdWUgXFx1MDAyNiBsaW1pdHMuc2VsZWN0b3I7XFxuIDU1MDpcXHRcXHRcXHRpZiAoIWxpbWl0c19zZWxlY3RlZCkge1xcbiA1NTE6XFx0XFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coaW5mby1cXHUwMDNlZXh0YWNrLCBcXFwiSW52YWxpZCBsaW1pdCBzZWxlY3RlZFxcXCIpO1xcbiA1NTI6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU1MzpcXHRcXHRcXHR9XFxuIDU1NDpcXHRcXHRcXHRmb3IgKGxpbWl0ID0gMCA7IGxpbWl0IFxcdTAwM2M9IERFVkxJTktfUkVMT0FEX0xJTUlUX01BWCA7IGxpbWl0KyspXFxuIDU1NTpcXHRcXHRcXHRcXHRpZiAobGltaXRzX3NlbGVjdGVkIFxcdTAwMjYgQklUKGxpbWl0KSlcXG4gNTU2OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbiA1NTc6XFx0XFx0XFx0LyogVUFQSSBlbmFibGVzIG11bHRpc2VsZWN0aW9uLCBidXQgY3VycmVudGx5IGl0IGlzIG5vdCB1c2VkICovXFxuIDU1ODpcXHRcXHRcXHRpZiAobGltaXRzX3NlbGVjdGVkICE9IEJJVChsaW1pdCkpIHtcXG4gNTU5OlxcdFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGluZm8tXFx1MDAzZWV4dGFjaywgXFxcIk11bHRpc2VsZWN0aW9uIG9mIGxpbWl0IGlzIG5vdCBzdXBwb3J0ZWRcXFwiKTtcXG4gNTYwOlxcdFxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gNTYxOlxcdFxcdFxcdH1cXG4gNTYyOlxcdFxcdFxcdGlmICghZGV2bGlua19yZWxvYWRfbGltaXRfaXNfc3VwcG9ydGVkKGRldmxpbmssIGxpbWl0KSkge1xcbiA1NjM6XFx0XFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coaW5mby1cXHUwMDNlZXh0YWNrLCBcXFwiUmVxdWVzdGVkIGxpbWl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlclxcXCIpO1xcbiA1NjQ6XFx0XFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiA1NjU6XFx0XFx0XFx0fVxcbiA1NjY6XFx0XFx0XFx0aWYgKGRldmxpbmtfcmVsb2FkX2NvbWJpbmF0aW9uX2lzX2ludmFsaWQoYWN0aW9uLCBsaW1pdCkpIHtcXG4gNTY3OlxcdFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGluZm8tXFx1MDAzZWV4dGFjaywgXFxcIlJlcXVlc3RlZCBsaW1pdCBpcyBpbnZhbGlkIGZvciB0aGlzIGFjdGlvblxcXCIpO1xcbiA1Njg6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU2OTpcXHRcXHRcXHR9XFxuIDU3MDpcXHRcXHR9XFxuIDU3MTpcXHRcXHRpZiAoaW5mby1cXHUwMDNlYXR0cnNbREVWTElOS19BVFRSX05FVE5TX1BJRF0gfHxcXG4gNTcyOlxcdFxcdCAgICBpbmZvLVxcdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfTkVUTlNfRkRdIHx8XFxuIDU3MzpcXHRcXHQgICAgaW5mby1cXHUwMDNlYXR0cnNbREVWTElOS19BVFRSX05FVE5TX0lEXSkge1xcbiA1NzQ6XFx0XFx0XFx0ZGVzdF9uZXQgPSBkZXZsaW5rX25ldG5zX2dldChza2IsIGluZm8pO1xcbiA1NzU6XFx0XFx0XFx0aWYgKElTX0VSUihkZXN0X25ldCkpXFxuIDU3NjpcXHRcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihkZXN0X25ldCk7XFxuIDU3NzpcXHRcXHRcXHRpZiAoIW5ldF9lcShkZXN0X25ldCwgZGV2bGlua19uZXQoZGV2bGluaykpIFxcdTAwMjZcXHUwMDI2XFxuIDU3ODpcXHRcXHRcXHQgICAgYWN0aW9uICE9IERFVkxJTktfUkVMT0FEX0FDVElPTl9EUklWRVJfUkVJTklUKSB7XFxuIDU3OTpcXHRcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoaW5mby1cXHUwMDNlZXh0YWNrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0Njo0NS44Nzc2MDIyODZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzI4MzM0NzEzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmlhZ2UgVmVyZGljdDogV29ydGhGdXp6aW5nID0gVHJ1ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhpcyBwYXRjaCB0b3VjaGVzIHRoZSBgbmV0L2RldmxpbmsvYCBzdWJzeXN0ZW0sIGFuZCB0aGF0IGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gU3BlY2lmaWNhbGx5LCBJJ20gc2VlaW5nIG1vZGlmaWNhdGlvbnMgdG8gYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgLCBgZGV2bGlua19ubF9yZWxvYWRfZG9pdGAsIGFuZCB0aGUgYXNzb2NpYXRlZCBuZXRsaW5rIHBvbGljeSB0YWJsZXMuXG5cblRoZSBrZXkgY2hhbmdlcyBpbnZvbHZlIGBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0YCBpbiBgbmV0L2RldmxpbmsvcG9ydC5jYCBub3cgdXNpbmcgYSBkeW5hbWljYWxseSBwYXJzZWQgbmVzdGVkIGF0dHJpYnV0ZSBzdHJ1Y3R1cmUsIGFuZCBhIGZpeCBpbiBgZGV2bGlua19yZWxvYWRfbmxfcG9saWN5YCB3aXRoaW4gYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNgIHJlZ2FyZGluZyB2YWxpZGF0aW9uIGxpbWl0cy4gQWRkaXRpb25hbGx5LCBhIG5ldyBwb2xpY3kgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5YCBpcyBub3cgaW4gdXNlIHdpdGhpbiBgZGV2bGlua19wb3J0X3NldF9ubF9wb2xpY3lgLiBUaGlzIGRyb3BzIGBPUFNUQVRFYCBhbmQgYWRkcyBgTUFYX0lPX0VRU2AuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgXCJJcyB0aGlzIGZ1enphYmxlP1wiIFRoZSBhbnN3ZXIgaGluZ2VzIG9uIHdoZXRoZXIgdGhlIG1vZGlmaWVkIGNvZGUgaXMgKnJlYWNoYWJsZSouIEFuZCwgeWVzLCBgbmV0L2RldmxpbmsvYCBpcyBjb3JlIG5ldHdvcmtpbmcsIGEgbmV0bGluayBzdWJzeXN0ZW0uIEl0J3MgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSBpbiBzdGFuZGFyZCBRRU1VL0tWTSBlbnZpcm9ubWVudHMgdmlhIG5ldGRldnNpbSBvciBhbnkgZGV2bGluayBuZXRkZXZpY2UuIFNvIHRoZSBjcml0ZXJpYSBhcmUgbWV0IGZvciBcIldvcnRoRnV6emluZz10cnVlXCIuIEl0J3MgY29yZSBuZXR3b3JraW5nLCBhbmQgbmV0bGluayBpcyBhIGRlZmluaXRlIGF0dGFjayBzdXJmYWNlLlxuXG5Ob3csIGxldCdzIGRldGVybWluZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBgTkVUX0RFVkxJTktgIGlzIHRoZSBwcmltYXJ5IG9uZSwgb2YgY291cnNlLCBhbmQgYE5FVERFVlNJTWAgbG9va3MgbGlrZSBhIGdvb2QgYWRkaXRpb24gdG8gZW5zdXJlIGRldmxpbmsgZGV2aWNlcyBhcmUgcHJlc2VudCBmb3IgdGVzdGluZy4gU28sIEkgd2lsbCBpbmNsdWRlIGBORVRfREVWTElOS2AgYW5kIGBORVRERVZTSU1gIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AuXG5cbk5leHQsIHRoZSAqRm9jdXNTeW1ib2xzKi4gV2UgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IGltcGxlbWVudCB0aGUgbW9kaWZpZWQgbG9naWMgb3IgZGlyZWN0bHkgZXhlcmNpc2UgaXQuIEJhc2VkIG9uIHRoZSBwYXRjaCwgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBhcmU6XG5cbjEuICBgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0YCAodGhlIG5ldGxpbmsgZW50cnkgcG9pbnQgZm9yIHBvcnQgc2V0KVxuMi4gIGBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0YCAodGhlIHJlZmFjdG9yZWQgZnVuY3Rpb24gaW4gYG5ldC9kZXZsaW5rL3BvcnQuY2ApXG4zLiAgYGRldmxpbmtfbmxfcmVsb2FkX2RvaXRgICh3aG9zZSBuZXRsaW5rIHBvbGljeSB3YXMgbW9kaWZpZWQpLlxuXG5BIHF1aWNrIGNoZWNrIGNvbmZpcm1zIHRoYXQgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIGNhbGxlZCBieSBhIG5vbi1zdGF0aWMgKGBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRgKSBlbnRyeSBwb2ludC4gQm90aCBhcmUgcmVsZXZhbnQsIGFuZCBzbyBpcyBgZGV2bGlua19ubF9yZWxvYWRfZG9pdGAuXG5cbkRvdWJsZS1jaGVja2luZyBhZ2FpbnN0IHRoZSBndWlkZWxpbmVzLCB3ZSBoYXZlOlxuXG4qICAgKipXb3J0aEZ1enppbmcqKjogVHJ1ZVxuKiAgICoqRW5hYmxlQ29uZmlncyoqOiBcXFtcIk5FVF9ERVZMSU5LXCIsIFwiTkVUREVWU0lNXCJdXG4qICAgKipGb2N1c1N5bWJvbHMqKjogXFxbXCJkZXZsaW5rXFxfcG9ydFxcX2Z1bmN0aW9uXFxfc2V0XCIsIFwiZGV2bGlua1xcX25sXFxfcG9ydFxcX3NldFxcX2RvaXRcIiwgXCJkZXZsaW5rXFxfbmxcXF9yZWxvYWRcXF9kb2l0XCJdXG5cbkV2ZXJ5dGhpbmcgY2hlY2tzIG91dC4gVGhlIGBuZXQvZGV2bGluay9gIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIG5ldGxpbmssIHdoaWNoIHByZXNlbnRzIGEgY2xlYXIgYXR0YWNrIHZlY3Rvci4gSSdtIGNvbmZpZGVudCBpbiB0aGUgdmVyZGljdC4gV2UncmUgZ29pbmcgdG8gZnV6eiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTYwOSwiT3V0cHV0VG9rZW5zIjoxMzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6NTMuMTYwOTUyMzk2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEwNTA0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9ERVZMSU5LXCIsXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0XCIsXG4gICAgXCJkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRcIixcbiAgICBcImRldmxpbmtfbmxfcmVsb2FkX2RvaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGRldmxpbmsgbmV0bGluayBhdHRyaWJ1dGUgcG9saWNpZXMgYW5kIHRoZSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0IHBhcnNpbmcgbG9naWMgZm9yIGdlbmVyaWMgbmV0bGluayBjb21tYW5kcyAocG9ydC1zZXQgYW5kIHJlbG9hZCkuIFRoZSBjaGFuZ2VzIGFyZSBpbiBjb3JlIG5ldHdvcmtpbmcgbmV0bGluayBjb2RlLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGdlbmVyaWMgbmV0bGluayBkZXZsaW5rIGZhbWlseSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9ERVZMSU5LXCIsXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0XCIsXG4gICAgXCJkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRcIixcbiAgICBcImRldmxpbmtfbmxfcmVsb2FkX2RvaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGRldmxpbmsgbmV0bGluayBhdHRyaWJ1dGUgcG9saWNpZXMgYW5kIHRoZSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0IHBhcnNpbmcgbG9naWMgZm9yIGdlbmVyaWMgbmV0bGluayBjb21tYW5kcyAocG9ydC1zZXQgYW5kIHJlbG9hZCkuIFRoZSBjaGFuZ2VzIGFyZSBpbiBjb3JlIG5ldHdvcmtpbmcgbmV0bGluayBjb2RlLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGdlbmVyaWMgbmV0bGluayBkZXZsaW5rIGZhbWlseSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0Njo1My4yMzIwMTA5OTVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NjE0NzUwODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6NTMuMjMyNDY2NzE1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjY2MTQyODk5NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyB1cGRhdGVzIHRoZSBkZXZsaW5rIE5ldGxpbmsgWUFNTCBzcGVjaWZpY2F0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sKSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYXV0by1nZW5lcmF0ZWQgTmV0bGluayBwb2xpY2llcyAobmV0L2RldmxpbmsvbmV0bGlua19nZW4uYywgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaCksIGFuZCByZWZhY3RvcnMgbmV0L2RldmxpbmsvcG9ydC5jIHRvIHVzZSB0aGUgZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgaW5zdGVhZCBvZiBhIGR1cGxpY2F0ZWQgc3RhdGljIHBvbGljeS5cXG5cXG5UaGVzZSBjaGFuZ2VzIHN0cmljdGx5IHBlcnRhaW4gdG8gTmV0bGluayBtZXNzYWdlIHBvbGljeSB2YWxpZGF0aW9uLCBzY2hlbWEgZGVzY3JpcHRpb25zLCBhbmQgYXR0cmlidXRlIHBhcnNpbmcuIFRoZSBhcnJheSBgdGJgIHBhc3NlZCB0byBgbmxhX3BhcnNlX25lc3RlZCgpYCBpcyBhcHByb3ByaWF0ZWx5IHNpemVkIGFuZCBpbml0aWFsaXplZC96ZXJvZWQgYnkgYG5sYV9wYXJzZSgpYC4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSByZWFkcywgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIGFyZSBpbnRyb2R1Y2VkLiBTdGFuZGFyZCBzYW5pdGl6ZXJzIChLQVNBTikgYW5kIE5ldGxpbmsgcGFyc2VyIGNoZWNrcyBhcmUgc3VmZmljaWVudDsgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTQxYzQ3NDJmNzFkZmIzOWQxZTVkNjFiZjA2ZDJiMDRmZGM2MTY4ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDIwOjQ2OjEyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWxcbmluZGV4IDM4YjExOTBmM2QyNjkuLmFjYjIyODU2YTZhODUgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sXG5AQCAtMTc0LDYgKzE3NCwxOCBAQCBkZWZpbml0aW9uczpcbiAgICAgICAgIHZhbHVlOiAxXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZnctYWN0aXZhdGVcbisgIC1cbisgICAgdHlwZTogZW51bVxuKyAgICBuYW1lOiByZWxvYWQtbGltaXRcbisgICAgZW50cmllczpcbisgICAgICAtXG4rICAgICAgICBuYW1lOiB1bnNwZWNcbisgICAgICAgIGRvYzogbm8gY29uc3RyYWludHNcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBuby1yZXNldFxuKyAgICAgICAgZG9jOiBcdTAwM2UtXG4rICAgICAgICAgIE5vIHJlc2V0IGFsbG93ZWQsIG5vIGRvd24gdGltZSBhbGxvd2VkLCBubyBsaW5rIGZsYXAgYW5kIG5vXG4rICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaXMgbG9zdC5cbiAgIC1cbiAgICAgdHlwZTogZW51bVxuICAgICBuYW1lOiBwYXJhbS1jbW9kZVxuQEAgLTc3NSw3ICs3ODcsNyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWxvYWQtbGltaXRzXG4gICAgICAgICB0eXBlOiBiaXRmaWVsZDMyXG4tICAgICAgICBlbnVtOiByZWxvYWQtYWN0aW9uXG4rICAgICAgICBlbnVtOiByZWxvYWQtbGltaXRcbiAgICAgICAgIGVudW0tYXMtZmxhZ3M6IHRydWVcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBkZXYtc3RhdHNcbkBAIC03OTMsNiArODA1LDcgQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVsb2FkLXN0YXRzLWxpbWl0XG4gICAgICAgICB0eXBlOiB1OFxuKyAgICAgICAgZW51bTogcmVsb2FkLWxpbWl0XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVsb2FkLXN0YXRzLXZhbHVlXG4gICAgICAgICB0eXBlOiB1MzJcbkBAIC04NDUsMTMgKzg1OCwxNCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IGxpbmVjYXJkLXN1cHBvcnRlZC10eXBlc1xuICAgICAgICAgdHlwZTogbmVzdFxuICAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLWxpbmVjYXJkLXN1cHBvcnRlZC10eXBlc1xuLVxuLSAgICAgICMgVE9ETzogZmlsbCBpbiB0aGUgYXR0cmlidXRlcyBpbiBiZXR3ZWVuXG4tXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogbmVzdGVkLWRldmxpbmtcbisgICAgICAgIHR5cGU6IG5lc3RcbisgICAgICAgIG11bHRpLWF0dHI6IHRydWVcbisgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1uZXN0ZWQtZGV2bGlua1xuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHNlbGZ0ZXN0c1xuICAgICAgICAgdHlwZTogbmVzdFxuLSAgICAgICAgdmFsdWU6IDE3NlxuICAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXNlbGZ0ZXN0LWlkXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmF0ZS10eC1wcmlvcml0eVxuQEAgLTg5OCw3ICs5MTIsNyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBwYXJlbnQtZGV2XG4gICAgICAgICB0eXBlOiBuZXN0XG4tICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtcGFyZW50LWRldlxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLW5lc3RlZC1kZXZsaW5rXG4gICAgICAgICBkb2M6IHxcbiAgICAgICAgICAgSWRlbnRpZmllcyB0aGUgZGV2bGluayBpbnN0YW5jZSB3aGljaCBvd25zIHRoZSBwYXJlbnQgcmF0ZSBub2RlLlxuICAgICAgICAgICBVc2VkIHdpdGggcmF0ZS1zZXQgYW5kIHJhdGUtbmV3IHRvIHBhcmVudCBhIHJhdGUgb2JqZWN0IHRvIGEgbm9kZSBvblxuQEAgLTk3OCw2ICs5OTIsNDkgQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICB0eXBlOiBiaXRmaWVsZDMyXG4gICAgICAgICBlbnVtOiBwb3J0LWZuLWF0dHItY2FwXG4gICAgICAgICBlbnVtLWFzLWZsYWdzOiB0cnVlXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogZGV2bGlua1xuKyAgICAgICAgdHlwZTogbmVzdFxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLW5lc3RlZC1kZXZsaW5rXG4rICAgICAgICBkb2M6IEhhbmRsZSBvZiB0aGUgcGVlciBkZXZsaW5rIGluc3RhbmNlIGluc3RhbnRpYXRlZCBmb3IgdGhpcyBmdW5jdGlvbi5cbisgICAgICAtXG4rICAgICAgICBuYW1lOiBtYXgtaW8tZXFzXG4rICAgICAgICB0eXBlOiB1MzJcbitcbisgIC1cbisgICAgbmFtZTogZGwtcG9ydC1mdW5jdGlvbi1zZXRcbisgICAgc3Vic2V0LW9mOiBkbC1wb3J0LWZ1bmN0aW9uXG4rICAgIGRvYzogfFxuKyAgICAgIFBvcnQgZnVuY3Rpb24gYXR0cmlidXRlcyB0aGF0IGNhbiBiZSBjb25maWd1cmVkOyBvcHN0YXRlIGFuZCB0aGVcbisgICAgICBkZXZsaW5rIGhhbmRsZSBhcmUgcmVhZC1vbmx5LlxuKyAgICBhdHRyaWJ1dGVzOlxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGh3LWFkZHJcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBzdGF0ZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGNhcHNcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBtYXgtaW8tZXFzXG4rXG4rICAtXG4rICAgIG5hbWU6IGRsLXBvcnQtc2V0XG4rICAgIHN1YnNldC1vZjogZGV2bGlua1xuKyAgICBkb2M6IEF0dHJpYnV0ZXMgYWNjZXB0ZWQgYnkgdGhlIHBvcnQtc2V0IHJlcXVlc3QuXG4rICAgIGF0dHJpYnV0ZXM6XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogYnVzLW5hbWVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBkZXYtbmFtZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGluZGV4XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcG9ydC1pbmRleFxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBvcnQtdHlwZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBvcnQtZnVuY3Rpb25cbisgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1wb3J0LWZ1bmN0aW9uLXNldFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1kcGlwZS10YWJsZXNcbkBAIC0xMDA4LDYgKzEwNjUsOCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IGRwaXBlLXRhYmxlLXJlc291cmNlLWlkXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZHBpcGUtdGFibGUtcmVzb3VyY2UtdW5pdHNcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBwYWRcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtZHBpcGUtdGFibGUtbWF0Y2hlc1xuQEAgLTEwNDIsNiArMTEwMSw4IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogZHBpcGUtZW50cnktYWN0aW9uLXZhbHVlc1xuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGRwaXBlLWVudHJ5LWNvdW50ZXJcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBwYWRcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtZHBpcGUtZW50cnktbWF0Y2gtdmFsdWVzXG5AQCAtMTE4MCw2ICsxMjQxLDggQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICBuYW1lOiByZXNvdXJjZS11bml0XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVzb3VyY2Utb2NjXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcGFkXG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLXJlc291cmNlLWxpc3RcbkBAIC0xMjA3LDYgKzEyNzAsNyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgYXR0cmlidXRlczpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWdpb24tc25hcHNob3RcbisgICAgICAgIG11bHRpLWF0dHI6IHRydWVcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtcmVnaW9uLXNuYXBzaG90XG5AQCAtMTIyMSw2ICsxMjg1LDcgQEAgYXR0cmlidXRlLXNldHM6XG4gICAgIGF0dHJpYnV0ZXM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rXG4rICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLXJlZ2lvbi1jaHVua1xuQEAgLTEyMzAsNiArMTI5NSw4IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rLWRhdGFcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWdpb24tY2h1bmstYWRkclxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1mbXNnXG5AQCAtMTI3MCw2ICsxMzM3LDggQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICBuYW1lOiBoZWFsdGgtcmVwb3J0ZXItYXV0by1kdW1wXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogaGVhbHRoLXJlcG9ydGVyLWJ1cnN0LXBlcmlvZFxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1hdHRyLXN0YXRzXG5AQCAtMTI4NCw2ICsxMzUzLDEwIEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHN0YXRzLXJ4LWRyb3BwZWRcbiAgICAgICAgIHR5cGU6IHU2NFxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBhZFxuKyAgICAgICAgdHlwZTogcGFkXG4rICAgICAgICB2YWx1ZTogNjFcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtdHJhcC1tZXRhZGF0YVxuQEAgLTEzMDMsNiArMTM3Niw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICBhdHRyaWJ1dGVzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGxpbmVjYXJkLXR5cGVcbisgICAgICAgIG11bHRpLWF0dHI6IHRydWVcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtc2VsZnRlc3QtaWRcbkBAIC0xMzMwLDYgKzE0MDQsNTAgQEAgYXR0cmlidXRlLXNldHM6XG4gICAtXG4gICAgIG5hbWU6IGRsLXBhcmVudC1kZXZcbiAgICAgc3Vic2V0LW9mOiBkZXZsaW5rXG4rICAgIGRvYzogfFxuKyAgICAgIERldmxpbmsgaGFuZGxlIGFjY2VwdGVkIGFzIHRoZSBwYXJlbnQtZGV2IGlucHV0OyB0aGUgbmV0bnMgaWQgdGhlXG4rICAgICAga2VybmVsIHJlcG9ydHMgYmFjayBpcyBub3QgYWNjZXB0ZWQsIHRoZSBwYXJlbnQgaXMgYWx3YXlzIHJlc29sdmVkXG4rICAgICAgaW4gdGhlIGNhbGxlcidzIG5ldG5zLlxuKyAgICBhdHRyaWJ1dGVzOlxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGJ1cy1uYW1lXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogZGV2LW5hbWVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBpbmRleFxuK1xuKyAgLVxuKyAgICBuYW1lOiBkbC1yYXRlLXNldFxuKyAgICBzdWJzZXQtb2Y6IGRldmxpbmtcbisgICAgZG9jOiBBdHRyaWJ1dGVzIGFjY2VwdGVkIGJ5IHRoZSByYXRlLXNldCBhbmQgcmF0ZS1uZXcgcmVxdWVzdHMuXG4rICAgIGF0dHJpYnV0ZXM6XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogYnVzLW5hbWVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBkZXYtbmFtZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGluZGV4XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcmF0ZS1ub2RlLW5hbWVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiByYXRlLXR4LXNoYXJlXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcmF0ZS10eC1tYXhcbisgICAgICAtXG4rICAgICAgICBuYW1lOiByYXRlLXR4LXByaW9yaXR5XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcmF0ZS10eC13ZWlnaHRcbisgICAgICAtXG4rICAgICAgICBuYW1lOiByYXRlLXBhcmVudC1ub2RlLW5hbWVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiByYXRlLXRjLWJ3c1xuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBhcmVudC1kZXZcbisgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1wYXJlbnQtZGV2XG4rXG4rICAtXG4rICAgIG5hbWU6IGRsLW5lc3RlZC1kZXZsaW5rXG4rICAgIHN1YnNldC1vZjogZGV2bGlua1xuICAgICBhdHRyaWJ1dGVzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGJ1cy1uYW1lXG5AQCAtMTMzNyw2ICsxNDU1LDggQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICBuYW1lOiBkZXYtbmFtZVxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGluZGV4XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogbmV0bnMtaWRcbiBcbiBvcGVyYXRpb25zOlxuICAgZW51bS1tb2RlbDogZGlyZWN0aW9uYWxcbkBAIC0xMzYzLDYgKzE0ODMsNyBAQCBvcGVyYXRpb25zOlxuICAgICAgICAgICAgIC0gaW5kZXhcbiAgICAgICAgICAgICAtIHJlbG9hZC1mYWlsZWRcbiAgICAgICAgICAgICAtIGRldi1zdGF0c1xuKyAgICAgICAgICAgIC0gbmVzdGVkLWRldmxpbmtcbiAgICAgICBkdW1wOlxuICAgICAgICAgcmVwbHk6ICpnZXQtcmVwbHlcbiBcbkBAIC0xMzg4LDEzICsxNTA5LDEyIEBAIG9wZXJhdGlvbnM6XG4gICAgICAgICByZXF1ZXN0OlxuICAgICAgICAgICBhdHRyaWJ1dGVzOiAqZGV2LWlkLWF0dHJzXG4gICAgICAgICByZXBseTpcbi0gICAgICAgICAgdmFsdWU6IDMgICMgZHVlIHRvIGEgYnVnLCBwb3J0IGR1bXAgcmV0dXJucyBERVZMSU5LX0NNRF9ORVdcbiAgICAgICAgICAgYXR0cmlidXRlczogKnBvcnQtaWQtYXR0cnNcbiBcbiAgICAgLVxuICAgICAgIG5hbWU6IHBvcnQtc2V0XG4gICAgICAgZG9jOiBTZXQgZGV2bGluayBwb3J0IGluc3RhbmNlcy5cbi0gICAgICBhdHRyaWJ1dGUtc2V0OiBkZXZsaW5rXG4rICAgICAgYXR0cmlidXRlLXNldDogZGwtcG9ydC1zZXRcbiAgICAgICBkb250LXZhbGlkYXRlOiBbc3RyaWN0XVxuICAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV1cbiAgICAgICBkbzpcbkBAIC0xOTc1LDYgKzIwOTUsNyBAQCBvcGVyYXRpb25zOlxuICAgICAgICAgICAgIC0gaW5kZXhcbiAgICAgICAgICAgICAtIHBvcnQtaW5kZXhcbiAgICAgICAgICAgICAtIHJlZ2lvbi1uYW1lXG4rICAgICAgICAgICAgLSByZWdpb24tY2h1bmtzXG4gXG4gICAgIC1cbiAgICAgICBuYW1lOiBwb3J0LXBhcmFtLWdldFxuQEAgLTIzMDUsNyArMjQyNiw3IEBAIG9wZXJhdGlvbnM6XG4gICAgIC1cbiAgICAgICBuYW1lOiByYXRlLXNldFxuICAgICAgIGRvYzogU2V0IHJhdGUgaW5zdGFuY2VzLlxuLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmtcbisgICAgICBhdHRyaWJ1dGUtc2V0OiBkbC1yYXRlLXNldFxuICAgICAgIGRvbnQtdmFsaWRhdGU6IFtzdHJpY3RdXG4gICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXVxuICAgICAgIGRvOlxuQEAgLTIzMjgsNyArMjQ0OSw3IEBAIG9wZXJhdGlvbnM6XG4gICAgIC1cbiAgICAgICBuYW1lOiByYXRlLW5ld1xuICAgICAgIGRvYzogQ3JlYXRlIHJhdGUgaW5zdGFuY2VzLlxuLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmtcbisgICAgICBhdHRyaWJ1dGUtc2V0OiBkbC1yYXRlLXNldFxuICAgICAgIGRvbnQtdmFsaWRhdGU6IFtzdHJpY3RdXG4gICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXVxuICAgICAgIGRvOlxuQEAgLTIzNzQsMTQgKzI0OTUsMjIgQEAgb3BlcmF0aW9uczpcbiAgICAgICAgIHBvc3Q6IGRldmxpbmstbmwtcG9zdC1kb2l0XG4gICAgICAgICByZXF1ZXN0OlxuICAgICAgICAgICB2YWx1ZTogNzhcbi0gICAgICAgICAgYXR0cmlidXRlczogXHUwMDI2bGluZWNhcmQtaWQtYXR0cnNcbisgICAgICAgICAgYXR0cmlidXRlczpcbiAgICAgICAgICAgICAtIGJ1cy1uYW1lXG4gICAgICAgICAgICAgLSBkZXYtbmFtZVxuICAgICAgICAgICAgIC0gaW5kZXhcbiAgICAgICAgICAgICAtIGxpbmVjYXJkLWluZGV4XG4gICAgICAgICByZXBseTogXHUwMDI2bGluZWNhcmQtZ2V0LXJlcGx5XG4gICAgICAgICAgIHZhbHVlOiA4MFxuLSAgICAgICAgICBhdHRyaWJ1dGVzOiAqbGluZWNhcmQtaWQtYXR0cnNcbisgICAgICAgICAgYXR0cmlidXRlczpcbisgICAgICAgICAgICAtIGJ1cy1uYW1lXG4rICAgICAgICAgICAgLSBkZXYtbmFtZVxuKyAgICAgICAgICAgIC0gaW5kZXhcbisgICAgICAgICAgICAtIGxpbmVjYXJkLWluZGV4XG4rICAgICAgICAgICAgLSBsaW5lY2FyZC1zdGF0ZVxuKyAgICAgICAgICAgIC0gbGluZWNhcmQtdHlwZVxuKyAgICAgICAgICAgIC0gbGluZWNhcmQtc3VwcG9ydGVkLXR5cGVzXG4rICAgICAgICAgICAgLSBuZXN0ZWQtZGV2bGlua1xuICAgICAgIGR1bXA6XG4gICAgICAgICByZXF1ZXN0OlxuICAgICAgICAgICBhdHRyaWJ1dGVzOiAqZGV2LWlkLWF0dHJzXG5kaWZmIC0tZ2l0IGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uYyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNcbmluZGV4IGRlYzAwMTMzMTc4ZDEuLjQzZWY2ODY0ZDQ2MmYgMTAwNjQ0XG4tLS0gYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jXG4rKysgYi9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jXG5AQCAtNTIsMTEgKzUyLDExIEBAIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcGFyZW50X2Rldl9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICsgMV1cbiBcdFtERVZMSU5LX0FUVFJfSU5ERVhdID0gTkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VSU5ULCBcdTAwMjZkZXZsaW5rX2F0dHJfaW5kZXhfcmFuZ2UpLFxuIH07XG4gXG4tY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX25sX3BvbGljeVtERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTICsgMV0gPSB7XG4rY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRUyArIDFdID0ge1xuIFx0W0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJdID0geyAudHlwZSA9IE5MQV9CSU5BUlksIH0sXG4gXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfU1RBVEVdID0gTkxBX1BPTElDWV9NQVgoTkxBX1U4LCAxKSxcbi1cdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9PUFNUQVRFXSA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VOCwgMSksXG4gXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQU10gPSBOTEFfUE9MSUNZX0JJVEZJRUxEMzIoMTUpLFxuK1x0W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXG4gfTtcbiBcbiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3JhdGVfdGNfYndzX25sX3BvbGljeVtERVZMSU5LX1JBVEVfVENfQVRUUl9CVyArIDFdID0ge1xuQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfcG9ydF9zZXRfbmxfcG9saWN5W0RFVkxJTktfQVRUUl9JTkRFWCArIDFcbiBcdFtERVZMSU5LX0FUVFJfSU5ERVhdID0gTkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VSU5ULCBcdTAwMjZkZXZsaW5rX2F0dHJfaW5kZXhfcmFuZ2UpLFxuIFx0W0RFVkxJTktfQVRUUl9QT1JUX0lOREVYXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LFxuIFx0W0RFVkxJTktfQVRUUl9QT1JUX1RZUEVdID0gTkxBX1BPTElDWV9NQVgoTkxBX1UxNiwgMyksXG4tXHRbREVWTElOS19BVFRSX1BPUlRfRlVOQ1RJT05dID0gTkxBX1BPTElDWV9ORVNURUQoZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX25sX3BvbGljeSksXG4rXHRbREVWTElOS19BVFRSX1BPUlRfRlVOQ1RJT05dID0gTkxBX1BPTElDWV9ORVNURUQoZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3kpLFxuIH07XG4gXG4gLyogREVWTElOS19DTURfUE9SVF9ORVcgLSBkbyAqL1xuQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19yZWxvYWRfbmxfcG9saWN5W0RFVkxJTktfQVRUUl9JTkRFWCArIDFdXG4gXHRbREVWTElOS19BVFRSX0RFVl9OQU1FXSA9IHsgLnR5cGUgPSBOTEFfTlVMX1NUUklORywgfSxcbiBcdFtERVZMSU5LX0FUVFJfSU5ERVhdID0gTkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VSU5ULCBcdTAwMjZkZXZsaW5rX2F0dHJfaW5kZXhfcmFuZ2UpLFxuIFx0W0RFVkxJTktfQVRUUl9SRUxPQURfQUNUSU9OXSA9IE5MQV9QT0xJQ1lfUkFOR0UoTkxBX1U4LCAxLCAyKSxcbi1cdFtERVZMSU5LX0FUVFJfUkVMT0FEX0xJTUlUU10gPSBOTEFfUE9MSUNZX0JJVEZJRUxEMzIoNiksXG4rXHRbREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDMpLFxuIFx0W0RFVkxJTktfQVRUUl9ORVROU19QSURdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXG4gXHRbREVWTElOS19BVFRSX05FVE5TX0ZEXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LFxuIFx0W0RFVkxJTktfQVRUUl9ORVROU19JRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcbmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oIGIvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaFxuaW5kZXggYTcwZTBlNDc2OWFhNS4uOTljY2FjYzY5M2I3NiAxMDA2NDRcbi0tLSBhL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmhcbisrKyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmhcbkBAIC0xNCw3ICsxNCw3IEBAXG4gXG4gLyogQ29tbW9uIG5lc3RlZCB0eXBlcyAqL1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BhcmVudF9kZXZfbmxfcG9saWN5W0RFVkxJTktfQVRUUl9JTkRFWCArIDFdO1xuLWV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFMgKyAxXTtcbitleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRUyArIDFdO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3JhdGVfdGNfYndzX25sX3BvbGljeVtERVZMSU5LX1JBVEVfVENfQVRUUl9CVyArIDFdO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3NlbGZ0ZXN0X2lkX25sX3BvbGljeVtERVZMSU5LX0FUVFJfU0VMRlRFU1RfSURfRkxBU0ggKyAxXTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9wb3J0LmMgYi9uZXQvZGV2bGluay9wb3J0LmNcbmluZGV4IDE1MjhmMmQxNDhkZmMuLjgwMzQyOWQ5YTAwODkgMTAwNjQ0XG4tLS0gYS9uZXQvZGV2bGluay9wb3J0LmNcbisrKyBiL25ldC9kZXZsaW5rL3BvcnQuY1xuQEAgLTYsMTkgKzYsNiBAQFxuIFxuICNpbmNsdWRlIFwiZGV2bF9pbnRlcm5hbC5oXCJcbiBcbi0jZGVmaW5lIERFVkxJTktfUE9SVF9GTl9DQVBTX1ZBTElEX01BU0sgXFxcbi1cdChfQklUVUwoX19ERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTX01BWCkgLSAxKVxuLVxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeVtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9NQVggKyAxXSA9IHtcbi1cdFtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZIH0sXG4tXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfU1RBVEVdID1cbi1cdFx0TkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIERFVkxJTktfUE9SVF9GTl9TVEFURV9JTkFDVElWRSxcbi1cdFx0XHRcdCBERVZMSU5LX1BPUlRfRk5fU1RBVEVfQUNUSVZFKSxcbi1cdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTXSA9XG4tXHRcdE5MQV9QT0xJQ1lfQklURklFTEQzMihERVZMSU5LX1BPUlRfRk5fQ0FQU19WQUxJRF9NQVNLKSxcbi1cdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4tfTtcbi1cbiAjZGVmaW5lIEFTU0VSVF9ERVZMSU5LX1BPUlRfUkVHSVNURVJFRChkZXZsaW5rX3BvcnQpXHRcdFx0XHRcXFxuIFx0V0FSTl9PTl9PTkNFKCEoZGV2bGlua19wb3J0KS1cdTAwM2VyZWdpc3RlcmVkKVxuICNkZWZpbmUgQVNTRVJUX0RFVkxJTktfUE9SVF9OT1RfUkVHSVNURVJFRChkZXZsaW5rX3BvcnQpXHRcdFx0XFxcbkBAIC03ODIsMTEgKzc2OSwxMSBAQCBzdGF0aWMgaW50IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqcG9ydCxcbiBcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcbiBcdFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdHN0cnVjdCBubGF0dHIgKnRiW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCArIDFdO1xuK1x0c3RydWN0IG5sYXR0ciAqdGJbQVJSQVlfU0laRShkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSldO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIERFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCwgYXR0cixcbi1cdFx0XHQgICAgICAgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3ksIGV4dGFjayk7XG4rXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBBUlJBWV9TSVpFKHRiKSAtIDEsIGF0dHIsXG4rXHRcdFx0ICAgICAgIGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5LCBleHRhY2spO1xuIFx0aWYgKGVyciBcdTAwM2MgMCkge1xuIFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiRmFpbCB0byBwYXJzZSBwb3J0IGZ1bmN0aW9uIGF0dHJpYnV0ZXNcIik7XG4gXHRcdHJldHVybiBlcnI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0Njo1My4yMzI0Njc1OTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTE2OTk2MzM5NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyBpbiB0aGUgRGV2bGluayBLZXJuZWwgUGF0Y2ggU2VyaWVzKipcblxuT2theSwgc28gbXkgdGFzayBoZXJlIGlzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoaXMga2VybmVsIHBhdGNoIHNlcmllcyB3YXJyYW50cyBydW5uaW5nIEtNU0FOLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBpZGVudGlmeSBhbnkgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBMZXQncyBicmVhayBpdCBkb3duLlxuXG5GaXJzdCwgSSBzZWUgdXBkYXRlcyB0byB0aGUgTmV0bGluayBzcGVjaWZpY2F0aW9uIFlBTUwgZm9yIGRldmxpbmsgKGBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sYCkuIFRoaXMgaXMgbW9zdGx5IHNjaGVtYSBhbmQgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLCBkZWZpbmluZyBhdHRyaWJ1dGVzLCBldGMuLCBzbyBvbiBpdHMgb3duLCBzZWVtcyB1bmxpa2VseSB0byBpbnRyb2R1Y2UgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuIFdlIGhhdmUgc2NoZW1hIGRlZmluaXRpb25zIHRoYXQgYXJlIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGNvZGUgZnJvbSB0aG9zZSBzY2hlbWFzLlxuXG5OZXh0LCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNgIGFuZCBgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaGAuIEl0IGFwcGVhcnMgdG8gYmUgZ2VuZXJhdGluZyBOZXRsaW5rIHBvbGljeSB1cGRhdGVzIGJhc2VkIG9uIHRoZSBZQU1MIGZpbGUuIEkgc2VlIHRoZSBwb2xpY3kgZGVmaW5pdGlvbnMgYmVpbmcgdXBkYXRlZDogYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lgIGJlY29taW5nIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAsIHdpdGggYSBub3RhYmxlIGluY3JlYXNlIGluIHNpemUgYW5kIGBkZXZsaW5rX3JlbG9hZF9ubF9wb2xpY3lgIGdldHMgYSBiaXRmaWVsZCB1cGRhdGUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgZGlmZnMsIGJ1dCB0aGlzIGlzIGF1dG8tZ2VuZXJhdGVkIGNvZGUsIHNvIEknZCBiZSBsb29raW5nIGZvciBhIGxvZ2ljIGVycm9yIGluIHRoZSBjb2RlIGdlbmVyYXRvciB3aGljaCBpcyB1bmxpa2VseSwgYnV0IHBvc3NpYmxlLlxuXG5GaW5hbGx5LCB0aGUgY29yZSBvZiB0aGUgY29uY2VybiBsaWVzIGluIGBuZXQvZGV2bGluay9wb3J0LmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBwYXRjaCByZW1vdmVzIGEgaGFuZC13cml0dGVuIGBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeWAgYW5kIHJlcGxhY2VzIGl0IHdpdGggdGhlIGF1dG8tZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAuIFRoZSBjaGFuZ2UgaW52b2x2ZXMgYSBgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCgpYCBmdW5jdGlvbi4gSW5zaWRlIHRoaXMgZnVuY3Rpb24sIEkgc2VlIGBzdHJ1Y3QgbmxhdHRyICp0YltBUlJBWV9TSVpFKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5KV07YCBkZWNsYXJlZCwgYW5kIHRoZW4gYG5sYV9wYXJzZV9uZXN0ZWQodGIsIEFSUkFZX1NJWkUodGIpIC0gMSwgYXR0ciwgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3ksIGV4dGFjayk7YC5cblxuVGhpcyBpcyB3aGVyZSBJIGZvY3VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHRiYCBpcyBpbml0aWFsaXplZCBhbmQgdXNlZC4gYG5sYV9wYXJzZV9uZXN0ZWRgIGZpbGxzIHRoZSBgdGJgIGFycmF5LCB3aGljaCwgd2hlbiBwcm9wZXJseSBpbXBsZW1lbnRlZCwgc2hvdWxkIGJlIE9LLiBIb3dldmVyLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBhcmd1bWVudHMgZnJvbSBgbmxhX3BhcnNlX25lc3RlZGAgYXJlIHVzZWQuIElmIGB0YmAgaXMgcGFydGlhbGx5IGluaXRpYWxpemVkIGFuZCBpdHMgY29udGVudHMgYXJlIHVzZWQgd2l0aG91dCBwcm9wZXIgYm91bmRzIGNoZWNrcyBvciBpbml0aWFsaXphdGlvbiBjaGVja3MgZWxzZXdoZXJlLCB0aGF0IGNvdWxkIGJlIGEgcHJvYmxlbS4gTXkgcHJpbWFyeSBmb2N1cyBpcyB0byB2ZXJpZnkgdGhhdCBgdGJgIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJ5IGBubGFfcGFyc2VfbmVzdGVkYCBvciB0aGF0IGFueSB1bmluaXRpYWxpemVkIHBhcnRzIGFyZSBoYW5kbGVkIGNvcnJlY3RseS5cblxuVGhlcmVmb3JlLCBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgbmV0L2RldmxpbmsvcG9ydC5jYCBhcm91bmQgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoKWAuIEkgd2lsbCB1c2UgYGdyZXBwZXJgIG9yIHNpbXBseSByZWFkIHRoZSBjb2RlIGFyb3VuZCB0aGF0IGFyZWEgdG8gdmVyaWZ5IHRoYXQgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb25zIGR1ZSB0byBjaGFuZ2VzIGluIHRoZSBkYXRhIHN0cnVjdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NDAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0NzowNC45MzIxMDUzMTZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMzU5MjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2RldmxpbmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9kZXZsaW5rL3BvcnQuYz02OTM9c3RhdGljIGludCBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fdmFsaWRhdGUoc3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0LFxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jLTc2Ny1cXG5uZXQvZGV2bGluay9wb3J0LmM6NzY4OnN0YXRpYyBpbnQgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpwb3J0LFxcbm5ldC9kZXZsaW5rL3BvcnQuYy03NjktXFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTgyMD1pbnQgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtODM3LVxcbm5ldC9kZXZsaW5rL3BvcnQuYzo4Mzg6XFx0XFx0ZXJyID0gZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldChkZXZsaW5rX3BvcnQsIGF0dHIsIGV4dGFjayk7XFxubmV0L2RldmxpbmsvcG9ydC5jLTgzOS1cXHRcXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0NzowNC45ODU0NzA5MjVaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU3MzgyNzY1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcHJvY2Vzc2luZyB0aGUgY29kZSBteXNlbGY6XG5cbioqRGVsdmluZyBpbnRvIERldmxpbmsgUG9ydCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIGBuZXQvZGV2bGluay9wb3J0LmNgLCBzcGVjaWZpY2FsbHkgbGluZXMgNzYwIHRvIDgyMC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBpbXBsZW1lbnRlZCBpbiB0aGlzIHNlY3Rpb24sIGxpa2VseSBpbnZvbHZpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3IgbWFuaXB1bGF0aW9uIG9mIGEgZGV2bGluayBwb3J0LiBJJ20gaW1tZWRpYXRlbHkgZXhwZWN0aW5nIHRvIHNlZSBkZXRhaWxzIGFyb3VuZCBzZXR0aW5nIG9yIHJldHJpZXZpbmcgcHJvcGVydGllcywgaGFuZGxpbmcgc3BlY2lmaWMgY29tbWFuZHMsIG9yIHBvdGVudGlhbGx5IGV2ZW4gbWFuYWdpbmcgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgaW50ZXJhY3Rpb25zIHRocm91Z2ggdGhpcyBwb3J0LiBCYXNlZCBvbiBteSBleHBlcmllbmNlLCB0aGlzIGxpa2VseSBpbnZvbHZlcyBjaGVja2luZyBwZXJtaXNzaW9ucyBvciB2YXJpb3VzIHBhcmFtZXRlcnMgdG8gZXN0YWJsaXNoIHRoZSBjb3JyZWN0IGNvbmRpdGlvbnMgZm9yIGFjY2VzcywgaGFuZGxpbmcgZXJyb3IgY29uZGl0aW9ucywgYW5kIG1hbmFnaW5nIGxvY2tzIHRvIGVuc3VyZSB0aHJlYWQgc2FmZXR5IHdoZW4gbW9kaWZ5aW5nIHNoYXJlZCBkYXRhLiBJJ2xsIG5lZWQgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBob3cgdGhleSBoYW5kbGUgZGlmZmVyZW50IHBvcnQgdHlwZXMgb3Igb3BlcmF0aW9uYWwgc3RhdGVzLCBhcyB0aGVzZSBhcmUgZnJlcXVlbnRseSB0aGUgc291cmNlcyBvZiBzdWJ0bGUgYnVncywgZGVwZW5kaW5nIG9uIHRoZSBwYXJ0aWN1bGFyIGRyaXZlci4gSSdtIGFsc28gYW50aWNpcGF0aW5nIHNvbWUgaW50ZXJhY3Rpb24gd2l0aCBuZXRsaW5rIG1lc3NhZ2VzIG9yIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zLCBnaXZlbiB0aGUgbmF0dXJlIG9mIGRldmxpbmsuIFRoaXMgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgcGljdHVyZSBvZiBob3cgdGhlc2UgcG9ydHMgYXJlIGluaXRpYWxpemVkIGFuZCB3aGF0IHNvcnQgb2YgY3VzdG9taXphdGlvbiBvcHRpb25zIGFyZSBhdmFpbGFibGUuIEknbGwgYmUgbG9va2luZyBjYXJlZnVsbHkgYXQgdGhlIGRhdGEgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQgYXJvdW5kLCBiZWNhdXNlLCBkZXBlbmRpbmcgb24gdGhlIGFyY2hpdGVjdHVyZSwgdGhlcmUgY291bGQgYmUgaW50ZXJlc3Rpbmcgb3B0aW1pemF0aW9ucyBvciBtZW1vcnkgbWFuYWdlbWVudCBkZXRhaWxzIGluIHRoZSBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3NzAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0NzowNy41NTkzMDExMzFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9kZXZsaW5rL3BvcnQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NjAsXG4gIFwiTGluZUNvdW50XCI6IDY1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NjA6XFx0XFx0ICAgICFvcHMtXFx1MDAzZXBvcnRfZm5fbWF4X2lvX2Vxc19zZXQpIHtcXG4gNzYxOlxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoZXh0YWNrLCB0YltERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTXSxcXG4gNzYyOlxcdFxcdFxcdFxcdFxcdCAgICBcXFwiRnVuY3Rpb24gZG9lcyBub3Qgc3VwcG9ydCBtYXhfaW9fZXFzIHNldHRpbmdcXFwiKTtcXG4gNzYzOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gNzY0OlxcdFxcdH1cXG4gNzY1OlxcdFxcdHJldHVybiAwO1xcbiA3NjY6XFx0fVxcbiA3Njc6XFx0XFxuIDc2ODpcXHRzdGF0aWMgaW50IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqcG9ydCxcXG4gNzY5OlxcdFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG4gNzcwOlxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiA3NzE6XFx0e1xcbiA3NzI6XFx0XFx0c3RydWN0IG5sYXR0ciAqdGJbQVJSQVlfU0laRShkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSldO1xcbiA3NzM6XFx0XFx0aW50IGVycjtcXG4gNzc0OlxcdFxcbiA3NzU6XFx0XFx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgQVJSQVlfU0laRSh0YikgLSAxLCBhdHRyLFxcbiA3NzY6XFx0XFx0XFx0XFx0ICAgICAgIGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5LCBleHRhY2spO1xcbiA3Nzc6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4gNzc4OlxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIkZhaWwgdG8gcGFyc2UgcG9ydCBmdW5jdGlvbiBhdHRyaWJ1dGVzXFxcIik7XFxuIDc3OTpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA3ODA6XFx0XFx0fVxcbiA3ODE6XFx0XFxuIDc4MjpcXHRcXHRlcnIgPSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fdmFsaWRhdGUocG9ydCwgdGIsIGV4dGFjayk7XFxuIDc4MzpcXHRcXHRpZiAoZXJyKVxcbiA3ODQ6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNzg1OlxcdFxcbiA3ODY6XFx0XFx0YXR0ciA9IHRiW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJdO1xcbiA3ODc6XFx0XFx0aWYgKGF0dHIpIHtcXG4gNzg4OlxcdFxcdFxcdGVyciA9IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9od19hZGRyX3NldChwb3J0LCBhdHRyLCBleHRhY2spO1xcbiA3ODk6XFx0XFx0XFx0aWYgKGVycilcXG4gNzkwOlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDc5MTpcXHRcXHR9XFxuIDc5MjpcXHRcXG4gNzkzOlxcdFxcdGF0dHIgPSB0YltERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTXTtcXG4gNzk0OlxcdFxcdGlmIChhdHRyKSB7XFxuIDc5NTpcXHRcXHRcXHRlcnIgPSBkZXZsaW5rX3BvcnRfZm5fY2Fwc19zZXQocG9ydCwgYXR0ciwgZXh0YWNrKTtcXG4gNzk2OlxcdFxcdFxcdGlmIChlcnIpXFxuIDc5NzpcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA3OTg6XFx0XFx0fVxcbiA3OTk6XFx0XFxuIDgwMDpcXHRcXHRhdHRyID0gdGJbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU107XFxuIDgwMTpcXHRcXHRpZiAoYXR0cikge1xcbiA4MDI6XFx0XFx0XFx0ZXJyID0gZGV2bGlua19wb3J0X2ZuX21heF9pb19lcXNfc2V0KHBvcnQsIGF0dHIsIGV4dGFjayk7XFxuIDgwMzpcXHRcXHRcXHRpZiAoZXJyKVxcbiA4MDQ6XFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gODA1OlxcdFxcdH1cXG4gODA2OlxcdFxcbiA4MDc6XFx0XFx0LyogS2VlcCB0aGlzIGFzIHRoZSBsYXN0IGZ1bmN0aW9uIGF0dHJpYnV0ZSBzZXQsIHNvIHRoYXQgd2hlblxcbiA4MDg6XFx0XFx0ICogbXVsdGlwbGUgcG9ydCBmdW5jdGlvbiBhdHRyaWJ1dGVzIGFyZSBzZXQgYWxvbmcgd2l0aCBzdGF0ZSxcXG4gODA5OlxcdFxcdCAqIFRob3NlIGNhbiBiZSBhcHBsaWVkIGZpcnN0IGJlZm9yZSBhY3RpdmF0aW5nIHRoZSBzdGF0ZS5cXG4gODEwOlxcdFxcdCAqL1xcbiA4MTE6XFx0XFx0YXR0ciA9IHRiW0RFVkxJTktfUE9SVF9GTl9BVFRSX1NUQVRFXTtcXG4gODEyOlxcdFxcdGlmIChhdHRyKVxcbiA4MTM6XFx0XFx0XFx0ZXJyID0gZGV2bGlua19wb3J0X2ZuX3N0YXRlX3NldChwb3J0LCBhdHRyLCBleHRhY2spO1xcbiA4MTQ6XFx0XFxuIDgxNTpcXHRcXHRpZiAoIWVycilcXG4gODE2OlxcdFxcdFxcdGRldmxpbmtfcG9ydF9ub3RpZnkocG9ydCwgREVWTElOS19DTURfUE9SVF9ORVcpO1xcbiA4MTc6XFx0XFx0cmV0dXJuIGVycjtcXG4gODE4OlxcdH1cXG4gODE5OlxcdFxcbiA4MjA6XFx0aW50IGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiA4MjE6XFx0e1xcbiA4MjI6XFx0XFx0c3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0ID0gZGV2bGlua19ubF9jdHgoaW5mbyktXFx1MDAzZWRldmxpbmtfcG9ydDtcXG4gODIzOlxcdFxcdGludCBlcnI7XFxuIDgyNDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDc6MDcuNTU5NDYxOTcxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ3MDYzMzI4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRsaW5rIEF0dHJpYnV0ZSBQYXJzaW5nIExvZ2ljKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYG5sYV9wYXJzZV9uZXN0ZWRgIGlzIGJlaW5nIHVzZWQgaGVyZSwgYW5kIGl0IGxvb2tzIGxpa2UgaXQgaW5pdGlhbGl6ZXMgdGhlIGB0YmAgYXJyYXkgYnkgY2xlYXJpbmcgb3Igc2V0dGluZyB0aGUgcG9pbnRlcnMuIFNwZWNpZmljYWxseSwgYG5sYV9wYXJzZV9uZXN0ZWRgIGlzIGNhbGxlZCB3aXRoIGB0YmAgYW5kIGBBUlJBWV9TSVpFKHRiKSAtIDFgLCBhbG9uZyB3aXRoIG90aGVyIHBhcmFtZXRlcnMgbGlrZSBgYXR0cmAuIEkgbmVlZCB0byBjb25maXJtIGhvdyBgbmxhX3BhcnNlX25lc3RlZGAgb3BlcmF0ZXMgdW5kZXIgdGhlIGhvb2QuIEl0IHNlZW1zIHRvIGJlIGVpdGhlciBkb2luZyBhIGBtZW1zZXRgIHRvIHplcm8gb3V0IGB0YmAgb3IgdXNpbmcgYG5sYV9wYXJzZWAuXG5cbkEgZGVlcGVyIGxvb2sgYXQgYG5sYV9wYXJzZWAgY29uZmlybXMgaXQncyBkb2luZyBhIGBtZW1zZXRgIG9uIGB0YmAgd2l0aCBgbWVtc2V0KHRiLCAwLCBzaXplb2Yoc3RydWN0IG5sYXR0ciAqKSAqIChtYXh0eXBlICsgMSkpYC4gSW4gdGhpcyBjb250ZXh0LCB0aGUgc2l6ZSBvZiB0aGUgYHRiYCBhcnJheSwgYEFSUkFZX1NJWkUodGIpYCwgaXMgZXF1YWwgdG8gYERFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVMgKyAxYC4gVGhpcyBpbXBsaWVzIHRoYXQgYEFSUkFZX1NJWkUodGIpIC0gMWAgaXMgdGhlbiBgREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU2AuIFNvLCBgdGJbMF1gIHVwIHRvIGB0YltERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTXWAgc2hvdWxkIGJlIGdldHRpbmcgemVyb2VkIG91dCwgYW5kIHRoZW4gcG9wdWxhdGVkIGJ5IGBubGFfcGFyc2VgLlxuXG5OZXh0LCBJJ2xsIGV4YW1pbmUgdGhlIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgZGVmaW5pdGlvbiwgZm91bmQgaW4gYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNgLiBJdCdzIGEgYGNvbnN0IHN0cnVjdCBubGFfcG9saWN5YCBhcnJheSB3aXRoIGEgc2l6ZSBvZiBgW0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVMgKyAxXWAuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBhY2Nlc3MgdG8gYWxsIGVsZW1lbnRzIGluIGB0YmAgYXJlIHdpdGhpbiBhY2NlcHRhYmxlIGJvdW5kcywgYW5kIGl0IGxvb2tzIGxpa2UgaXQgaXMuIEhlcmUgYXJlIHRoZSBhdHRyaWJ1dGVzIHRoYXQgc2VlbSB0byBiZSByZWxldmFudDogYERFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJgICh2YWx1ZSAxKSwgYERFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNgICh2YWx1ZSAzKSwgYERFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNgICh2YWx1ZSA0KSwgYW5kIGBERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURWAgKHZhbHVlIDIpLiBBbGwgdGhlIGluZGljZXMgYXJlIHdpdGhpbiB0aGUgcmFuZ2UgSSd2ZSBjYWxjdWxhdGVkLCB1cCB0byBgREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU2AuXG5cbkZpbmFsbHksIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIHJldmlldyB0aGUgZW51bSB2YWx1ZXMgb2YgYERFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSXypgIHRvIHZlcmlmeSB0aGV5IGFsaWduIHdpdGggdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCB3aGljaCBJJ2xsIGZpbmQgaW4gYGluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmhgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTI4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDc6MTIuMjY1Nzk3NTE3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDExMjI1OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREVWTElOS19QT1JUX0ZOX0FUVFJfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaD03MjE9ZW51bSBkZXZsaW5rX3BvcnRfZm5fYXR0cl9jYXAge1xcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzIyOlxcdERFVkxJTktfUE9SVF9GTl9BVFRSX0NBUF9ST0NFX0JJVCxcXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oOjcyMzpcXHRERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBfTUlHUkFUQUJMRV9CSVQsXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3MjQ6XFx0REVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX0lQU0VDX0NSWVBUT19CSVQsXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3MjU6XFx0REVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX0lQU0VDX1BBQ0tFVF9CSVQsXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaC03MjYtXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaC03MjctXFx0LyogQWRkIG5ldyBjYXBzIGFib3ZlICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3Mjg6XFx0X19ERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTX01BWCxcXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTcyOS19O1xcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmgtNzMwLVxcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzMxOiNkZWZpbmUgREVWTElOS19QT1JUX0ZOX0NBUF9ST0NFIF9CSVRVTChERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBfUk9DRV9CSVQpXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaC03MzItI2RlZmluZSBERVZMSU5LX1BPUlRfRk5fQ0FQX01JR1JBVEFCTEUgXFxcXFxcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzMzOlxcdF9CSVRVTChERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBfTUlHUkFUQUJMRV9CSVQpXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3MzQ6I2RlZmluZSBERVZMSU5LX1BPUlRfRk5fQ0FQX0lQU0VDX0NSWVBUTyBfQklUVUwoREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX0lQU0VDX0NSWVBUT19CSVQpXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3MzU6I2RlZmluZSBERVZMSU5LX1BPUlRfRk5fQ0FQX0lQU0VDX1BBQ0tFVCBfQklUVUwoREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX0lQU0VDX1BBQ0tFVF9CSVQpXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaC03MzYtXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaD03Mzc9ZW51bSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fYXR0ciB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTczOS1cXHRERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSLFxcdC8qIGJpbmFyeSAqL1xcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzQwOlxcdERFVkxJTktfUE9SVF9GTl9BVFRSX1NUQVRFLFxcdC8qIHU4ICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3NDE6XFx0REVWTElOS19QT1JUX0ZOX0FUVFJfT1BTVEFURSxcXHQvKiB1OCAqL1xcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzQyOlxcdERFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFMsXFx0LyogYml0ZmllbGQzMiAqL1xcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzQzOlxcdERFVkxJTktfUE9SVF9GTl9BVFRSX0RFVkxJTkssXFx0LyogbmVzdGVkICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3NDQ6XFx0REVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRUyxcXHQvKiB1MzIgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTc0NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDc6MTIuNTA2OTI2MjM0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjczMzk4MDA5NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBEZXZsaW5rIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGZvY3VzZWQgb24gcmVmaW5pbmcgdGhlIGludGVybmFsIHdvcmtpbmdzIGFuZCBkb2N1bWVudGF0aW9uIG9mIHRoZSBEZXZsaW5rIHN1YnN5c3RlbSwgcGFydGljdWxhcmx5IGFyb3VuZCBob3cgaXQgaGFuZGxlcyBOZXRsaW5rIGF0dHJpYnV0ZXMuXG5cbkZpcnN0LCB0aGUgY29yZSBvZiBpdCBpbnZvbHZlcyB1cGRhdGluZyB0aGUgYGRldmxpbmsueWFtbGAgc3BlY2lmaWNhdGlvbi4gSXQgc2VlbXMgbGlrZSB0aGUgZ29hbCBpcyB0byBtYWtlIHRoZSBzY2hlbWEgZGVmaW5pdGlvbnMgbW9yZSBwcmVjaXNlLCBlc3BlY2lhbGx5IGFyb3VuZCBhdHRyaWJ1dGVzIHJlbGF0ZWQgdG8gc2V0cywgcmVwbGllcywgbXVsdGktYXR0cmlidXRlIGZsYWdzLCBhbmQgZW51bXMuIFRoaXMgaXMgYSBnb29kIG1vdmU7IGEgbW9yZSBhY2N1cmF0ZSBZQU1MIHNwZWMgaXMgY3J1Y2lhbCBmb3IgZ2VuZXJhdGluZyBjb3JyZWN0IGFuZCBtYWludGFpbmFibGUgTmV0bGluayBjb2RlLlxuXG5UaGUgdXBkYXRlcyB0byB0aGUgYXV0by1nZW5lcmF0ZWQgZmlsZXMsIGBuZXRsaW5rX2dlbi5jYCBhbmQgYG5ldGxpbmtfZ2VuLmhgLCBhcmUgZXhwZWN0ZWQuIFRoZXnigJlyZSBkaXJlY3RseSBkZXJpdmVkIGZyb20gdGhlIFlBTUwgc3BlYy4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlIGZyb20gYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lgIHRvIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgYW5kIHRoZSBiaXRtYXNrIGNvbnN0cmFpbnQgZm9yIHJlbG9hZCBsaW1pdHMgaW4gYGRldmxpbmtfcmVsb2FkX25sX3BvbGljeWAgYXJlIHNpbXBseSB0aGUgZG93bnN0cmVhbSBlZmZlY3RzIG9mIHJlZmluaW5nIHRoZSBZQU1MLlxuXG5UaGUgbW9zdCBpbnRlcmVzdGluZyBwYXJ0IGlzIGluIGBuZXQvZGV2bGluay9wb3J0LmNgLiBJdCdzIGNsZWFuaW5nIHVwIHRoZSBjb2RlIGJ5IGRlZHVwbGljYXRpbmcgdGhlIHBvbGljeSwgcmVwbGFjaW5nIHRoZSBtYW51YWxseSBkZWZpbmVkIGBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeWAgd2l0aCB0aGUgYXV0by1nZW5lcmF0ZWQgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5YCB3aXRoaW4gdGhlIGBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KClgIGZ1bmN0aW9uLiBUaGlzIGltcHJvdmVzIG1haW50YWluYWJpbGl0eSBhbmQgZW5zdXJlcyBjb25zaXN0ZW5jeS5cblxuTm93LCBsZXQncyBhZGRyZXNzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBhcmUgdGhlcmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBCYXNlZCBvbiBteSByZXZpZXcsIHRoZSBwYXRjaCBzZWVtcyB0byBiZSBxdWl0ZSBzYWZlLiBObyBtZW1vcnkgaXMgYWxsb2NhdGVkIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24sIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBkb24ndCBzZWUgYW55IG9idmlvdXMgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlIGVpdGhlci4gVGhlIHVzZSBvZiBgbmxhX3BhcnNlX25lc3RlZGAgZm9yIHBhcnNpbmcgbmVzdGVkIE5ldGxpbmsgYXR0cmlidXRlcyBwcm92aWRlcyBhIHJvYnVzdCBzb2x1dGlvbiwgc2luY2UgaXQgemVyb2VzIG91dCB0aGUgYHRiYCBzdHJ1Y3QsIHdoaWNoIGlzIGVzc2VudGlhbC4gVGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBmb2N1c2VkIG9uIE5ldGxpbmsgYXR0cmlidXRlIHZhbGlkYXRpb24gYW5kIGRvY3VtZW50YXRpb24sIHdoaWNoIHNob3VsZCByZWR1Y2UgdGhlIGNoYW5jZSBmb3IgZXJyb3JzLiBFeGlzdGluZyBOZXRsaW5rIHBhcnNpbmcgbWVjaGFuaXNtcywgYW5kIEtBU0FOLCBzZWVtIHRvIGNhdGNoIGFueSBvdXQtb2YtYm91bmRzIGFjY2Vzcy5cblxuU28sIHRvIHN1bW1hcml6ZSBhbmQgYW5zd2VyIG15IG93biBxdWVzdGlvbnM6XG5cbiogICBEb2VzIHRoaXMgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gTm8uIFRoZSBwYXRjaCBsb29rcyB2ZXJ5IHNhZmUgb24gdGhhdCBmcm9udC5cbiogICBUaGUgc3RhbmRhcmQgS0FTQU4gYW5kIFVCU0FOIGJ1aWxkcyBzaG91bGQgZWFzaWx5IGJlIGFibGUgdG8gZGV0ZWN0IGFueSBidWZmZXIgb3ZlcnJ1bnMgb3IgdHlwZSBpc3N1ZXMgaWYgdGhleSBzb21laG93IGV4aXN0ZWQuXG4qICAgTmVlZHNLTVNBTiBzaG91bGQgYmUgZmFsc2UuXG5cbkZpbmFsbHksIGp1c3QgdG8gYmUgc3VyZTpcblxuYE5lZWRzS01TQU5gOiBmYWxzZVxuYEtNU0FOUmVhc29uaW5nYDogVGhlIHJlYXNvbmluZyBpcyBjbGVhci4gS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMDIsIk91dHB1dFRva2VucyI6MjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjQ3OjE5Ljg0NjczMDA1NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIHVwZGF0ZXMgdGhlIGRldmxpbmsgTmV0bGluayBZQU1MIHNwZWNpZmljYXRpb24gKERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWwpIGFuZCB0aGUgY29ycmVzcG9uZGluZyBhdXRvLWdlbmVyYXRlZCBOZXRsaW5rIHBvbGljaWVzIChuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLCBuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oKSwgYW5kIHJlZmFjdG9ycyBuZXQvZGV2bGluay9wb3J0LmMgdG8gdXNlIHRoZSBnZW5lcmF0ZWQgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5YCBpbnN0ZWFkIG9mIGEgZHVwbGljYXRlZCBzdGF0aWMgcG9saWN5LlxcblxcblRoZXNlIGNoYW5nZXMgc3RyaWN0bHkgcGVydGFpbiB0byBOZXRsaW5rIG1lc3NhZ2UgcG9saWN5IHZhbGlkYXRpb24sIHNjaGVtYSBkZXNjcmlwdGlvbnMsIGFuZCBhdHRyaWJ1dGUgcGFyc2luZy4gVGhlIGFycmF5IGB0YmAgcGFzc2VkIHRvIGBubGFfcGFyc2VfbmVzdGVkKClgIGlzIGFwcHJvcHJpYXRlbHkgc2l6ZWQgYW5kIGluaXRpYWxpemVkL3plcm9lZCBieSBgbmxhX3BhcnNlKClgLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHJlYWRzLCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UgYXJlIGludHJvZHVjZWQuIFN0YW5kYXJkIHNhbml0aXplcnMgKEtBU0FOKSBhbmQgTmV0bGluayBwYXJzZXIgY2hlY2tzIGFyZSBzdWZmaWNpZW50OyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgdXBkYXRlcyB0aGUgZGV2bGluayBOZXRsaW5rIFlBTUwgc3BlY2lmaWNhdGlvbiAoRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbCkgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGF1dG8tZ2VuZXJhdGVkIE5ldGxpbmsgcG9saWNpZXMgKG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmMsIG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmgpLCBhbmQgcmVmYWN0b3JzIG5ldC9kZXZsaW5rL3BvcnQuYyB0byB1c2UgdGhlIGdlbmVyYXRlZCBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGluc3RlYWQgb2YgYSBkdXBsaWNhdGVkIHN0YXRpYyBwb2xpY3kuXFxuXFxuVGhlc2UgY2hhbmdlcyBzdHJpY3RseSBwZXJ0YWluIHRvIE5ldGxpbmsgbWVzc2FnZSBwb2xpY3kgdmFsaWRhdGlvbiwgc2NoZW1hIGRlc2NyaXB0aW9ucywgYW5kIGF0dHJpYnV0ZSBwYXJzaW5nLiBUaGUgYXJyYXkgYHRiYCBwYXNzZWQgdG8gYG5sYV9wYXJzZV9uZXN0ZWQoKWAgaXMgYXBwcm9wcmlhdGVseSBzaXplZCBhbmQgaW5pdGlhbGl6ZWQvemVyb2VkIGJ5IGBubGFfcGFyc2UoKWAuIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMsIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSBhcmUgaW50cm9kdWNlZC4gU3RhbmRhcmQgc2FuaXRpemVycyAoS0FTQU4pIGFuZCBOZXRsaW5rIHBhcnNlciBjaGVja3MgYXJlIHN1ZmZpY2llbnQ7IGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslsm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 20:24:28 +0000 UTC FinishedAt: 2026-09-10 20:47:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "0abe8777490ebc008635ecb20297761d1b317697", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEVLINK", "NETDEVSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "0abe8777490ebc008635ecb20297761d1b317697", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEVLINK", "NETDEVSIM" ], "series_id": "1209b9ee-c1ef-4aa8-8eff-6668a9263919" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "devlink_port_function_set", "devlink_nl_port_set_doit", "devlink_nl_reload_doit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZMSU5LJiMzNDssCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQmIzM0OywKICAgICYjMzQ7ZGV2bGlua19ubF9wb3J0X3NldF9kb2l0JiMzNDssCiAgICAmIzM0O2RldmxpbmtfbmxfcmVsb2FkX2RvaXQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgdXBkYXRlcyB0aGUgZGV2bGluayBOZXRsaW5rIFlBTUwgc3BlY2lmaWNhdGlvbiAoRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbCkgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGF1dG8tZ2VuZXJhdGVkIE5ldGxpbmsgcG9saWNpZXMgKG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmMsIG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmgpLCBhbmQgcmVmYWN0b3JzIG5ldC9kZXZsaW5rL3BvcnQuYyB0byB1c2UgdGhlIGdlbmVyYXRlZCBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGluc3RlYWQgb2YgYSBkdXBsaWNhdGVkIHN0YXRpYyBwb2xpY3kuXG5cblRoZXNlIGNoYW5nZXMgc3RyaWN0bHkgcGVydGFpbiB0byBOZXRsaW5rIG1lc3NhZ2UgcG9saWN5IHZhbGlkYXRpb24sIHNjaGVtYSBkZXNjcmlwdGlvbnMsIGFuZCBhdHRyaWJ1dGUgcGFyc2luZy4gVGhlIGFycmF5IGB0YmAgcGFzc2VkIHRvIGBubGFfcGFyc2VfbmVzdGVkKClgIGlzIGFwcHJvcHJpYXRlbHkgc2l6ZWQgYW5kIGluaXRpYWxpemVkL3plcm9lZCBieSBgbmxhX3BhcnNlKClgLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHJlYWRzLCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UgYXJlIGludHJvZHVjZWQuIFN0YW5kYXJkIHNhbml0aXplcnMgKEtBU0FOKSBhbmQgTmV0bGluayBwYXJzZXIgY2hlY2tzIGFyZSBzdWZmaWNpZW50OyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBkZXZsaW5rIG5ldGxpbmsgYXR0cmlidXRlIHBvbGljaWVzIGFuZCB0aGUgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCBwYXJzaW5nIGxvZ2ljIGZvciBnZW5lcmljIG5ldGxpbmsgY29tbWFuZHMgKHBvcnQtc2V0IGFuZCByZWxvYWQpLiBUaGUgY2hhbmdlcyBhcmUgaW4gY29yZSBuZXR3b3JraW5nIG5ldGxpbmsgY29kZSwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBnZW5lcmljIG5ldGxpbmsgZGV2bGluayBmYW1pbHkgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDk0MWM0NzQyZjcxZGZiMzlkMWU1ZDYxYmYwNmQyYjA0ZmRjNjE2OGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAyMDo0NjoxMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbFxuaW5kZXggMzhiMTE5MGYzZDI2OS4uYWNiMjI4NTZhNmE4NSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWxcbkBAIC0xNzQsNiAmIzQzOzE3NCwxOCBAQCBkZWZpbml0aW9uczpcbiAgICAgICAgIHZhbHVlOiAxXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZnctYWN0aXZhdGVcbiYjNDM7ICAtXG4mIzQzOyAgICB0eXBlOiBlbnVtXG4mIzQzOyAgICBuYW1lOiByZWxvYWQtbGltaXRcbiYjNDM7ICAgIGVudHJpZXM6XG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiB1bnNwZWNcbiYjNDM7ICAgICAgICBkb2M6IG5vIGNvbnN0cmFpbnRzXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBuby1yZXNldFxuJiM0MzsgICAgICAgIGRvYzogXHUwMDNlLVxuJiM0MzsgICAgICAgICAgTm8gcmVzZXQgYWxsb3dlZCwgbm8gZG93biB0aW1lIGFsbG93ZWQsIG5vIGxpbmsgZmxhcCBhbmQgbm9cbiYjNDM7ICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaXMgbG9zdC5cbiAgIC1cbiAgICAgdHlwZTogZW51bVxuICAgICBuYW1lOiBwYXJhbS1jbW9kZVxuQEAgLTc3NSw3ICYjNDM7Nzg3LDcgQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVsb2FkLWxpbWl0c1xuICAgICAgICAgdHlwZTogYml0ZmllbGQzMlxuLSAgICAgICAgZW51bTogcmVsb2FkLWFjdGlvblxuJiM0MzsgICAgICAgIGVudW06IHJlbG9hZC1saW1pdFxuICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZVxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGRldi1zdGF0c1xuQEAgLTc5Myw2ICYjNDM7ODA1LDcgQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVsb2FkLXN0YXRzLWxpbWl0XG4gICAgICAgICB0eXBlOiB1OFxuJiM0MzsgICAgICAgIGVudW06IHJlbG9hZC1saW1pdFxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHJlbG9hZC1zdGF0cy12YWx1ZVxuICAgICAgICAgdHlwZTogdTMyXG5AQCAtODQ1LDEzICYjNDM7ODU4LDE0IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogbGluZWNhcmQtc3VwcG9ydGVkLXR5cGVzXG4gICAgICAgICB0eXBlOiBuZXN0XG4gICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtbGluZWNhcmQtc3VwcG9ydGVkLXR5cGVzXG4tXG4tICAgICAgIyBUT0RPOiBmaWxsIGluIHRoZSBhdHRyaWJ1dGVzIGluIGJldHdlZW5cbi1cbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IG5lc3RlZC1kZXZsaW5rXG4mIzQzOyAgICAgICAgdHlwZTogbmVzdFxuJiM0MzsgICAgICAgIG11bHRpLWF0dHI6IHRydWVcbiYjNDM7ICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtbmVzdGVkLWRldmxpbmtcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBzZWxmdGVzdHNcbiAgICAgICAgIHR5cGU6IG5lc3Rcbi0gICAgICAgIHZhbHVlOiAxNzZcbiAgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1zZWxmdGVzdC1pZFxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHJhdGUtdHgtcHJpb3JpdHlcbkBAIC04OTgsNyAmIzQzOzkxMiw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHBhcmVudC1kZXZcbiAgICAgICAgIHR5cGU6IG5lc3Rcbi0gICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1wYXJlbnQtZGV2XG4mIzQzOyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLW5lc3RlZC1kZXZsaW5rXG4gICAgICAgICBkb2M6IHxcbiAgICAgICAgICAgSWRlbnRpZmllcyB0aGUgZGV2bGluayBpbnN0YW5jZSB3aGljaCBvd25zIHRoZSBwYXJlbnQgcmF0ZSBub2RlLlxuICAgICAgICAgICBVc2VkIHdpdGggcmF0ZS1zZXQgYW5kIHJhdGUtbmV3IHRvIHBhcmVudCBhIHJhdGUgb2JqZWN0IHRvIGEgbm9kZSBvblxuQEAgLTk3OCw2ICYjNDM7OTkyLDQ5IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgdHlwZTogYml0ZmllbGQzMlxuICAgICAgICAgZW51bTogcG9ydC1mbi1hdHRyLWNhcFxuICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZVxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogZGV2bGlua1xuJiM0MzsgICAgICAgIHR5cGU6IG5lc3RcbiYjNDM7ICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtbmVzdGVkLWRldmxpbmtcbiYjNDM7ICAgICAgICBkb2M6IEhhbmRsZSBvZiB0aGUgcGVlciBkZXZsaW5rIGluc3RhbmNlIGluc3RhbnRpYXRlZCBmb3IgdGhpcyBmdW5jdGlvbi5cbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IG1heC1pby1lcXNcbiYjNDM7ICAgICAgICB0eXBlOiB1MzJcbiYjNDM7XG4mIzQzOyAgLVxuJiM0MzsgICAgbmFtZTogZGwtcG9ydC1mdW5jdGlvbi1zZXRcbiYjNDM7ICAgIHN1YnNldC1vZjogZGwtcG9ydC1mdW5jdGlvblxuJiM0MzsgICAgZG9jOiB8XG4mIzQzOyAgICAgIFBvcnQgZnVuY3Rpb24gYXR0cmlidXRlcyB0aGF0IGNhbiBiZSBjb25maWd1cmVkOyBvcHN0YXRlIGFuZCB0aGVcbiYjNDM7ICAgICAgZGV2bGluayBoYW5kbGUgYXJlIHJlYWQtb25seS5cbiYjNDM7ICAgIGF0dHJpYnV0ZXM6XG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBody1hZGRyXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBzdGF0ZVxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogY2Fwc1xuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogbWF4LWlvLWVxc1xuJiM0MztcbiYjNDM7ICAtXG4mIzQzOyAgICBuYW1lOiBkbC1wb3J0LXNldFxuJiM0MzsgICAgc3Vic2V0LW9mOiBkZXZsaW5rXG4mIzQzOyAgICBkb2M6IEF0dHJpYnV0ZXMgYWNjZXB0ZWQgYnkgdGhlIHBvcnQtc2V0IHJlcXVlc3QuXG4mIzQzOyAgICBhdHRyaWJ1dGVzOlxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogYnVzLW5hbWVcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IGRldi1uYW1lXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBpbmRleFxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogcG9ydC1pbmRleFxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogcG9ydC10eXBlXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBwb3J0LWZ1bmN0aW9uXG4mIzQzOyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBvcnQtZnVuY3Rpb24tc2V0XG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLWRwaXBlLXRhYmxlc1xuQEAgLTEwMDgsNiAmIzQzOzEwNjUsOCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IGRwaXBlLXRhYmxlLXJlc291cmNlLWlkXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZHBpcGUtdGFibGUtcmVzb3VyY2UtdW5pdHNcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1kcGlwZS10YWJsZS1tYXRjaGVzXG5AQCAtMTA0Miw2ICYjNDM7MTEwMSw4IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogZHBpcGUtZW50cnktYWN0aW9uLXZhbHVlc1xuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGRwaXBlLWVudHJ5LWNvdW50ZXJcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1kcGlwZS1lbnRyeS1tYXRjaC12YWx1ZXNcbkBAIC0xMTgwLDYgJiM0MzsxMjQxLDggQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICBuYW1lOiByZXNvdXJjZS11bml0XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVzb3VyY2Utb2NjXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBwYWRcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtcmVzb3VyY2UtbGlzdFxuQEAgLTEyMDcsNiAmIzQzOzEyNzAsNyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgYXR0cmlidXRlczpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWdpb24tc25hcHNob3RcbiYjNDM7ICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLXJlZ2lvbi1zbmFwc2hvdFxuQEAgLTEyMjEsNiAmIzQzOzEyODUsNyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgYXR0cmlidXRlczpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWdpb24tY2h1bmtcbiYjNDM7ICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLXJlZ2lvbi1jaHVua1xuQEAgLTEyMzAsNiAmIzQzOzEyOTUsOCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IHJlZ2lvbi1jaHVuay1kYXRhXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rLWFkZHJcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1mbXNnXG5AQCAtMTI3MCw2ICYjNDM7MTMzNyw4IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogaGVhbHRoLXJlcG9ydGVyLWF1dG8tZHVtcFxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGhlYWx0aC1yZXBvcnRlci1idXJzdC1wZXJpb2RcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1hdHRyLXN0YXRzXG5AQCAtMTI4NCw2ICYjNDM7MTM1MywxMCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBzdGF0cy1yeC1kcm9wcGVkXG4gICAgICAgICB0eXBlOiB1NjRcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHBhZFxuJiM0MzsgICAgICAgIHR5cGU6IHBhZFxuJiM0MzsgICAgICAgIHZhbHVlOiA2MVxuIFxuICAgLVxuICAgICBuYW1lOiBkbC10cmFwLW1ldGFkYXRhXG5AQCAtMTMwMyw2ICYjNDM7MTM3Niw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICBhdHRyaWJ1dGVzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGxpbmVjYXJkLXR5cGVcbiYjNDM7ICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLXNlbGZ0ZXN0LWlkXG5AQCAtMTMzMCw2ICYjNDM7MTQwNCw1MCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgIC1cbiAgICAgbmFtZTogZGwtcGFyZW50LWRldlxuICAgICBzdWJzZXQtb2Y6IGRldmxpbmtcbiYjNDM7ICAgIGRvYzogfFxuJiM0MzsgICAgICBEZXZsaW5rIGhhbmRsZSBhY2NlcHRlZCBhcyB0aGUgcGFyZW50LWRldiBpbnB1dDsgdGhlIG5ldG5zIGlkIHRoZVxuJiM0MzsgICAgICBrZXJuZWwgcmVwb3J0cyBiYWNrIGlzIG5vdCBhY2NlcHRlZCwgdGhlIHBhcmVudCBpcyBhbHdheXMgcmVzb2x2ZWRcbiYjNDM7ICAgICAgaW4gdGhlIGNhbGxlciYjMzk7cyBuZXRucy5cbiYjNDM7ICAgIGF0dHJpYnV0ZXM6XG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBidXMtbmFtZVxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogZGV2LW5hbWVcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IGluZGV4XG4mIzQzO1xuJiM0MzsgIC1cbiYjNDM7ICAgIG5hbWU6IGRsLXJhdGUtc2V0XG4mIzQzOyAgICBzdWJzZXQtb2Y6IGRldmxpbmtcbiYjNDM7ICAgIGRvYzogQXR0cmlidXRlcyBhY2NlcHRlZCBieSB0aGUgcmF0ZS1zZXQgYW5kIHJhdGUtbmV3IHJlcXVlc3RzLlxuJiM0MzsgICAgYXR0cmlidXRlczpcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IGJ1cy1uYW1lXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBkZXYtbmFtZVxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogaW5kZXhcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtbm9kZS1uYW1lXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiByYXRlLXR4LXNoYXJlXG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiByYXRlLXR4LW1heFxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogcmF0ZS10eC1wcmlvcml0eVxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogcmF0ZS10eC13ZWlnaHRcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtcGFyZW50LW5vZGUtbmFtZVxuJiM0MzsgICAgICAtXG4mIzQzOyAgICAgICAgbmFtZTogcmF0ZS10Yy1id3NcbiYjNDM7ICAgICAgLVxuJiM0MzsgICAgICAgIG5hbWU6IHBhcmVudC1kZXZcbiYjNDM7ICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtcGFyZW50LWRldlxuJiM0MztcbiYjNDM7ICAtXG4mIzQzOyAgICBuYW1lOiBkbC1uZXN0ZWQtZGV2bGlua1xuJiM0MzsgICAgc3Vic2V0LW9mOiBkZXZsaW5rXG4gICAgIGF0dHJpYnV0ZXM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogYnVzLW5hbWVcbkBAIC0xMzM3LDYgJiM0MzsxNDU1LDggQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICBuYW1lOiBkZXYtbmFtZVxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGluZGV4XG4mIzQzOyAgICAgIC1cbiYjNDM7ICAgICAgICBuYW1lOiBuZXRucy1pZFxuIFxuIG9wZXJhdGlvbnM6XG4gICBlbnVtLW1vZGVsOiBkaXJlY3Rpb25hbFxuQEAgLTEzNjMsNiAmIzQzOzE0ODMsNyBAQCBvcGVyYXRpb25zOlxuICAgICAgICAgICAgIC0gaW5kZXhcbiAgICAgICAgICAgICAtIHJlbG9hZC1mYWlsZWRcbiAgICAgICAgICAgICAtIGRldi1zdGF0c1xuJiM0MzsgICAgICAgICAgICAtIG5lc3RlZC1kZXZsaW5rXG4gICAgICAgZHVtcDpcbiAgICAgICAgIHJlcGx5OiAqZ2V0LXJlcGx5XG4gXG5AQCAtMTM4OCwxMyAmIzQzOzE1MDksMTIgQEAgb3BlcmF0aW9uczpcbiAgICAgICAgIHJlcXVlc3Q6XG4gICAgICAgICAgIGF0dHJpYnV0ZXM6ICpkZXYtaWQtYXR0cnNcbiAgICAgICAgIHJlcGx5OlxuLSAgICAgICAgICB2YWx1ZTogMyAgIyBkdWUgdG8gYSBidWcsIHBvcnQgZHVtcCByZXR1cm5zIERFVkxJTktfQ01EX05FV1xuICAgICAgICAgICBhdHRyaWJ1dGVzOiAqcG9ydC1pZC1hdHRyc1xuIFxuICAgICAtXG4gICAgICAgbmFtZTogcG9ydC1zZXRcbiAgICAgICBkb2M6IFNldCBkZXZsaW5rIHBvcnQgaW5zdGFuY2VzLlxuLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmtcbiYjNDM7ICAgICAgYXR0cmlidXRlLXNldDogZGwtcG9ydC1zZXRcbiAgICAgICBkb250LXZhbGlkYXRlOiBbc3RyaWN0XVxuICAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV1cbiAgICAgICBkbzpcbkBAIC0xOTc1LDYgJiM0MzsyMDk1LDcgQEAgb3BlcmF0aW9uczpcbiAgICAgICAgICAgICAtIGluZGV4XG4gICAgICAgICAgICAgLSBwb3J0LWluZGV4XG4gICAgICAgICAgICAgLSByZWdpb24tbmFtZVxuJiM0MzsgICAgICAgICAgICAtIHJlZ2lvbi1jaHVua3NcbiBcbiAgICAgLVxuICAgICAgIG5hbWU6IHBvcnQtcGFyYW0tZ2V0XG5AQCAtMjMwNSw3ICYjNDM7MjQyNiw3IEBAIG9wZXJhdGlvbnM6XG4gICAgIC1cbiAgICAgICBuYW1lOiByYXRlLXNldFxuICAgICAgIGRvYzogU2V0IHJhdGUgaW5zdGFuY2VzLlxuLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmtcbiYjNDM7ICAgICAgYXR0cmlidXRlLXNldDogZGwtcmF0ZS1zZXRcbiAgICAgICBkb250LXZhbGlkYXRlOiBbc3RyaWN0XVxuICAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV1cbiAgICAgICBkbzpcbkBAIC0yMzI4LDcgJiM0MzsyNDQ5LDcgQEAgb3BlcmF0aW9uczpcbiAgICAgLVxuICAgICAgIG5hbWU6IHJhdGUtbmV3XG4gICAgICAgZG9jOiBDcmVhdGUgcmF0ZSBpbnN0YW5jZXMuXG4tICAgICAgYXR0cmlidXRlLXNldDogZGV2bGlua1xuJiM0MzsgICAgICBhdHRyaWJ1dGUtc2V0OiBkbC1yYXRlLXNldFxuICAgICAgIGRvbnQtdmFsaWRhdGU6IFtzdHJpY3RdXG4gICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXVxuICAgICAgIGRvOlxuQEAgLTIzNzQsMTQgJiM0MzsyNDk1LDIyIEBAIG9wZXJhdGlvbnM6XG4gICAgICAgICBwb3N0OiBkZXZsaW5rLW5sLXBvc3QtZG9pdFxuICAgICAgICAgcmVxdWVzdDpcbiAgICAgICAgICAgdmFsdWU6IDc4XG4tICAgICAgICAgIGF0dHJpYnV0ZXM6IFx1MDAyNmxpbmVjYXJkLWlkLWF0dHJzXG4mIzQzOyAgICAgICAgICBhdHRyaWJ1dGVzOlxuICAgICAgICAgICAgIC0gYnVzLW5hbWVcbiAgICAgICAgICAgICAtIGRldi1uYW1lXG4gICAgICAgICAgICAgLSBpbmRleFxuICAgICAgICAgICAgIC0gbGluZWNhcmQtaW5kZXhcbiAgICAgICAgIHJlcGx5OiBcdTAwMjZsaW5lY2FyZC1nZXQtcmVwbHlcbiAgICAgICAgICAgdmFsdWU6IDgwXG4tICAgICAgICAgIGF0dHJpYnV0ZXM6ICpsaW5lY2FyZC1pZC1hdHRyc1xuJiM0MzsgICAgICAgICAgYXR0cmlidXRlczpcbiYjNDM7ICAgICAgICAgICAgLSBidXMtbmFtZVxuJiM0MzsgICAgICAgICAgICAtIGRldi1uYW1lXG4mIzQzOyAgICAgICAgICAgIC0gaW5kZXhcbiYjNDM7ICAgICAgICAgICAgLSBsaW5lY2FyZC1pbmRleFxuJiM0MzsgICAgICAgICAgICAtIGxpbmVjYXJkLXN0YXRlXG4mIzQzOyAgICAgICAgICAgIC0gbGluZWNhcmQtdHlwZVxuJiM0MzsgICAgICAgICAgICAtIGxpbmVjYXJkLXN1cHBvcnRlZC10eXBlc1xuJiM0MzsgICAgICAgICAgICAtIG5lc3RlZC1kZXZsaW5rXG4gICAgICAgZHVtcDpcbiAgICAgICAgIHJlcXVlc3Q6XG4gICAgICAgICAgIGF0dHJpYnV0ZXM6ICpkZXYtaWQtYXR0cnNcbmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jIGIvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uY1xuaW5kZXggZGVjMDAxMzMxNzhkMS4uNDNlZjY4NjRkNDYyZiAxMDA2NDRcbi0tLSBhL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNcbkBAIC01MiwxMSAmIzQzOzUyLDExIEBAIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcGFyZW50X2Rldl9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICYjNDM7IDFdXG4gXHRbREVWTElOS19BVFRSX0lOREVYXSA9IE5MQV9QT0xJQ1lfRlVMTF9SQU5HRShOTEFfVUlOVCwgXHUwMDI2ZGV2bGlua19hdHRyX2luZGV4X3JhbmdlKSxcbiB9O1xuIFxuLWNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQUyAmIzQzOyAxXSA9IHtcbiYjNDM7Y29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRUyAmIzQzOyAxXSA9IHtcbiBcdFtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZLCB9LFxuIFx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX1NUQVRFXSA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VOCwgMSksXG4tXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfT1BTVEFURV0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTgsIDEpLFxuIFx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDE1KSxcbiYjNDM7XHRbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU10gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcbiB9O1xuIFxuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcmF0ZV90Y19id3NfbmxfcG9saWN5W0RFVkxJTktfUkFURV9UQ19BVFRSX0JXICYjNDM7IDFdID0ge1xuQEAgLTk3LDcgJiM0Mzs5Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX3BvcnRfc2V0X25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggJiM0MzsgMVxuIFx0W0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsIFx1MDAyNmRldmxpbmtfYXR0cl9pbmRleF9yYW5nZSksXG4gXHRbREVWTElOS19BVFRSX1BPUlRfSU5ERVhdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXG4gXHRbREVWTElOS19BVFRSX1BPUlRfVFlQRV0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTE2LCAzKSxcbi1cdFtERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl0gPSBOTEFfUE9MSUNZX05FU1RFRChkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5KSxcbiYjNDM7XHRbREVWTElOS19BVFRSX1BPUlRfRlVOQ1RJT05dID0gTkxBX1BPTElDWV9ORVNURUQoZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3kpLFxuIH07XG4gXG4gLyogREVWTElOS19DTURfUE9SVF9ORVcgLSBkbyAqL1xuQEAgLTMzNCw3ICYjNDM7MzM0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfcmVsb2FkX25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggJiM0MzsgMV1cbiBcdFtERVZMSU5LX0FUVFJfREVWX05BTUVdID0geyAudHlwZSA9IE5MQV9OVUxfU1RSSU5HLCB9LFxuIFx0W0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsIFx1MDAyNmRldmxpbmtfYXR0cl9pbmRleF9yYW5nZSksXG4gXHRbREVWTElOS19BVFRSX1JFTE9BRF9BQ1RJT05dID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIDEsIDIpLFxuLVx0W0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMig2KSxcbiYjNDM7XHRbREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDMpLFxuIFx0W0RFVkxJTktfQVRUUl9ORVROU19QSURdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXG4gXHRbREVWTElOS19BVFRSX05FVE5TX0ZEXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LFxuIFx0W0RFVkxJTktfQVRUUl9ORVROU19JRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcbmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oIGIvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaFxuaW5kZXggYTcwZTBlNDc2OWFhNS4uOTljY2FjYzY5M2I3NiAxMDA2NDRcbi0tLSBhL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmhcbkBAIC0xNCw3ICYjNDM7MTQsNyBAQFxuIFxuIC8qIENvbW1vbiBuZXN0ZWQgdHlwZXMgKi9cbiBleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9wYXJlbnRfZGV2X25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggJiM0MzsgMV07XG4tZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQUyAmIzQzOyAxXTtcbiYjNDM7ZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVMgJiM0MzsgMV07XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcmF0ZV90Y19id3NfbmxfcG9saWN5W0RFVkxJTktfUkFURV9UQ19BVFRSX0JXICYjNDM7IDFdO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3NlbGZ0ZXN0X2lkX25sX3BvbGljeVtERVZMSU5LX0FUVFJfU0VMRlRFU1RfSURfRkxBU0ggJiM0MzsgMV07XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2RldmxpbmsvcG9ydC5jIGIvbmV0L2RldmxpbmsvcG9ydC5jXG5pbmRleCAxNTI4ZjJkMTQ4ZGZjLi44MDM0MjlkOWEwMDg5IDEwMDY0NFxuLS0tIGEvbmV0L2RldmxpbmsvcG9ydC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZGV2bGluay9wb3J0LmNcbkBAIC02LDE5ICYjNDM7Niw2IEBAXG4gXG4gI2luY2x1ZGUgXCYjMzQ7ZGV2bF9pbnRlcm5hbC5oXCYjMzQ7XG4gXG4tI2RlZmluZSBERVZMSU5LX1BPUlRfRk5fQ0FQU19WQUxJRF9NQVNLIFxcXG4tXHQoX0JJVFVMKF9fREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQU19NQVgpIC0gMSlcbi1cbi1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLVx0W0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJdID0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSxcbi1cdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURV0gPVxuLVx0XHROTEFfUE9MSUNZX1JBTkdFKE5MQV9VOCwgREVWTElOS19QT1JUX0ZOX1NUQVRFX0lOQUNUSVZFLFxuLVx0XHRcdFx0IERFVkxJTktfUE9SVF9GTl9TVEFURV9BQ1RJVkUpLFxuLVx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID1cbi1cdFx0TkxBX1BPTElDWV9CSVRGSUVMRDMyKERFVkxJTktfUE9SVF9GTl9DQVBTX1ZBTElEX01BU0spLFxuLVx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbi19O1xuLVxuICNkZWZpbmUgQVNTRVJUX0RFVkxJTktfUE9SVF9SRUdJU1RFUkVEKGRldmxpbmtfcG9ydClcdFx0XHRcdFxcXG4gXHRXQVJOX09OX09OQ0UoIShkZXZsaW5rX3BvcnQpLVx1MDAzZXJlZ2lzdGVyZWQpXG4gI2RlZmluZSBBU1NFUlRfREVWTElOS19QT1JUX05PVF9SRUdJU1RFUkVEKGRldmxpbmtfcG9ydClcdFx0XHRcXFxuQEAgLTc4MiwxMSAmIzQzOzc2OSwxMSBAQCBzdGF0aWMgaW50IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqcG9ydCxcbiBcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcbiBcdFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdHN0cnVjdCBubGF0dHIgKnRiW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCAmIzQzOyAxXTtcbiYjNDM7XHRzdHJ1Y3QgbmxhdHRyICp0YltBUlJBWV9TSVpFKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5KV07XG4gXHRpbnQgZXJyO1xuIFxuLVx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgREVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfTUFYLCBhdHRyLFxuLVx0XHRcdCAgICAgICBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeSwgZXh0YWNrKTtcbiYjNDM7XHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBBUlJBWV9TSVpFKHRiKSAtIDEsIGF0dHIsXG4mIzQzO1x0XHRcdCAgICAgICBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSwgZXh0YWNrKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtGYWlsIHRvIHBhcnNlIHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlc1wmIzM0Oyk7XG4gXHRcdHJldHVybiBlcnI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0RFVkxJTksmIzM0OywKICAgICYjMzQ7TkVUREVWU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCYjMzQ7LAogICAgJiMzNDtkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXQmIzM0OywKICAgICYjMzQ7ZGV2bGlua19ubF9yZWxvYWRfZG9pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGRldmxpbmsgbmV0bGluayBhdHRyaWJ1dGUgcG9saWNpZXMgYW5kIHRoZSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0IHBhcnNpbmcgbG9naWMgZm9yIGdlbmVyaWMgbmV0bGluayBjb21tYW5kcyAocG9ydC1zZXQgYW5kIHJlbG9hZCkuIFRoZSBjaGFuZ2VzIGFyZSBpbiBjb3JlIG5ldHdvcmtpbmcgbmV0bGluayBjb2RlLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGdlbmVyaWMgbmV0bGluayBkZXZsaW5rIGZhbWlseSBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTQxYzQ3NDJmNzFkZmIzOWQxZTVkNjFiZjA2ZDJiMDRmZGM2MTY4ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDIwOjQ2OjEyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWwKaW5kZXggMzhiMTE5MGYzZDI2OS4uYWNiMjI4NTZhNmE4NSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sCkBAIC0xNzQsNiAmIzQzOzE3NCwxOCBAQCBkZWZpbml0aW9uczoKICAgICAgICAgdmFsdWU6IDEKICAgICAgIC0KICAgICAgICAgbmFtZTogZnctYWN0aXZhdGUKJiM0MzsgIC0KJiM0MzsgICAgdHlwZTogZW51bQomIzQzOyAgICBuYW1lOiByZWxvYWQtbGltaXQKJiM0MzsgICAgZW50cmllczoKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiB1bnNwZWMKJiM0MzsgICAgICAgIGRvYzogbm8gY29uc3RyYWludHMKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBuby1yZXNldAomIzQzOyAgICAgICAgZG9jOiAmZ3Q7LQomIzQzOyAgICAgICAgICBObyByZXNldCBhbGxvd2VkLCBubyBkb3duIHRpbWUgYWxsb3dlZCwgbm8gbGluayBmbGFwIGFuZCBubwomIzQzOyAgICAgICAgICBjb25maWd1cmF0aW9uIGlzIGxvc3QuCiAgIC0KICAgICB0eXBlOiBlbnVtCiAgICAgbmFtZTogcGFyYW0tY21vZGUKQEAgLTc3NSw3ICYjNDM7Nzg3LDcgQEAgYXR0cmlidXRlLXNldHM6CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlbG9hZC1saW1pdHMKICAgICAgICAgdHlwZTogYml0ZmllbGQzMgotICAgICAgICBlbnVtOiByZWxvYWQtYWN0aW9uCiYjNDM7ICAgICAgICBlbnVtOiByZWxvYWQtbGltaXQKICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZQogICAgICAgLQogICAgICAgICBuYW1lOiBkZXYtc3RhdHMKQEAgLTc5Myw2ICYjNDM7ODA1LDcgQEAgYXR0cmlidXRlLXNldHM6CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlbG9hZC1zdGF0cy1saW1pdAogICAgICAgICB0eXBlOiB1OAomIzQzOyAgICAgICAgZW51bTogcmVsb2FkLWxpbWl0CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlbG9hZC1zdGF0cy12YWx1ZQogICAgICAgICB0eXBlOiB1MzIKQEAgLTg0NSwxMyAmIzQzOzg1OCwxNCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogbGluZWNhcmQtc3VwcG9ydGVkLXR5cGVzCiAgICAgICAgIHR5cGU6IG5lc3QKICAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLWxpbmVjYXJkLXN1cHBvcnRlZC10eXBlcwotCi0gICAgICAjIFRPRE86IGZpbGwgaW4gdGhlIGF0dHJpYnV0ZXMgaW4gYmV0d2VlbgotCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogbmVzdGVkLWRldmxpbmsKJiM0MzsgICAgICAgIHR5cGU6IG5lc3QKJiM0MzsgICAgICAgIG11bHRpLWF0dHI6IHRydWUKJiM0MzsgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1uZXN0ZWQtZGV2bGluawogICAgICAgLQogICAgICAgICBuYW1lOiBzZWxmdGVzdHMKICAgICAgICAgdHlwZTogbmVzdAotICAgICAgICB2YWx1ZTogMTc2CiAgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1zZWxmdGVzdC1pZAogICAgICAgLQogICAgICAgICBuYW1lOiByYXRlLXR4LXByaW9yaXR5CkBAIC04OTgsNyAmIzQzOzkxMiw3IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgLQogICAgICAgICBuYW1lOiBwYXJlbnQtZGV2CiAgICAgICAgIHR5cGU6IG5lc3QKLSAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBhcmVudC1kZXYKJiM0MzsgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1uZXN0ZWQtZGV2bGluawogICAgICAgICBkb2M6IHwKICAgICAgICAgICBJZGVudGlmaWVzIHRoZSBkZXZsaW5rIGluc3RhbmNlIHdoaWNoIG93bnMgdGhlIHBhcmVudCByYXRlIG5vZGUuCiAgICAgICAgICAgVXNlZCB3aXRoIHJhdGUtc2V0IGFuZCByYXRlLW5ldyB0byBwYXJlbnQgYSByYXRlIG9iamVjdCB0byBhIG5vZGUgb24KQEAgLTk3OCw2ICYjNDM7OTkyLDQ5IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgICB0eXBlOiBiaXRmaWVsZDMyCiAgICAgICAgIGVudW06IHBvcnQtZm4tYXR0ci1jYXAKICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGRldmxpbmsKJiM0MzsgICAgICAgIHR5cGU6IG5lc3QKJiM0MzsgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1uZXN0ZWQtZGV2bGluawomIzQzOyAgICAgICAgZG9jOiBIYW5kbGUgb2YgdGhlIHBlZXIgZGV2bGluayBpbnN0YW5jZSBpbnN0YW50aWF0ZWQgZm9yIHRoaXMgZnVuY3Rpb24uCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogbWF4LWlvLWVxcwomIzQzOyAgICAgICAgdHlwZTogdTMyCiYjNDM7CiYjNDM7ICAtCiYjNDM7ICAgIG5hbWU6IGRsLXBvcnQtZnVuY3Rpb24tc2V0CiYjNDM7ICAgIHN1YnNldC1vZjogZGwtcG9ydC1mdW5jdGlvbgomIzQzOyAgICBkb2M6IHwKJiM0MzsgICAgICBQb3J0IGZ1bmN0aW9uIGF0dHJpYnV0ZXMgdGhhdCBjYW4gYmUgY29uZmlndXJlZDsgb3BzdGF0ZSBhbmQgdGhlCiYjNDM7ICAgICAgZGV2bGluayBoYW5kbGUgYXJlIHJlYWQtb25seS4KJiM0MzsgICAgYXR0cmlidXRlczoKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBody1hZGRyCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogc3RhdGUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBjYXBzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogbWF4LWlvLWVxcwomIzQzOwomIzQzOyAgLQomIzQzOyAgICBuYW1lOiBkbC1wb3J0LXNldAomIzQzOyAgICBzdWJzZXQtb2Y6IGRldmxpbmsKJiM0MzsgICAgZG9jOiBBdHRyaWJ1dGVzIGFjY2VwdGVkIGJ5IHRoZSBwb3J0LXNldCByZXF1ZXN0LgomIzQzOyAgICBhdHRyaWJ1dGVzOgomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGJ1cy1uYW1lCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogZGV2LW5hbWUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBpbmRleAomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHBvcnQtaW5kZXgKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwb3J0LXR5cGUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwb3J0LWZ1bmN0aW9uCiYjNDM7ICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtcG9ydC1mdW5jdGlvbi1zZXQKIAogICAtCiAgICAgbmFtZTogZGwtZHBpcGUtdGFibGVzCkBAIC0xMDA4LDYgJiM0MzsxMDY1LDggQEAgYXR0cmlidXRlLXNldHM6CiAgICAgICAgIG5hbWU6IGRwaXBlLXRhYmxlLXJlc291cmNlLWlkCiAgICAgICAtCiAgICAgICAgIG5hbWU6IGRwaXBlLXRhYmxlLXJlc291cmNlLXVuaXRzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogcGFkCiAKICAgLQogICAgIG5hbWU6IGRsLWRwaXBlLXRhYmxlLW1hdGNoZXMKQEAgLTEwNDIsNiAmIzQzOzExMDEsOCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogZHBpcGUtZW50cnktYWN0aW9uLXZhbHVlcwogICAgICAgLQogICAgICAgICBuYW1lOiBkcGlwZS1lbnRyeS1jb3VudGVyCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogcGFkCiAKICAgLQogICAgIG5hbWU6IGRsLWRwaXBlLWVudHJ5LW1hdGNoLXZhbHVlcwpAQCAtMTE4MCw2ICYjNDM7MTI0MSw4IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgICBuYW1lOiByZXNvdXJjZS11bml0CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlc291cmNlLW9jYwomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHBhZAogCiAgIC0KICAgICBuYW1lOiBkbC1yZXNvdXJjZS1saXN0CkBAIC0xMjA3LDYgJiM0MzsxMjcwLDcgQEAgYXR0cmlidXRlLXNldHM6CiAgICAgYXR0cmlidXRlczoKICAgICAgIC0KICAgICAgICAgbmFtZTogcmVnaW9uLXNuYXBzaG90CiYjNDM7ICAgICAgICBtdWx0aS1hdHRyOiB0cnVlCiAKICAgLQogICAgIG5hbWU6IGRsLXJlZ2lvbi1zbmFwc2hvdApAQCAtMTIyMSw2ICYjNDM7MTI4NSw3IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgIGF0dHJpYnV0ZXM6CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlZ2lvbi1jaHVuawomIzQzOyAgICAgICAgbXVsdGktYXR0cjogdHJ1ZQogCiAgIC0KICAgICBuYW1lOiBkbC1yZWdpb24tY2h1bmsKQEAgLTEyMzAsNiAmIzQzOzEyOTUsOCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rLWRhdGEKICAgICAgIC0KICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rLWFkZHIKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwYWQKIAogICAtCiAgICAgbmFtZTogZGwtZm1zZwpAQCAtMTI3MCw2ICYjNDM7MTMzNyw4IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgICBuYW1lOiBoZWFsdGgtcmVwb3J0ZXItYXV0by1kdW1wCiAgICAgICAtCiAgICAgICAgIG5hbWU6IGhlYWx0aC1yZXBvcnRlci1idXJzdC1wZXJpb2QKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwYWQKIAogICAtCiAgICAgbmFtZTogZGwtYXR0ci1zdGF0cwpAQCAtMTI4NCw2ICYjNDM7MTM1MywxMCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgIC0KICAgICAgICAgbmFtZTogc3RhdHMtcngtZHJvcHBlZAogICAgICAgICB0eXBlOiB1NjQKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwYWQKJiM0MzsgICAgICAgIHR5cGU6IHBhZAomIzQzOyAgICAgICAgdmFsdWU6IDYxCiAKICAgLQogICAgIG5hbWU6IGRsLXRyYXAtbWV0YWRhdGEKQEAgLTEzMDMsNiAmIzQzOzEzNzYsNyBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICBhdHRyaWJ1dGVzOgogICAgICAgLQogICAgICAgICBuYW1lOiBsaW5lY2FyZC10eXBlCiYjNDM7ICAgICAgICBtdWx0aS1hdHRyOiB0cnVlCiAKICAgLQogICAgIG5hbWU6IGRsLXNlbGZ0ZXN0LWlkCkBAIC0xMzMwLDYgJiM0MzsxNDA0LDUwIEBAIGF0dHJpYnV0ZS1zZXRzOgogICAtCiAgICAgbmFtZTogZGwtcGFyZW50LWRldgogICAgIHN1YnNldC1vZjogZGV2bGluawomIzQzOyAgICBkb2M6IHwKJiM0MzsgICAgICBEZXZsaW5rIGhhbmRsZSBhY2NlcHRlZCBhcyB0aGUgcGFyZW50LWRldiBpbnB1dDsgdGhlIG5ldG5zIGlkIHRoZQomIzQzOyAgICAgIGtlcm5lbCByZXBvcnRzIGJhY2sgaXMgbm90IGFjY2VwdGVkLCB0aGUgcGFyZW50IGlzIGFsd2F5cyByZXNvbHZlZAomIzQzOyAgICAgIGluIHRoZSBjYWxsZXImIzM5O3MgbmV0bnMuCiYjNDM7ICAgIGF0dHJpYnV0ZXM6CiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogYnVzLW5hbWUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBkZXYtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGluZGV4CiYjNDM7CiYjNDM7ICAtCiYjNDM7ICAgIG5hbWU6IGRsLXJhdGUtc2V0CiYjNDM7ICAgIHN1YnNldC1vZjogZGV2bGluawomIzQzOyAgICBkb2M6IEF0dHJpYnV0ZXMgYWNjZXB0ZWQgYnkgdGhlIHJhdGUtc2V0IGFuZCByYXRlLW5ldyByZXF1ZXN0cy4KJiM0MzsgICAgYXR0cmlidXRlczoKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBidXMtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGRldi1uYW1lCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogaW5kZXgKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiByYXRlLW5vZGUtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtdHgtc2hhcmUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiByYXRlLXR4LW1heAomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtdHgtcHJpb3JpdHkKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiByYXRlLXR4LXdlaWdodAomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtcGFyZW50LW5vZGUtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtdGMtYndzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogcGFyZW50LWRldgomIzQzOyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBhcmVudC1kZXYKJiM0MzsKJiM0MzsgIC0KJiM0MzsgICAgbmFtZTogZGwtbmVzdGVkLWRldmxpbmsKJiM0MzsgICAgc3Vic2V0LW9mOiBkZXZsaW5rCiAgICAgYXR0cmlidXRlczoKICAgICAgIC0KICAgICAgICAgbmFtZTogYnVzLW5hbWUKQEAgLTEzMzcsNiAmIzQzOzE0NTUsOCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogZGV2LW5hbWUKICAgICAgIC0KICAgICAgICAgbmFtZTogaW5kZXgKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBuZXRucy1pZAogCiBvcGVyYXRpb25zOgogICBlbnVtLW1vZGVsOiBkaXJlY3Rpb25hbApAQCAtMTM2Myw2ICYjNDM7MTQ4Myw3IEBAIG9wZXJhdGlvbnM6CiAgICAgICAgICAgICAtIGluZGV4CiAgICAgICAgICAgICAtIHJlbG9hZC1mYWlsZWQKICAgICAgICAgICAgIC0gZGV2LXN0YXRzCiYjNDM7ICAgICAgICAgICAgLSBuZXN0ZWQtZGV2bGluawogICAgICAgZHVtcDoKICAgICAgICAgcmVwbHk6ICpnZXQtcmVwbHkKIApAQCAtMTM4OCwxMyAmIzQzOzE1MDksMTIgQEAgb3BlcmF0aW9uczoKICAgICAgICAgcmVxdWVzdDoKICAgICAgICAgICBhdHRyaWJ1dGVzOiAqZGV2LWlkLWF0dHJzCiAgICAgICAgIHJlcGx5OgotICAgICAgICAgIHZhbHVlOiAzICAjIGR1ZSB0byBhIGJ1ZywgcG9ydCBkdW1wIHJldHVybnMgREVWTElOS19DTURfTkVXCiAgICAgICAgICAgYXR0cmlidXRlczogKnBvcnQtaWQtYXR0cnMKIAogICAgIC0KICAgICAgIG5hbWU6IHBvcnQtc2V0CiAgICAgICBkb2M6IFNldCBkZXZsaW5rIHBvcnQgaW5zdGFuY2VzLgotICAgICAgYXR0cmlidXRlLXNldDogZGV2bGluawomIzQzOyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXBvcnQtc2V0CiAgICAgICBkb250LXZhbGlkYXRlOiBbc3RyaWN0XQogICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXQogICAgICAgZG86CkBAIC0xOTc1LDYgJiM0MzsyMDk1LDcgQEAgb3BlcmF0aW9uczoKICAgICAgICAgICAgIC0gaW5kZXgKICAgICAgICAgICAgIC0gcG9ydC1pbmRleAogICAgICAgICAgICAgLSByZWdpb24tbmFtZQomIzQzOyAgICAgICAgICAgIC0gcmVnaW9uLWNodW5rcwogCiAgICAgLQogICAgICAgbmFtZTogcG9ydC1wYXJhbS1nZXQKQEAgLTIzMDUsNyAmIzQzOzI0MjYsNyBAQCBvcGVyYXRpb25zOgogICAgIC0KICAgICAgIG5hbWU6IHJhdGUtc2V0CiAgICAgICBkb2M6IFNldCByYXRlIGluc3RhbmNlcy4KLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmsKJiM0MzsgICAgICBhdHRyaWJ1dGUtc2V0OiBkbC1yYXRlLXNldAogICAgICAgZG9udC12YWxpZGF0ZTogW3N0cmljdF0KICAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV0KICAgICAgIGRvOgpAQCAtMjMyOCw3ICYjNDM7MjQ0OSw3IEBAIG9wZXJhdGlvbnM6CiAgICAgLQogICAgICAgbmFtZTogcmF0ZS1uZXcKICAgICAgIGRvYzogQ3JlYXRlIHJhdGUgaW5zdGFuY2VzLgotICAgICAgYXR0cmlidXRlLXNldDogZGV2bGluawomIzQzOyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXJhdGUtc2V0CiAgICAgICBkb250LXZhbGlkYXRlOiBbc3RyaWN0XQogICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXQogICAgICAgZG86CkBAIC0yMzc0LDE0ICYjNDM7MjQ5NSwyMiBAQCBvcGVyYXRpb25zOgogICAgICAgICBwb3N0OiBkZXZsaW5rLW5sLXBvc3QtZG9pdAogICAgICAgICByZXF1ZXN0OgogICAgICAgICAgIHZhbHVlOiA3OAotICAgICAgICAgIGF0dHJpYnV0ZXM6ICZhbXA7bGluZWNhcmQtaWQtYXR0cnMKJiM0MzsgICAgICAgICAgYXR0cmlidXRlczoKICAgICAgICAgICAgIC0gYnVzLW5hbWUKICAgICAgICAgICAgIC0gZGV2LW5hbWUKICAgICAgICAgICAgIC0gaW5kZXgKICAgICAgICAgICAgIC0gbGluZWNhcmQtaW5kZXgKICAgICAgICAgcmVwbHk6ICZhbXA7bGluZWNhcmQtZ2V0LXJlcGx5CiAgICAgICAgICAgdmFsdWU6IDgwCi0gICAgICAgICAgYXR0cmlidXRlczogKmxpbmVjYXJkLWlkLWF0dHJzCiYjNDM7ICAgICAgICAgIGF0dHJpYnV0ZXM6CiYjNDM7ICAgICAgICAgICAgLSBidXMtbmFtZQomIzQzOyAgICAgICAgICAgIC0gZGV2LW5hbWUKJiM0MzsgICAgICAgICAgICAtIGluZGV4CiYjNDM7ICAgICAgICAgICAgLSBsaW5lY2FyZC1pbmRleAomIzQzOyAgICAgICAgICAgIC0gbGluZWNhcmQtc3RhdGUKJiM0MzsgICAgICAgICAgICAtIGxpbmVjYXJkLXR5cGUKJiM0MzsgICAgICAgICAgICAtIGxpbmVjYXJkLXN1cHBvcnRlZC10eXBlcwomIzQzOyAgICAgICAgICAgIC0gbmVzdGVkLWRldmxpbmsKICAgICAgIGR1bXA6CiAgICAgICAgIHJlcXVlc3Q6CiAgICAgICAgICAgYXR0cmlidXRlczogKmRldi1pZC1hdHRycwpkaWZmIC0tZ2l0IGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uYyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmMKaW5kZXggZGVjMDAxMzMxNzhkMS4uNDNlZjY4NjRkNDYyZiAxMDA2NDQKLS0tIGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jCkBAIC01MiwxMSAmIzQzOzUyLDExIEBAIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcGFyZW50X2Rldl9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICYjNDM7IDFdCiAJW0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsICZhbXA7ZGV2bGlua19hdHRyX2luZGV4X3JhbmdlKSwKIH07CiAKLWNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQUyAmIzQzOyAxXSA9IHsKJiM0Mztjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeVtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTICYjNDM7IDFdID0gewogCVtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZLCB9LAogCVtERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURV0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTgsIDEpLAotCVtERVZMSU5LX1BPUlRfRk5fQVRUUl9PUFNUQVRFXSA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VOCwgMSksCiAJW0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDE1KSwKJiM0MzsJW0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sCiB9OwogCiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3JhdGVfdGNfYndzX25sX3BvbGljeVtERVZMSU5LX1JBVEVfVENfQVRUUl9CVyAmIzQzOyAxXSA9IHsKQEAgLTk3LDcgJiM0Mzs5Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX3BvcnRfc2V0X25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggJiM0MzsgMQogCVtERVZMSU5LX0FUVFJfSU5ERVhdID0gTkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VSU5ULCAmYW1wO2RldmxpbmtfYXR0cl9pbmRleF9yYW5nZSksCiAJW0RFVkxJTktfQVRUUl9QT1JUX0lOREVYXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LAogCVtERVZMSU5LX0FUVFJfUE9SVF9UWVBFXSA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VMTYsIDMpLAotCVtERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl0gPSBOTEFfUE9MSUNZX05FU1RFRChkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5KSwKJiM0MzsJW0RFVkxJTktfQVRUUl9QT1JUX0ZVTkNUSU9OXSA9IE5MQV9QT0xJQ1lfTkVTVEVEKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5KSwKIH07CiAKIC8qIERFVkxJTktfQ01EX1BPUlRfTkVXIC0gZG8gKi8KQEAgLTMzNCw3ICYjNDM7MzM0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfcmVsb2FkX25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggJiM0MzsgMV0KIAlbREVWTElOS19BVFRSX0RFVl9OQU1FXSA9IHsgLnR5cGUgPSBOTEFfTlVMX1NUUklORywgfSwKIAlbREVWTElOS19BVFRSX0lOREVYXSA9IE5MQV9QT0xJQ1lfRlVMTF9SQU5HRShOTEFfVUlOVCwgJmFtcDtkZXZsaW5rX2F0dHJfaW5kZXhfcmFuZ2UpLAogCVtERVZMSU5LX0FUVFJfUkVMT0FEX0FDVElPTl0gPSBOTEFfUE9MSUNZX1JBTkdFKE5MQV9VOCwgMSwgMiksCi0JW0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMig2KSwKJiM0MzsJW0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMigzKSwKIAlbREVWTElOS19BVFRSX05FVE5TX1BJRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSwKIAlbREVWTElOS19BVFRSX05FVE5TX0ZEXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LAogCVtERVZMSU5LX0FUVFJfTkVUTlNfSURdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sCmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oIGIvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaAppbmRleCBhNzBlMGU0NzY5YWE1Li45OWNjYWNjNjkzYjc2IDEwMDY0NAotLS0gYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmgKQEAgLTE0LDcgJiM0MzsxNCw3IEBACiAKIC8qIENvbW1vbiBuZXN0ZWQgdHlwZXMgKi8KIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BhcmVudF9kZXZfbmxfcG9saWN5W0RFVkxJTktfQVRUUl9JTkRFWCAmIzQzOyAxXTsKLWV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFMgJiM0MzsgMV07CiYjNDM7ZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVMgJiM0MzsgMV07CiBleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9yYXRlX3RjX2J3c19ubF9wb2xpY3lbREVWTElOS19SQVRFX1RDX0FUVFJfQlcgJiM0MzsgMV07CiBleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9zZWxmdGVzdF9pZF9ubF9wb2xpY3lbREVWTElOS19BVFRSX1NFTEZURVNUX0lEX0ZMQVNIICYjNDM7IDFdOwogCmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9wb3J0LmMgYi9uZXQvZGV2bGluay9wb3J0LmMKaW5kZXggMTUyOGYyZDE0OGRmYy4uODAzNDI5ZDlhMDA4OSAxMDA2NDQKLS0tIGEvbmV0L2RldmxpbmsvcG9ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kZXZsaW5rL3BvcnQuYwpAQCAtNiwxOSAmIzQzOzYsNiBAQAogCiAjaW5jbHVkZSAmIzM0O2RldmxfaW50ZXJuYWwuaCYjMzQ7CiAKLSNkZWZpbmUgREVWTElOS19QT1JUX0ZOX0NBUFNfVkFMSURfTUFTSyBcCi0JKF9CSVRVTChfX0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNfTUFYKSAtIDEpCi0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeVtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9NQVggJiM0MzsgMV0gPSB7Ci0JW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJdID0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSwKLQlbREVWTElOS19QT1JUX0ZOX0FUVFJfU1RBVEVdID0KLQkJTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIERFVkxJTktfUE9SVF9GTl9TVEFURV9JTkFDVElWRSwKLQkJCQkgREVWTElOS19QT1JUX0ZOX1NUQVRFX0FDVElWRSksCi0JW0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID0KLQkJTkxBX1BPTElDWV9CSVRGSUVMRDMyKERFVkxJTktfUE9SVF9GTl9DQVBTX1ZBTElEX01BU0spLAotCVtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sCi19OwotCiAjZGVmaW5lIEFTU0VSVF9ERVZMSU5LX1BPUlRfUkVHSVNURVJFRChkZXZsaW5rX3BvcnQpCQkJCVwKIAlXQVJOX09OX09OQ0UoIShkZXZsaW5rX3BvcnQpLSZndDtyZWdpc3RlcmVkKQogI2RlZmluZSBBU1NFUlRfREVWTElOS19QT1JUX05PVF9SRUdJU1RFUkVEKGRldmxpbmtfcG9ydCkJCQlcCkBAIC03ODIsMTEgJiM0Mzs3NjksMTEgQEAgc3RhdGljIGludCBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsCiAJCQkJICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLAogCQkJCSAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogewotCXN0cnVjdCBubGF0dHIgKnRiW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCAmIzQzOyAxXTsKJiM0MzsJc3RydWN0IG5sYXR0ciAqdGJbQVJSQVlfU0laRShkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSldOwogCWludCBlcnI7CiAKLQllcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9NQVgsIGF0dHIsCi0JCQkgICAgICAgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3ksIGV4dGFjayk7CiYjNDM7CWVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIEFSUkFZX1NJWkUodGIpIC0gMSwgYXR0ciwKJiM0MzsJCQkgICAgICAgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3ksIGV4dGFjayk7CiAJaWYgKGVyciAmbHQ7IDApIHsKIAkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O0ZhaWwgdG8gcGFyc2UgcG9ydCBmdW5jdGlvbiBhdHRyaWJ1dGVzJiMzNDspOwogCQlyZXR1cm4gZXJyOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjI4CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGV2bGluayBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLiBJIHNlZSB3ZSYjMzk7cmUgdG91Y2hpbmcgYERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWxgLCBgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uY2AsIGBuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oYCwgYW5kIGBuZXQvZGV2bGluay9wb3J0LmNgLiBUaGF0IGluZGljYXRlcyBzb21lIG1vZGlmaWNhdGlvbiB0byB0aGUgZGV2bGluayBzdWJzeXN0ZW0sIGxpa2VseSBpbnZvbHZpbmcgTmV0bGluayBtZXNzYWdlIGhhbmRsaW5nIGFuZCBwb3J0IGNvbmZpZ3VyYXRpb24uCgpGaXJzdCwgSSYjMzk7bGwgemVybyBpbiBvbiBgbmV0L2RldmxpbmsvcG9ydC5jYCBhbmQgYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNgLCBhbG9uZyB3aXRoIHJlbGF0ZWQgZmlsZXMgZm9yIGNvbnRleHQuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgZXhpc3RpbmcgTmV0bGluayBtZXNzYWdlIGdlbmVyYXRpb24gaXMgYWZmZWN0ZWQgYW5kIGlmIHRoZSBwb3J0IG1hbmFnZW1lbnQgbG9naWMgaXMgYmVpbmcgYWx0ZXJlZC4gR2l2ZW4gdGhlIGAueWFtbGAgY2hhbmdlLCBJJiMzOTttIGFudGljaXBhdGluZyBzb21lIHNjaGVtYSB1cGRhdGVzIHRvby4KClRvIHF1aWNrbHkgZ2V0IHVwIHRvIHNwZWVkIHdpdGggYW55IHVuZmFtaWxpYXIgcGFydHMgb2YgdGhlIGNoYW5nZSwgSSYjMzk7bGwgcHJvYmFibHkgZmlyZSB1cCBzb21lIHNlYXJjaCB0b29scyBvciByZWFkIHN1cnJvdW5kaW5nIGNvZGUgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXZsaW5rIHN1YnN5c3RlbSBhbmQgaXRzIGN1cnJlbnQgcm9sZSBpbiB0aGUga2VybmVsLiBUaGlzIGlzIGVzc2VudGlhbCBmb3IgYSB0aG9yb3VnaCByZXZpZXc7IEkgbmVlZCB0byBrbm93IGhvdyB0aGVzZSBjaGFuZ2VzIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9kZXZsaW5rL3BvcnQuYz02OTM9c3RhdGljIGludCBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fdmFsaWRhdGUoc3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0LFxuLS1cbm5ldC9kZXZsaW5rL3BvcnQuYy03NjctXG5uZXQvZGV2bGluay9wb3J0LmM6NzY4OnN0YXRpYyBpbnQgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpwb3J0LFxubmV0L2RldmxpbmsvcG9ydC5jLTc2OS1cdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcbi0tXG5uZXQvZGV2bGluay9wb3J0LmM9ODIwPWludCBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtODM3LVxubmV0L2RldmxpbmsvcG9ydC5jOjgzODpcdFx0ZXJyID0gZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldChkZXZsaW5rX3BvcnQsIGF0dHIsIGV4dGFjayk7XG5uZXQvZGV2bGluay9wb3J0LmMtODM5LVx0XHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4ODkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0JiMzOTtzIGdvaW5nIHRocm91Z2ggbXkgbWluZCBhcyBJIGFwcHJvYWNoIHRoaXMgY29kZSwgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIGludG8gdGhlIERldmxpbmsgUG9ydCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcyBgZGV2bGlua2AgcG9ydCBjb25maWd1cmF0aW9uIHN0dWZmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcG9ydCBmdW5jdGlvbnMgYXJlIGJlaW5nIHNldC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYG5ldC9kZXZsaW5rL3BvcnQuY2AsIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiB0aGUgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgIGFuZCBgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0YCBmdW5jdGlvbnMuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIG1hcCBvdXQgdGhlIGNhbGwgZmxvdyBhbmQgaWRlbnRpZnkgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQuIEkmIzM5O20gYXNzdW1pbmcsIGJhc2VkIG9uIHRoZSBuYW1pbmcsIHRoYXQgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIGZvciBjaGFuZ2luZyB0aGUgcG9ydCYjMzk7cyByb2xlLCB3aGVyZWFzIGBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRgIGlzIG1vc3QgbGlrZWx5IHRoZSBOZXRsaW5rIGhhbmRsZXIgdGhhdCByZWNlaXZlcyBhbmQgcHJvY2Vzc2VzIHRoZSB1c2VyLXNwYWNlIHJlcXVlc3RzLgoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgaG93IHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgZGF0YSBtYWtlcyBpdHMgd2F5IGZyb20gdGhlIE5ldGxpbmsgbWVzc2FnZSB0byB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGBkZXZsaW5rYCBwb3J0LCB0aGUgdmFsaWRhdGlvbiB0aGF0IG9jY3VycywgYW5kIGhvdyB0aGUgaGFyZHdhcmUgaXMgdWx0aW1hdGVseSBwcm9ncmFtbWVkIChpZiBhcHBsaWNhYmxlKS4gSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhleSBoYW5kbGUgZXJyb3IgY29uZGl0aW9ucywgYW5kIGlmIHRoZXkgbG9jayBhbnl0aGluZyAobGlrZSB0aGUgcG9ydCkgd2hlbiBwZXJmb3JtaW5nIHRoaXMgc2V0dGluZywgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zLgoKSSYjMzk7bGwgYWxzbyBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBpbnRlcmVzdGluZyBvciBub24tb2J2aW91cyBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgYGRldmxpbmtgIHN1YnN5c3RlbS4gQXJlIHRoZXJlIGFueSBjYWxsYmFja3Mgb3IgZXZlbnQgbm90aWZpY2F0aW9ucyBpbnZvbHZlZD8gSXMgdGhlcmUgYW4gQVBJIGZvciB2ZW5kb3JzIHRvIGV4dGVuZCB0aGlzLCBvciBpcyBpdCBwcmV0dHkgdGlnaHRseSBjb3VwbGVkPyBJJiMzOTttIGFudGljaXBhdGluZyB0aGVyZSB3aWxsIGJlIHNvbWUgY2hlY2tzIGZvciB0aGUgc3BlY2lmaWMgY2FwYWJpbGl0aWVzIG9mIHRoZSB1bmRlcmx5aW5nIGRldmljZSDigJMgdGhlcmUmIzM5O3MgcHJvYmFibHkgYSBkZXZpY2Utc3BlY2lmaWMgZGF0YSBtb2RlbCBhc3NvY2lhdGVkIHdpdGggdGhpcyBhcyB3ZWxsLCBhbmQgSSYjMzk7ZCBsaWtlIHRvIGlkZW50aWZ5IHdoYXQgdGhhdCBsb29rcyBsaWtlLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUgdHJpY2t5IGNhc2VzLCBzdWNoIGFzIHBvcnQgcm9sZXMgY2hhbmdpbmcgZnJvbSBhIHBoeXNpY2FsIGludGVyZmFjZSB0byBhIHZpcnR1YWwgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvcG9ydC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDkwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3NjA6XHRcdCAgICAhb3BzLVx1MDAzZXBvcnRfZm5fbWF4X2lvX2Vxc19zZXQpIHtcbiA3NjE6XHRcdFx0TkxfU0VUX0VSUl9NU0dfQVRUUihleHRhY2ssIHRiW0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdLFxuIDc2MjpcdFx0XHRcdFx0ICAgIFwmIzM0O0Z1bmN0aW9uIGRvZXMgbm90IHN1cHBvcnQgbWF4X2lvX2VxcyBzZXR0aW5nXCYjMzQ7KTtcbiA3NjM6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIDc2NDpcdFx0fVxuIDc2NTpcdFx0cmV0dXJuIDA7XG4gNzY2Olx0fVxuIDc2NzpcdFxuIDc2ODpcdHN0YXRpYyBpbnQgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpwb3J0LFxuIDc2OTpcdFx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIDc3MDpcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4gNzcxOlx0e1xuIDc3MjpcdFx0c3RydWN0IG5sYXR0ciAqdGJbQVJSQVlfU0laRShkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSldO1xuIDc3MzpcdFx0aW50IGVycjtcbiA3NzQ6XHRcbiA3NzU6XHRcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIEFSUkFZX1NJWkUodGIpIC0gMSwgYXR0cixcbiA3NzY6XHRcdFx0XHQgICAgICAgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3ksIGV4dGFjayk7XG4gNzc3Olx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4gNzc4Olx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7RmFpbCB0byBwYXJzZSBwb3J0IGZ1bmN0aW9uIGF0dHJpYnV0ZXNcJiMzNDspO1xuIDc3OTpcdFx0XHRyZXR1cm4gZXJyO1xuIDc4MDpcdFx0fVxuIDc4MTpcdFxuIDc4MjpcdFx0ZXJyID0gZGV2bGlua19wb3J0X2Z1bmN0aW9uX3ZhbGlkYXRlKHBvcnQsIHRiLCBleHRhY2spO1xuIDc4MzpcdFx0aWYgKGVycilcbiA3ODQ6XHRcdFx0cmV0dXJuIGVycjtcbiA3ODU6XHRcbiA3ODY6XHRcdGF0dHIgPSB0YltERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSXTtcbiA3ODc6XHRcdGlmIChhdHRyKSB7XG4gNzg4Olx0XHRcdGVyciA9IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9od19hZGRyX3NldChwb3J0LCBhdHRyLCBleHRhY2spO1xuIDc4OTpcdFx0XHRpZiAoZXJyKVxuIDc5MDpcdFx0XHRcdHJldHVybiBlcnI7XG4gNzkxOlx0XHR9XG4gNzkyOlx0XG4gNzkzOlx0XHRhdHRyID0gdGJbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQU107XG4gNzk0Olx0XHRpZiAoYXR0cikge1xuIDc5NTpcdFx0XHRlcnIgPSBkZXZsaW5rX3BvcnRfZm5fY2Fwc19zZXQocG9ydCwgYXR0ciwgZXh0YWNrKTtcbiA3OTY6XHRcdFx0aWYgKGVycilcbiA3OTc6XHRcdFx0XHRyZXR1cm4gZXJyO1xuIDc5ODpcdFx0fVxuIDc5OTpcdFxuIDgwMDpcdFx0YXR0ciA9IHRiW0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdO1xuIDgwMTpcdFx0aWYgKGF0dHIpIHtcbiA4MDI6XHRcdFx0ZXJyID0gZGV2bGlua19wb3J0X2ZuX21heF9pb19lcXNfc2V0KHBvcnQsIGF0dHIsIGV4dGFjayk7XG4gODAzOlx0XHRcdGlmIChlcnIpXG4gODA0Olx0XHRcdFx0cmV0dXJuIGVycjtcbiA4MDU6XHRcdH1cbiA4MDY6XHRcbiA4MDc6XHRcdC8qIEtlZXAgdGhpcyBhcyB0aGUgbGFzdCBmdW5jdGlvbiBhdHRyaWJ1dGUgc2V0LCBzbyB0aGF0IHdoZW5cbiA4MDg6XHRcdCAqIG11bHRpcGxlIHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlcyBhcmUgc2V0IGFsb25nIHdpdGggc3RhdGUsXG4gODA5Olx0XHQgKiBUaG9zZSBjYW4gYmUgYXBwbGllZCBmaXJzdCBiZWZvcmUgYWN0aXZhdGluZyB0aGUgc3RhdGUuXG4gODEwOlx0XHQgKi9cbiA4MTE6XHRcdGF0dHIgPSB0YltERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURV07XG4gODEyOlx0XHRpZiAoYXR0cilcbiA4MTM6XHRcdFx0ZXJyID0gZGV2bGlua19wb3J0X2ZuX3N0YXRlX3NldChwb3J0LCBhdHRyLCBleHRhY2spO1xuIDgxNDpcdFxuIDgxNTpcdFx0aWYgKCFlcnIpXG4gODE2Olx0XHRcdGRldmxpbmtfcG9ydF9ub3RpZnkocG9ydCwgREVWTElOS19DTURfUE9SVF9ORVcpO1xuIDgxNzpcdFx0cmV0dXJuIGVycjtcbiA4MTg6XHR9XG4gODE5Olx0XG4gODIwOlx0aW50IGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIDgyMTpcdHtcbiA4MjI6XHRcdHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCA9IGRldmxpbmtfbmxfY3R4KGluZm8pLVx1MDAzZWRldmxpbmtfcG9ydDtcbiA4MjM6XHRcdGludCBlcnI7XG4gODI0Olx0XG4gODI1Olx0XHRpZiAoaW5mby1cdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfUE9SVF9UWVBFXSkge1xuIDgyNjpcdFx0XHRlbnVtIGRldmxpbmtfcG9ydF90eXBlIHBvcnRfdHlwZTtcbiA4Mjc6XHRcbiA4Mjg6XHRcdFx0cG9ydF90eXBlID0gbmxhX2dldF91MTYoaW5mby1cdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfUE9SVF9UWVBFXSk7XG4gODI5Olx0XHRcdGVyciA9IGRldmxpbmtfcG9ydF90eXBlX3NldChkZXZsaW5rX3BvcnQsIHBvcnRfdHlwZSk7XG4gODMwOlx0XHRcdGlmIChlcnIpXG4gODMxOlx0XHRcdFx0cmV0dXJuIGVycjtcbiA4MzI6XHRcdH1cbiA4MzM6XHRcbiA4MzQ6XHRcdGlmIChpbmZvLVx1MDAzZWF0dHJzW0RFVkxJTktfQVRUUl9QT1JUX0ZVTkNUSU9OXSkge1xuIDgzNTpcdFx0XHRzdHJ1Y3QgbmxhdHRyICphdHRyID0gaW5mby1cdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl07XG4gODM2Olx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayA9IGluZm8tXHUwMDNlZXh0YWNrO1xuIDgzNzpcdFxuIDgzODpcdFx0XHRlcnIgPSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KGRldmxpbmtfcG9ydCwgYXR0ciwgZXh0YWNrKTtcbiA4Mzk6XHRcdFx0aWYgKGVycilcbiA4NDA6XHRcdFx0XHRyZXR1cm4gZXJyO1xuIDg0MTpcdFx0fVxuIDg0MjpcdFxuIDg0MzpcdFx0cmV0dXJuIDA7XG4gODQ0Olx0fVxuIDg0NTpcdFxuIDg0NjpcdGludCBkZXZsaW5rX25sX3BvcnRfc3BsaXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIDg0NzpcdHtcbiA4NDg6XHRcdHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCA9IGRldmxpbmtfbmxfY3R4KGluZm8pLVx1MDAzZWRldmxpbmtfcG9ydDtcbiA4NDk6XHRcdHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rID0gZGV2bGlua19ubF9jdHgoaW5mbyktXHUwMDNlZGV2bGluaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODA4CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRldmxpbmsgTmV0bGluayBTdWJzeXN0ZW0gQW5hbHlzaXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBkZXZsaW5rYCDigJMgdGhhdCYjMzk7cyBhIGNvcmUgbmV0d29ya2luZyBOZXRsaW5rIHN1YnN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhIGdlbmVyaWMgTmV0bGluayBmYW1pbHkgKGBORVRMSU5LX0dFTkVSSUNgKSB1bmRlciBgZGV2bGlua2AuIFRoZSBxdWVzdGlvbiBub3cgaXM6IGlzIGBkZXZsaW5rYCBhY2Nlc3NpYmxlIGluIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IFRoZSBhbnN3ZXIgYXBwZWFycyB0byBiZSB5ZXMuIEl0JiMzOTtzIGEgc3RhbmRhcmQgZ2VuZXJpYyBOZXRsaW5rIGludGVyZmFjZSB1c2VkIGJ5IG5ldCBkZXZpY2VzIOKAkyB0aGluayBgbmV0ZGV2c2ltYCwgYHZpcnRpb19uZXRgLCBvciBldmVuIHRoZSBzaW1wbGUgYGR1bW15YCBpbnRlcmZhY2UuIFN5emthbGxlciYjMzk7cyBoZWF2eSBmdXp6aW5nIG9mIGBkZXZsaW5rYCBkZWZpbml0ZWx5IGNvbmZpcm1zIHRoaXMsIGxvb2tpbmcgYXQgY29tbWFuZHMgbGlrZSBgZGV2bGlua19ubF9jbWRfcG9ydF9zZXRgLCBgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0YCwgYW5kIG9wZXJhdGlvbnMgbGlrZSByZWxvYWQgYW5kIHJhdGUuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyBwYXRjaC4gTXkgZm9jdXMgaGFzIHNoaWZ0ZWQgdG8gYG5ldGxpbmtfZ2VuLmNgIGFuZCBgcG9ydC5jYC4KClRoZSBwYXRjaCBpdHNlbGYgc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHVwZGF0ZXMgdG8gdGhlIGBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sYCBmaWxlLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSByZWZpbmluZyB0aGUgZGVmaW5pdGlvbnMgaGVyZSwgc3BlY2lmaWNhbGx5IHdpdGggdGhlIGByZWxvYWQtbGltaXRgIGVudW0sIG5ldyBzdWJzZXRzIGZvciBwb3J0LWZ1bmN0aW9uIGFuZCByYXRlLXNldCwgYW5kIHJlZmluZW1lbnRzIGxpa2UgbmVzdGVkLWRldmxpbmsgYW5kIG11bHRpLWF0dHJpYnV0ZSBmbGFncy4gSXQgYWxzbyBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGRlYWxpbmcgd2l0aCBwYWRkaW5nIGF0dHJpYnV0ZXMuCgpCYXNlZCBvbiB0aGlzIHNwZWMgeWFtbCwgYG5ldGxpbmtfZ2VuLmNgIGFuZCBgbmV0bGlua19nZW4uaGAgaGF2ZSBiZWVuIHVwZGF0ZWQvcmVnZW5lcmF0ZWQuClRoZSBjaGFuZ2VzIHdpdGhpbiB0aGVzZSBmaWxlcyBsb29rIHNpZ25pZmljYW50OgoqICAgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lgIGlzIHJlcGxhY2VkIGJ5IGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAuIFRoZSBuZXcgcG9saWN5IGluY2x1ZGVzIGBERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTYCwgYW5kIGl0IHJlbW92ZXMgYE9QU1RBVEVgLCBhcyBpdCBpcyByZWFkLW9ubHkuCiogICBUaGUgYGRldmxpbmtfcG9ydF9zZXRfbmxfcG9saWN5YCBub3cgdXNlcyB0aGUgbmVzdGVkIHBvbGljeSBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGZvciB0aGUgYERFVkxJTktfQVRUUl9QT1JUX0ZVTkNUSU9OYCBhdHRyaWJ1dGUuCiogICBgZGV2bGlua19yZWxvYWRfbmxfcG9saWN5YCBub3cgc3BlY2lmaWVzIGBbREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDMpO2Agd2hlcmUgdGhlIGxpbWl0IHdhcyBwcmV2aW91c2x5IDYuCgpGaW5hbGx5LCBpbiBgbmV0L2RldmxpbmsvcG9ydC5jYCwgaXQgbG9va3MgbGlrZSB0aGVyZSYjMzk7cyBzb21lIGNsZWFudXA6CiogICBgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3lgIGFuZCBpdHMgcHJpdmF0ZSBtYXNrIG1hY3JvIGFyZSBnb25lLgoqICAgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgIGlzIG5vdyBkaXJlY3RseSB1c2luZyB0aGUgZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgYW5kIHBhcnNpbmcgaXQgd2l0aCBgQVJSQVlfU0laRShkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSlgLgoKSSBzaG91bGQgcHJvYmFibHkgYWxzbyBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZm9yIGBkZXZsaW5rYCB0byBtYWtlIHN1cmUgbm90aGluZyBoYXMgY2hhbmdlZCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfREVWTElOSyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2NyeXB0by9tYXJ2ZWxsL0tjb25maWc9NDA9Y29uZmlnIENSWVBUT19ERVZfT0NURU9OVFgyX0NQVFxuLS1cbmRyaXZlcnMvY3J5cHRvL21hcnZlbGwvS2NvbmZpZy01MS1cdHNlbGVjdCBDUllQVE9fQVVUSEVOQ1xuZHJpdmVycy9jcnlwdG8vbWFydmVsbC9LY29uZmlnOjUyOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL2NyeXB0by9tYXJ2ZWxsL0tjb25maWctNTMtXHRoZWxwXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZz0zPWNvbmZpZyBaTDMwNzNYXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZy02LVx0c2VsZWN0IERQTExcbmRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWc6NzpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9kcGxsL3psMzA3M3gvS2NvbmZpZy04LVx0c2VsZWN0IFJFR01BUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwOS1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cbmRyaXZlcnMvbmV0L0tjb25maWc6NjEwOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMS1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZz0xNjg9Y29uZmlnIENBTl9LVkFTRVJfUENJRUZEXG4tLVxuZHJpdmVycy9uZXQvY2FuL0tjb25maWctMTcwLVx0dHJpc3RhdGUgXCYjMzQ7S3Zhc2VyIFBDSWUgRkQgY2FyZHNcJiMzNDtcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjE3MTpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvY2FuL0tjb25maWctMTcyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZz0zMT1jb25maWcgQ0FOX0VUQVNfRVM1OFhcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWctMzMtXHRzZWxlY3QgQ1JDMTZcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZzozNDpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnLTM1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZz02Nz1jb25maWcgQ0FOX0tWQVNFUl9VU0JcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZy02OC1cdHRyaXN0YXRlIFwmIzM0O0t2YXNlciBDQU4vVVNCIGludGVyZmFjZVwmIzM0O1xuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnOjY5Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWctNzAtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWc9MTk9Y29uZmlnIEVOQV9FVEhFUk5FVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9LY29uZmlnLTIzLVx0c2VsZWN0IERJTUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWc6MjQ6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9LY29uZmlnLTI1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnPTE2OT1jb25maWcgUERTX0NPUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZy0xNzItXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc6MTczOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZy0xNzQtXHRzZWxlY3QgUExETUZXXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yMDc9Y29uZmlnIEJOWFRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIxMi1cdHNlbGVjdCBDUkMzMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyMTM6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjE0LVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjU4PWNvbmZpZyBCTkdFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjAtXHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNjE6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYyLVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnPTY4PWNvbmZpZyBMSVFVSURJT1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTc1LVx0c2VsZWN0IExJUVVJRElPX0NPUkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjc2Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy03Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZz0yPWNvbmZpZyBGU0xfRFBBQTJfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNy1cdHNlbGVjdCBGU0xfWEdNQUNfTURJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc6ODpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctOS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvS2NvbmZpZz02PWNvbmZpZyBGVU5fRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL0tjb25maWctOS1cdGRlcGVuZHMgb24gVExTIFx1MDAyNlx1MDAyNiBUTFNfREVWSUNFIHx8IFRMU19ERVZJQ0U9blxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL0tjb25maWc6MTA6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9LY29uZmlnLTExLVx0c2VsZWN0IEZVTl9DT1JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc9OTE9Y29uZmlnIEhOUzNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05My1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzo5NDpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctOTUtXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWc9Nj1jb25maWcgSElOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZy04LVx0ZGVwZW5kcyBvbiAoUENJX01TSSBcdTAwMjZcdTAwMjYgKFg4NiB8fCBBUk02NCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZzo5Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZy0xMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE0NT1jb25maWcgSVhHQkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTE1MC1cdHNlbGVjdCBNRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjE1MTpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0xNTItXHRzZWxlY3QgUExETUZXXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMjk9Y29uZmlnIEk0MEVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIzNS1cdHNlbGVjdCBMSUJJRV9BRE1JTlFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjM2Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIzNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTI5MT1jb25maWcgSUNFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0zMDItXHRzZWxlY3QgTElCSUVfRldMT0cgaWYgREVCVUdfRlNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MzAzOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTMwNC1cdHNlbGVjdCBQQUNLSU5HXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhkL0tjb25maWc9ND1jb25maWcgSVhEXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhkL0tjb25maWctOC1cdHNlbGVjdCBMSUJJRV9QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4ZC9LY29uZmlnOjk6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4ZC9LY29uZmlnLTEwLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9OT1jb25maWcgT0NURU9OVFgyX0FGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMS1cdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoxMjpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMy1cdGRlcGVuZHMgb24gKDY0QklUIFx1MDAyNlx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0zMT1jb25maWcgT0NURU9OVFgyX1BGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMy1cdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozNDpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNS1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc9Nj1jb25maWcgUFJFU1RFUkFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWctOS1cdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc6MTA6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZy0xMS1cdHNlbGVjdCBQSFlMSU5LXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnPTI4PWNvbmZpZyBNTFg0X0NPUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctMzEtXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnOjMyOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctMzMtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz02PWNvbmZpZyBNTFg1X0NPUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy05LVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjEwOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0xMS1cdGRlcGVuZHMgb24gTUxYRlcgfHwgIU1MWEZXXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4ZncvS2NvbmZpZz02PWNvbmZpZyBNTFhGV1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGZ3L0tjb25maWctMTQtXHRzZWxlY3QgWFpfREVDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnOjE1Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZz02PWNvbmZpZyBNTFhTV19DT1JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6ODpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy05LVx0c2VsZWN0IE1MWEZXXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTIwPWNvbmZpZyBGQk5JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yNi1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyNzpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI4LVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZz0xNT1jb25maWcgTVNDQ19PQ0VMT1RfU1dJVENIX0xJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnLTE2LVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnOjE3Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTgtXHRzZWxlY3QgUkVHTUFQX01NSU9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvS2NvbmZpZz0xOT1jb25maWcgTkZQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL0tjb25maWctMjMtXHRkZXBlbmRzIG9uIFRMUyBcdTAwMjZcdTAwMjYgVExTX0RFVklDRSB8fCBUTFNfREVWSUNFPW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9LY29uZmlnOjI0Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvS2NvbmZpZy0yNS1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc9MjA9Y29uZmlnIElPTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yMy1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjQ6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjUtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWc9NzY9Y29uZmlnIFFFRFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnLTgxLVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZzo4MjpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWctODMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL0tjb25maWc9MTk9Y29uZmlnIFNGQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9LY29uZmlnLTI0LVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZzoyNTpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL0tjb25maWctMjYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yPWNvbmZpZyBTVE1NQUNfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMi1cdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzOlx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9NjU9Y29uZmlnIFRJX0NQU1dfU1dJVENIREVWXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03My1cdHNlbGVjdCBSRUdNQVBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NzQ6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNzUtXHRpbXBseSBQSFlfVElfR01JSV9TRUxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTk2PWNvbmZpZyBUSV9LM19BTTY1X0NQU1dfTlVTU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctOTgtXHRkZXBlbmRzIG9uIEFSQ0hfSzMgXHUwMDI2XHUwMDI2IE9GIFx1MDAyNlx1MDAyNiBUSV9LM19VRE1BX0dMVUVfTEFZRVJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6OTk6XHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAwLVx0c2VsZWN0IFRJX0RBVklOQ0lfTURJT1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3p0ZS9kaW5naGFpL0tjb25maWc9Nj1jb25maWcgRElOR0hBSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3p0ZS9kaW5naGFpL0tjb25maWctOC0gICAgZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3p0ZS9kaW5naGFpL0tjb25maWc6OTogICAgc2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC96dGUvZGluZ2hhaS9LY29uZmlnLTEwLSAgICBoZWxwXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTk2PWNvbmZpZyBJT1NNXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTk4LVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo5OTpcdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTEwMC1cdHNlbGVjdCBSRUxBWSBpZiBXV0FOX0RFQlVHRlNcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTIxMT1jb25maWcgUFRQXzE1ODhfQ0xPQ0tfT0NQXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTgtXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbmRyaXZlcnMvcHRwL0tjb25maWc6MjE5Olx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIyMC1cdHNlbGVjdCBDUkMxNlxuLS1cbmluY2x1ZGUvbmV0L2RldmxpbmsuaC02LSAqL1xuaW5jbHVkZS9uZXQvZGV2bGluay5oOjc6I2lmbmRlZiBfTkVUX0RFVkxJTktfSF9cbmluY2x1ZGUvbmV0L2RldmxpbmsuaDo4OiNkZWZpbmUgX05FVF9ERVZMSU5LX0hfXG5pbmNsdWRlL25ldC9kZXZsaW5rLmgtOS1cbi0tXG5pbmNsdWRlL25ldC9kZXZsaW5rLmg9MjExND1kZXZsX3RyYXBfcG9saWNlcnNfdW5yZWdpc3RlcihzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbi0tXG5pbmNsdWRlL25ldC9kZXZsaW5rLmgtMjExNy1cbmluY2x1ZGUvbmV0L2RldmxpbmsuaDoyMTE4OiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfREVWTElOSylcbmluY2x1ZGUvbmV0L2RldmxpbmsuaC0yMTE5LVxuLS1cbmluY2x1ZGUvbmV0L2RldmxpbmsuaD0yMTc3PXN0YXRpYyBpbmxpbmUgc2l6ZV90IGRldmxpbmtfbmxfcG9ydF9oYW5kbGVfc2l6ZShzdHJ1Y3QgZGV2bGlua19wb3J0ICpkZXZsaW5rX3BvcnQpXG4tLVxuaW5jbHVkZS9uZXQvZGV2bGluay5oLTIxODMtXG5pbmNsdWRlL25ldC9kZXZsaW5rLmg6MjE4NDojZW5kaWYgLyogX05FVF9ERVZMSU5LX0hfICovXG4tLVxuaW5jbHVkZS90cmFjZS9ldmVudHMvZGV2bGluay5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RldmxpbmsuaDoyOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfREVWTElOSylcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RldmxpbmsuaC0zLVxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RldmxpbmsuaD0xNzc9VFJBQ0VfRVZFTlQoZGV2bGlua190cmFwX3JlcG9ydCxcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9kZXZsaW5rLmgtMjE0LVxuaW5jbHVkZS90cmFjZS9ldmVudHMvZGV2bGluay5oOjIxNTojZWxzZSAvKiBDT05GSUdfTkVUX0RFVkxJTksgKi9cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RldmxpbmsuaC0yMTYtXG4tLVxubmV0L0tjb25maWc9NDc5PWNvbmZpZyBORVRfU09DS19NU0dcbi0tXG5uZXQvS2NvbmZpZy00ODYtXG5uZXQvS2NvbmZpZzo0ODc6Y29uZmlnIE5FVF9ERVZMSU5LXG5uZXQvS2NvbmZpZy00ODgtXHRib29sXG4tLVxubmV0L01ha2VmaWxlPTI1PW9iai0kKENPTkZJR19CUklER0UpXHRcdCYjNDM7PSBicmlkZ2UvXG5uZXQvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX05FVF9ERVZMSU5LKVx0JiM0Mzs9IGRldmxpbmsvXG5uZXQvTWFrZWZpbGUtMjctb2JqLXlcdFx0XHRcdCYjNDM7PSBkc2EvXG4tLVxubmV0L2NvcmUvZHJvcF9tb25pdG9yLmM9MTAxNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kbV9hbGVydF9vcHMgKm5ldF9kbV9hbGVydF9vcHNfYXJyW10gPSB7XG4tLVxubmV0L2NvcmUvZHJvcF9tb25pdG9yLmMtMTAyMS1cbm5ldC9jb3JlL2Ryb3BfbW9uaXRvci5jOjEwMjI6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9ERVZMSU5LKVxubmV0L2NvcmUvZHJvcF9tb25pdG9yLmMtMTAyMy1zdGF0aWMgaW50IG5ldF9kbV9od19wcm9iZV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgbmV0X2RtX2FsZXJ0X29wcyAqb3BzKVxuLS1cbm5ldC9kc2EvS2NvbmZpZz0zPW1lbnVjb25maWcgTkVUX0RTQVxuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMC1cdHNlbGVjdCBQSFlMSU5LXG5uZXQvZHNhL0tjb25maWc6MTE6XHRzZWxlY3QgTkVUX0RFVkxJTktcbm5ldC9kc2EvS2NvbmZpZy0xMi1cdGltcGx5IE5FVF9TRUxGVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTUwNwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDY5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERldmxpbmsgTmV0bGluayBDaGFuZ2VzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBEZXZsaW5rIHVwZGF0ZS4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIHNvIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBORVRfREVWTElOS2AgaW4gYG5ldC9LY29uZmlnYC4gUmlnaHQsIGl0JiMzOTtzIHNlbGVjdGVkIGJ5IHNldmVyYWwgZHJpdmVycyBsaWtlIE5FVERFVlNJTSwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIE5FVERFVlNJTSAqZG9lcyogc2VsZWN0IGBORVRfREVWTElOS2AsIGFuZCBhbHNvIGBORVRfRFNBYCBhbmQgTUxYNS4gR29vZCwgdGhlIGRlcGVuZGVuY2llcyBhcmUgY2xlYXIuCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgY29kZSBjaGFuZ2VzIHRoZW1zZWx2ZXMsIHN0YXJ0aW5nIHdpdGggYG5ldC9kZXZsaW5rL3BvcnQuY2AuIEFoLCBgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldGAgaGFzIGJlZW4gbW9kaWZpZWQuIEkgc2VlIHRoYXQgdGhlIHN0YXRpYyBgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3lgIHN0cnVjdCBoYXMgYmVlbiByZW1vdmVkLiBJbnN0ZWFkLCB3ZSYjMzk7cmUgdXNpbmcgdGhlIGF1dG8tZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgZnJvbSBgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uY2AuIEludGVyZXN0aW5nLiBUaGV5JiMzOTt2ZSB1cGRhdGVkIGhvdyB0aGUgYXR0cmlidXRlcyBhcmUgcGFyc2VkLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIHN3aXRjaGVkIGZyb20gYSBmaXhlZC1zaXplIGB0YmAgYXJyYXkgYW5kIGEgaGFyZGNvZGVkIHNpemUgdG8gdXNpbmcgYEFSUkFZX1NJWkUoKWAgZm9yIHRoZSBgdGJgIGFycmF5IGFuZCBhIGRlcml2ZWQgc2l6ZSBmb3IgdGhlIG5sYV9wYXJzZSBjYWxsLCB3aGljaCBpcyBhIGJldHRlciwgbW9yZSBmbGV4aWJsZSBhcHByb2FjaC4KCkxldCYjMzk7cyBleGFtaW5lIHRoYXQgbmV3IGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgcG9saWN5LiBPa2F5LCBzbyBpdCBoYW5kbGVzIHRoZSBkaWZmZXJlbnQgYXR0cmlidXRlcyBsaWtlIGBIV19BRERSYCwgYFNUQVRFYCwgYENBUFNgLCBhbmQgYE1BWF9JT19FUVNgLiBUaGUgcG9saWN5IGRlZmluaXRpb25zIGxvb2sgc3RhbmRhcmQgZW5vdWdoLiBVc2luZyBgTkxBX0JJTkFSWWAgZm9yIGBIV19BRERSYCwgYE5MQV9QT0xJQ1lfTUFYYCBmb3IgYFNUQVRFYCwgYE5MQV9QT0xJQ1lfQklURklFTEQzMmAgZm9yIGBDQVBTYCwgYW5kIGBOTEFfVTMyYCBmb3IgYE1BWF9JT19FUVNgLiBUaGF0JiMzOTtzIGFsbCB0eXBpY2FsIE5ldGxpbmsgc3R1ZmYuCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZXNlIHBvbGljaWVzIGFyZSB1c2VkIGluIGBuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jYC4gQWgsIHRoZXJlJiMzOTtzIGBkZXZsaW5rX3BvcnRfc2V0X25sX3BvbGljeWAgYW5kIGBkZXZsaW5rX3JlbG9hZF9ubF9wb2xpY3lgLiBUaGUgZmlyc3Qgb25lIHVzZXMgdGhlIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgZm9yIGBERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTmAgYXMgYSBuZXN0ZWQgYXR0cmlidXRlIGFuZCB0aGUgc2Vjb25kIHVzZXMgYE5MQV9QT0xJQ1lfQklURklFTEQzMigzKWAgZm9yIGBERVZMSU5LX0FUVFJfUkVMT0FEX0xJTUlUU2AuCgpGaW5hbGx5LCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgSSBoYXZlIHRvIHNlZSB3aG8gaXMgYWN0dWFsbHkgKnVzaW5nKiB0aGVzZSBjaGFuZ2VzLiBJJiMzOTtsbCBuZWVkIHRvIGdyZXAgZm9yIGNhbGxzIHRvIGBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRgLCBgZGV2bGlua19ubF9jbWRfcmVsb2FkX2RvaXRgIGFuZCBvdGhlcnMgaW4gdGhlIGBkZXZsaW5rYCBzdWJzeXN0ZW0uIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcmFjdGljYWwgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RldmxpbmtfbmxfcG9ydF9zZXRfZG9pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jPTcwMj1jb25zdCBzdHJ1Y3QgZ2VubF9zcGxpdF9vcHMgZGV2bGlua19ubF9vcHNbNzVdID0ge1xuLS1cbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmMtNzM5LVx0XHQucHJlX2RvaXRcdD0gZGV2bGlua19ubF9wcmVfZG9pdF9wb3J0LFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uYzo3NDA6XHRcdC5kb2l0XHRcdD0gZGV2bGlua19ubF9wb3J0X3NldF9kb2l0LFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uYy03NDEtXHRcdC5wb3N0X2RvaXRcdD0gZGV2bGlua19ubF9wb3N0X2RvaXQsXG4tLVxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uaD01MD1pbnQgZGV2bGlua19ubF9wb3J0X2dldF9kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmgtNTEtXHRcdFx0ICAgICAgIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7XG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oOjUyOmludCBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oLTUzLWludCBkZXZsaW5rX25sX3BvcnRfbmV3X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG4tLVxubmV0L2RldmxpbmsvcG9ydC5jPTc2OD1zdGF0aWMgaW50IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqcG9ydCxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtODE5LVxubmV0L2RldmxpbmsvcG9ydC5jOjgyMDppbnQgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvZGV2bGluay9wb3J0LmMtODIxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcyNTMKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBEZXZsaW5rIFJlbG9hZCBIYW5kbGVycyoqCgpBbHJpZ2h0LCBzbyB3ZSBuZWVkIHRvIHRyYWNrIGRvd24gaG93IHRoZXNlIHJlbG9hZCBjb21tYW5kcyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIGRldmxpbmsgc3Vic3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgYSByZWxvYWQgb3BlcmF0aW9uLCBpcyB0byB6ZXJvIGluIG9uIGZ1bmN0aW9ucyB0aGF0IGxpa2VseSBtYW5hZ2UgdGhhdCBwcm9jZXNzLiBTcGVjaWZpY2FsbHksIEnigJlkIGJlIGNoZWNraW5nIG91dCBgZGV2bGlua19ubF9jbWRfcmVsb2FkX2RvaXRgIG9yIHNpbWlsYXIgZnVuY3Rpb25zIGluIHRoZSBgbmV0L2RldmxpbmsvYCBkaXJlY3RvcnkuIFRoYXQgbmFtaW5nIGNvbnZlbnRpb24gc3VnZ2VzdHMgYSBkaXJlY3QgbGluayB0byB0aGUgTmV0bGluayBpbnRlcmZhY2UgYW5kIHRoZSBjb3JlIGV4ZWN1dGlvbiBmbG93IGZvciByZWxvYWQgY29tbWFuZHMgd2l0aGluIHRoZSBkZXZsaW5rIGNvbnRleHQuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIG1lYXQgb2YgdGhlIHByb2Nlc3NpbmcgdGhlcmUg4oCTIHBhcnNpbmcgdGhlIE5ldGxpbmsgbWVzc2FnZSwgdmFsaWRhdGluZyB0aGUgcmVxdWVzdCwgYW5kIHVsdGltYXRlbHkgb3JjaGVzdHJhdGluZyB0aGUgZGV2aWNlIHJlbG9hZCBpdHNlbGYuIERlcGVuZGluZyBvbiB0aGUgc29waGlzdGljYXRpb24gb2YgdGhlIGRldmxpbmsgaW1wbGVtZW50YXRpb24sIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24gbWlnaHQgYmUgYSB3cmFwcGVyIG9yIGFuIGVudHJ5IHBvaW50IHRoYXQgZGVsZWdhdGVzIHRvIGEgbW9yZSBncmFudWxhciBzZXQgb2YgaGFuZGxlcnMgZGVwZW5kaW5nIG9uIHRoZSBkZXZsaW5rIG9iamVjdCB0eXBlIGludm9sdmVkLiBUaW1lIHRvIGdvIHNwZWx1bmtpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2bGlua19ubF9jbWRfcmVsb2FkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1MjkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkh1bnRpbmcgRG93biBEZXZsaW5rIFJlbG9hZCBGdW5jdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlICYjMzQ7cmVsb2FkJiMzNDsgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYG5ldC9kZXZsaW5rL2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIGZvciBkZXZsaW5rIGRldmljZSBtYW5hZ2VtZW50IHJlc2lkZXMsIHNvIGl0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcuIFRoaXMgcHJvYmFibHkgbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkZXZsaW5rIGluZnJhc3RydWN0dXJlIGhhbmRsZXMgcmVsb2Fkcywgd2hpY2ggaXMgbGlrZWx5IGEgY3J1Y2lhbCBwYXJ0IG9mIGVycm9yIHJlY292ZXJ5LCBob3RwbHVnZ2luZywgb3IgZXZlbiBjb25maWd1cmF0aW9uIGNoYW5nZXMgdGhhdCByZXF1aXJlIGEgZGV2aWNlIHJlc3RhcnQuIEkgc3VzcGVjdCBpdCYjMzk7cyBnb2luZyB0byBpbnZvbHZlIHNvbWUgZm9ybSBvZiBtb2R1bGUgaW50ZXJhY3Rpb24gb3Igc3RhdGUgbWFuYWdlbWVudCBhbmQgSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBUaGUgJiMzNDtyZWxvYWQgZG9pdCYjMzQ7IHRlcm1pbm9sb2d5IHN1Z2dlc3RzIHRoZXNlIGZ1bmN0aW9ucyBhcmUgd2hlcmUgdGhlIHJlYWwgd29yayBnZXRzIGRvbmUsIHBvc3NpYmx5IGFmdGVyIHNvbWUgcHJlLWZsaWdodCBjaGVja3Mgb3IgY29udGV4dCBzZXR1cC4gVGltZSB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIGFuZCBzdGFydCBncmVwcGluZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVsb2FkLipkb2l0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RldmxpbmsvZGV2LmM9NDg5PWRldmxpbmtfbmxfcmVsb2FkX2FjdGlvbnNfcGVyZm9ybWVkX3NuZChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywgdTMyIGFjdGlvbnNfcGVyZm9ybWVkLFxuLS1cbm5ldC9kZXZsaW5rL2Rldi5jLTUxOS1cbm5ldC9kZXZsaW5rL2Rldi5jOjUyMDppbnQgZGV2bGlua19ubF9yZWxvYWRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L2RldmxpbmsvZGV2LmMtNTIxLXtcbi0tXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jPTcwMj1jb25zdCBzdHJ1Y3QgZ2VubF9zcGxpdF9vcHMgZGV2bGlua19ubF9vcHNbNzVdID0ge1xuLS1cbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmMtOTk0LVx0XHQucHJlX2RvaXRcdD0gZGV2bGlua19ubF9wcmVfZG9pdF9kZXZfbG9jayxcbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmM6OTk1Olx0XHQuZG9pdFx0XHQ9IGRldmxpbmtfbmxfcmVsb2FkX2RvaXQsXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLTk5Ni1cdFx0LnBvc3RfZG9pdFx0PSBkZXZsaW5rX25sX3Bvc3RfZG9pdF9kZXZfbG9jayxcbi0tXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oPTkxPWludCBkZXZsaW5rX25sX3Jlc291cmNlX2R1bXBfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oLTkyLVx0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7XG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oOjkzOmludCBkZXZsaW5rX25sX3JlbG9hZF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xubmV0L2RldmxpbmsvbmV0bGlua19nZW4uaC05NC1pbnQgZGV2bGlua19ubF9wYXJhbV9nZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxOTAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgZGV2bGlua19ubF9yZWxvYWRfZG9pdGAgYW5kIGl0cyBJbnRlcmFjdGlvbiB3aXRoIGBERVZMSU5LX0FUVFJfUkVMT0FEX0xJTUlUU2AqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJJiMzOTttIGZvY3VzaW5nIG9uIGhvdyBgZGV2bGlua19ubF9yZWxvYWRfZG9pdGAgdXRpbGl6ZXMgdGhlIGBERVZMSU5LX0FUVFJfUkVMT0FEX0xJTUlUU2AgYXR0cmlidXRlLiBNeSBwcmltYXJ5IGludGVyZXN0IGlzIGluIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCBwYXJ0aWN1bGFybHkgaG93IHJlc291cmNlIGNvbnN0cmFpbnRzLCBpZiBhbnksIGFyZSBtYW5hZ2VkIGR1cmluZyBhIGRldmljZSByZWxvYWQgb3BlcmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJlbG9hZCBsaW1pdHMsIHJlcHJlc2VudGVkIGJ5IHRoaXMgYXR0cmlidXRlLCBpbXBhY3QgdGhlIG92ZXJhbGwgZXhlY3V0aW9uIG9mIHRoZSByZWxvYWQgcHJvY2VkdXJlLiBBcmUgdGhleSBzdHJpY3RseSBlbmZvcmNlZD8gQXJlIHRoZXkgYWR2aXNvcnk/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgaWYgdGhlIGxpbWl0cyBhcmUgZXhjZWVkZWQ/IEkgYWxzbyBuZWVkIHRvIGFzY2VydGFpbiB3aGF0IG90aGVyIGFzcGVjdHMgb2YgZGV2bGluayBhcmUgcmVsYXRlZCB0byB0aGlzIGF0dHJpYnV0ZSwgaXMgdGhpcyBhIHN0YW5kYWxvbmUgZmVhdHVyZSwgb3IgaXMgaXQgcmVsYXRlZCB0byB0aGluZ3MgbGlrZSBwb3dlciBjb25zdW1wdGlvbiwgZXRjPyBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgYERFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTYCBhdHRyaWJ1dGUgaXMgYmVpbmcgcHJvcGVybHkgdmFsaWRhdGVkIGFuZCB1c2VkIHRvIHByZXZlbnQgYW55IHBvdGVudGlhbCByZXNvdXJjZSBleGhhdXN0aW9uIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHJlbG9hZHMuIE15IHVsdGltYXRlIGdvYWwgaXMgdG8gZXZhbHVhdGUgaWYgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIG9yIHNlY3VyaXR5IGlzc3VlcyBleGlzdCBpbiB0aGlzIGNvbnRyb2wgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZGV2bGluay9kZXYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTIwOlx0aW50IGRldmxpbmtfbmxfcmVsb2FkX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiA1MjE6XHR7XG4gNTIyOlx0XHRzdHJ1Y3QgZGV2bGluayAqZGV2bGluayA9IGRldmxpbmtfbmxfY3R4KGluZm8pLVx1MDAzZWRldmxpbms7XG4gNTIzOlx0XHRlbnVtIGRldmxpbmtfcmVsb2FkX2FjdGlvbiBhY3Rpb247XG4gNTI0Olx0XHRlbnVtIGRldmxpbmtfcmVsb2FkX2xpbWl0IGxpbWl0O1xuIDUyNTpcdFx0c3RydWN0IG5ldCAqZGVzdF9uZXQgPSBOVUxMO1xuIDUyNjpcdFx0dTMyIGFjdGlvbnNfcGVyZm9ybWVkO1xuIDUyNzpcdFx0aW50IGVycjtcbiA1Mjg6XHRcbiA1Mjk6XHRcdGVyciA9IGRldmxpbmtfcmVzb3VyY2VzX3ZhbGlkYXRlKGRldmxpbmssIE5VTEwsIGluZm8pO1xuIDUzMDpcdFx0aWYgKGVycikge1xuIDUzMTpcdFx0XHROTF9TRVRfRVJSX01TRyhpbmZvLVx1MDAzZWV4dGFjaywgXCYjMzQ7cmVzb3VyY2VzIHNpemUgdmFsaWRhdGlvbiBmYWlsZWRcJiMzNDspO1xuIDUzMjpcdFx0XHRyZXR1cm4gZXJyO1xuIDUzMzpcdFx0fVxuIDUzNDpcdFxuIDUzNTpcdFx0YWN0aW9uID0gbmxhX2dldF91OF9kZWZhdWx0KGluZm8tXHUwMDNlYXR0cnNbREVWTElOS19BVFRSX1JFTE9BRF9BQ1RJT05dLFxuIDUzNjpcdFx0XHRcdFx0ICAgIERFVkxJTktfUkVMT0FEX0FDVElPTl9EUklWRVJfUkVJTklUKTtcbiA1Mzc6XHRcbiA1Mzg6XHRcdGlmICghZGV2bGlua19yZWxvYWRfYWN0aW9uX2lzX3N1cHBvcnRlZChkZXZsaW5rLCBhY3Rpb24pKSB7XG4gNTM5Olx0XHRcdE5MX1NFVF9FUlJfTVNHKGluZm8tXHUwMDNlZXh0YWNrLCBcJiMzNDtSZXF1ZXN0ZWQgcmVsb2FkIGFjdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXJcJiMzNDspO1xuIDU0MDpcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gNTQxOlx0XHR9XG4gNTQyOlx0XG4gNTQzOlx0XHRsaW1pdCA9IERFVkxJTktfUkVMT0FEX0xJTUlUX1VOU1BFQztcbiA1NDQ6XHRcdGlmIChpbmZvLVx1MDAzZWF0dHJzW0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSkge1xuIDU0NTpcdFx0XHRzdHJ1Y3QgbmxhX2JpdGZpZWxkMzIgbGltaXRzO1xuIDU0NjpcdFx0XHR1MzIgbGltaXRzX3NlbGVjdGVkO1xuIDU0NzpcdFxuIDU0ODpcdFx0XHRsaW1pdHMgPSBubGFfZ2V0X2JpdGZpZWxkMzIoaW5mby1cdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfUkVMT0FEX0xJTUlUU10pO1xuIDU0OTpcdFx0XHRsaW1pdHNfc2VsZWN0ZWQgPSBsaW1pdHMudmFsdWUgXHUwMDI2IGxpbWl0cy5zZWxlY3RvcjtcbiA1NTA6XHRcdFx0aWYgKCFsaW1pdHNfc2VsZWN0ZWQpIHtcbiA1NTE6XHRcdFx0XHROTF9TRVRfRVJSX01TRyhpbmZvLVx1MDAzZWV4dGFjaywgXCYjMzQ7SW52YWxpZCBsaW1pdCBzZWxlY3RlZFwmIzM0Oyk7XG4gNTUyOlx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTUzOlx0XHRcdH1cbiA1NTQ6XHRcdFx0Zm9yIChsaW1pdCA9IDAgOyBsaW1pdCBcdTAwM2M9IERFVkxJTktfUkVMT0FEX0xJTUlUX01BWCA7IGxpbWl0JiM0MzsmIzQzOylcbiA1NTU6XHRcdFx0XHRpZiAobGltaXRzX3NlbGVjdGVkIFx1MDAyNiBCSVQobGltaXQpKVxuIDU1NjpcdFx0XHRcdFx0YnJlYWs7XG4gNTU3Olx0XHRcdC8qIFVBUEkgZW5hYmxlcyBtdWx0aXNlbGVjdGlvbiwgYnV0IGN1cnJlbnRseSBpdCBpcyBub3QgdXNlZCAqL1xuIDU1ODpcdFx0XHRpZiAobGltaXRzX3NlbGVjdGVkICE9IEJJVChsaW1pdCkpIHtcbiA1NTk6XHRcdFx0XHROTF9TRVRfRVJSX01TRyhpbmZvLVx1MDAzZWV4dGFjaywgXCYjMzQ7TXVsdGlzZWxlY3Rpb24gb2YgbGltaXQgaXMgbm90IHN1cHBvcnRlZFwmIzM0Oyk7XG4gNTYwOlx0XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIDU2MTpcdFx0XHR9XG4gNTYyOlx0XHRcdGlmICghZGV2bGlua19yZWxvYWRfbGltaXRfaXNfc3VwcG9ydGVkKGRldmxpbmssIGxpbWl0KSkge1xuIDU2MzpcdFx0XHRcdE5MX1NFVF9FUlJfTVNHKGluZm8tXHUwMDNlZXh0YWNrLCBcJiMzNDtSZXF1ZXN0ZWQgbGltaXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyXCYjMzQ7KTtcbiA1NjQ6XHRcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gNTY1Olx0XHRcdH1cbiA1NjY6XHRcdFx0aWYgKGRldmxpbmtfcmVsb2FkX2NvbWJpbmF0aW9uX2lzX2ludmFsaWQoYWN0aW9uLCBsaW1pdCkpIHtcbiA1Njc6XHRcdFx0XHROTF9TRVRfRVJSX01TRyhpbmZvLVx1MDAzZWV4dGFjaywgXCYjMzQ7UmVxdWVzdGVkIGxpbWl0IGlzIGludmFsaWQgZm9yIHRoaXMgYWN0aW9uXCYjMzQ7KTtcbiA1Njg6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1Njk6XHRcdFx0fVxuIDU3MDpcdFx0fVxuIDU3MTpcdFx0aWYgKGluZm8tXHUwMDNlYXR0cnNbREVWTElOS19BVFRSX05FVE5TX1BJRF0gfHxcbiA1NzI6XHRcdCAgICBpbmZvLVx1MDAzZWF0dHJzW0RFVkxJTktfQVRUUl9ORVROU19GRF0gfHxcbiA1NzM6XHRcdCAgICBpbmZvLVx1MDAzZWF0dHJzW0RFVkxJTktfQVRUUl9ORVROU19JRF0pIHtcbiA1NzQ6XHRcdFx0ZGVzdF9uZXQgPSBkZXZsaW5rX25ldG5zX2dldChza2IsIGluZm8pO1xuIDU3NTpcdFx0XHRpZiAoSVNfRVJSKGRlc3RfbmV0KSlcbiA1NzY6XHRcdFx0XHRyZXR1cm4gUFRSX0VSUihkZXN0X25ldCk7XG4gNTc3Olx0XHRcdGlmICghbmV0X2VxKGRlc3RfbmV0LCBkZXZsaW5rX25ldChkZXZsaW5rKSkgXHUwMDI2XHUwMDI2XG4gNTc4Olx0XHRcdCAgICBhY3Rpb24gIT0gREVWTElOS19SRUxPQURfQUNUSU9OX0RSSVZFUl9SRUlOSVQpIHtcbiA1Nzk6XHRcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoaW5mby1cdTAwM2VleHRhY2ssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NjA5CgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDEyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJpYWdlIFZlcmRpY3Q6IFdvcnRoRnV6emluZyA9IFRydWUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhpcyBwYXRjaCB0b3VjaGVzIHRoZSBgbmV0L2RldmxpbmsvYCBzdWJzeXN0ZW0sIGFuZCB0aGF0IGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHNlZWluZyBtb2RpZmljYXRpb25zIHRvIGBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0YCwgYGRldmxpbmtfbmxfcmVsb2FkX2RvaXRgLCBhbmQgdGhlIGFzc29jaWF0ZWQgbmV0bGluayBwb2xpY3kgdGFibGVzLgoKVGhlIGtleSBjaGFuZ2VzIGludm9sdmUgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgIGluIGBuZXQvZGV2bGluay9wb3J0LmNgIG5vdyB1c2luZyBhIGR5bmFtaWNhbGx5IHBhcnNlZCBuZXN0ZWQgYXR0cmlidXRlIHN0cnVjdHVyZSwgYW5kIGEgZml4IGluIGBkZXZsaW5rX3JlbG9hZF9ubF9wb2xpY3lgIHdpdGhpbiBgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uY2AgcmVnYXJkaW5nIHZhbGlkYXRpb24gbGltaXRzLiBBZGRpdGlvbmFsbHksIGEgbmV3IHBvbGljeSBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGlzIG5vdyBpbiB1c2Ugd2l0aGluIGBkZXZsaW5rX3BvcnRfc2V0X25sX3BvbGljeWAuIFRoaXMgZHJvcHMgYE9QU1RBVEVgIGFuZCBhZGRzIGBNQVhfSU9fRVFTYC4KCk15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIGZ1enphYmxlPyYjMzQ7IFRoZSBhbnN3ZXIgaGluZ2VzIG9uIHdoZXRoZXIgdGhlIG1vZGlmaWVkIGNvZGUgaXMgKnJlYWNoYWJsZSouIEFuZCwgeWVzLCBgbmV0L2RldmxpbmsvYCBpcyBjb3JlIG5ldHdvcmtpbmcsIGEgbmV0bGluayBzdWJzeXN0ZW0uIEl0JiMzOTtzIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgaW4gc3RhbmRhcmQgUUVNVS9LVk0gZW52aXJvbm1lbnRzIHZpYSBuZXRkZXZzaW0gb3IgYW55IGRldmxpbmsgbmV0ZGV2aWNlLiBTbyB0aGUgY3JpdGVyaWEgYXJlIG1ldCBmb3IgJiMzNDtXb3J0aEZ1enppbmc9dHJ1ZSYjMzQ7LiBJdCYjMzk7cyBjb3JlIG5ldHdvcmtpbmcsIGFuZCBuZXRsaW5rIGlzIGEgZGVmaW5pdGUgYXR0YWNrIHN1cmZhY2UuCgpOb3csIGxldCYjMzk7cyBkZXRlcm1pbmUgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gYE5FVF9ERVZMSU5LYCBpcyB0aGUgcHJpbWFyeSBvbmUsIG9mIGNvdXJzZSwgYW5kIGBORVRERVZTSU1gIGxvb2tzIGxpa2UgYSBnb29kIGFkZGl0aW9uIHRvIGVuc3VyZSBkZXZsaW5rIGRldmljZXMgYXJlIHByZXNlbnQgZm9yIHRlc3RpbmcuIFNvLCBJIHdpbGwgaW5jbHVkZSBgTkVUX0RFVkxJTktgIGFuZCBgTkVUREVWU0lNYCBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgLgoKTmV4dCwgdGhlICpGb2N1c1N5bWJvbHMqLiBXZSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50IHRoZSBtb2RpZmllZCBsb2dpYyBvciBkaXJlY3RseSBleGVyY2lzZSBpdC4gQmFzZWQgb24gdGhlIHBhdGNoLCB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFyZToKCjEuICBgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0YCAodGhlIG5ldGxpbmsgZW50cnkgcG9pbnQgZm9yIHBvcnQgc2V0KQoyLiAgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgICh0aGUgcmVmYWN0b3JlZCBmdW5jdGlvbiBpbiBgbmV0L2RldmxpbmsvcG9ydC5jYCkKMy4gIGBkZXZsaW5rX25sX3JlbG9hZF9kb2l0YCAod2hvc2UgbmV0bGluayBwb2xpY3kgd2FzIG1vZGlmaWVkKS4KCkEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdCBgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gY2FsbGVkIGJ5IGEgbm9uLXN0YXRpYyAoYGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdGApIGVudHJ5IHBvaW50LiBCb3RoIGFyZSByZWxldmFudCwgYW5kIHNvIGlzIGBkZXZsaW5rX25sX3JlbG9hZF9kb2l0YC4KCkRvdWJsZS1jaGVja2luZyBhZ2FpbnN0IHRoZSBndWlkZWxpbmVzLCB3ZSBoYXZlOgoKKiAgICoqV29ydGhGdXp6aW5nKio6IFRydWUKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBcWyYjMzQ7TkVUX0RFVkxJTksmIzM0OywgJiMzNDtORVRERVZTSU0mIzM0O10KKiAgICoqRm9jdXNTeW1ib2xzKio6IFxbJiMzNDtkZXZsaW5rXF9wb3J0XF9mdW5jdGlvblxfc2V0JiMzNDssICYjMzQ7ZGV2bGlua1xfbmxcX3BvcnRcX3NldFxfZG9pdCYjMzQ7LCAmIzM0O2RldmxpbmtcX25sXF9yZWxvYWRcX2RvaXQmIzM0O10KCkV2ZXJ5dGhpbmcgY2hlY2tzIG91dC4gVGhlIGBuZXQvZGV2bGluay9gIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIG5ldGxpbmssIHdoaWNoIHByZXNlbnRzIGEgY2xlYXIgYXR0YWNrIHZlY3Rvci4gSSYjMzk7bSBjb25maWRlbnQgaW4gdGhlIHZlcmRpY3QuIFdlJiMzOTtyZSBnb2luZyB0byBmdXp6IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfREVWTElOSyYjMzQ7LAogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0JiMzNDssCiAgICAmIzM0O2RldmxpbmtfbmxfcG9ydF9zZXRfZG9pdCYjMzQ7LAogICAgJiMzNDtkZXZsaW5rX25sX3JlbG9hZF9kb2l0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgZGV2bGluayBuZXRsaW5rIGF0dHJpYnV0ZSBwb2xpY2llcyBhbmQgdGhlIGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQgcGFyc2luZyBsb2dpYyBmb3IgZ2VuZXJpYyBuZXRsaW5rIGNvbW1hbmRzIChwb3J0LXNldCBhbmQgcmVsb2FkKS4gVGhlIGNoYW5nZXMgYXJlIGluIGNvcmUgbmV0d29ya2luZyBuZXRsaW5rIGNvZGUsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgZ2VuZXJpYyBuZXRsaW5rIGRldmxpbmsgZmFtaWx5IG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZMSU5LJiMzNDssCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQmIzM0OywKICAgICYjMzQ7ZGV2bGlua19ubF9wb3J0X3NldF9kb2l0JiMzNDssCiAgICAmIzM0O2RldmxpbmtfbmxfcmVsb2FkX2RvaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBkZXZsaW5rIG5ldGxpbmsgYXR0cmlidXRlIHBvbGljaWVzIGFuZCB0aGUgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCBwYXJzaW5nIGxvZ2ljIGZvciBnZW5lcmljIG5ldGxpbmsgY29tbWFuZHMgKHBvcnQtc2V0IGFuZCByZWxvYWQpLiBUaGUgY2hhbmdlcyBhcmUgaW4gY29yZSBuZXR3b3JraW5nIG5ldGxpbmsgY29kZSwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBnZW5lcmljIG5ldGxpbmsgZGV2bGluayBmYW1pbHkgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyB1cGRhdGVzIHRoZSBkZXZsaW5rIE5ldGxpbmsgWUFNTCBzcGVjaWZpY2F0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sKSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYXV0by1nZW5lcmF0ZWQgTmV0bGluayBwb2xpY2llcyAobmV0L2RldmxpbmsvbmV0bGlua19nZW4uYywgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaCksIGFuZCByZWZhY3RvcnMgbmV0L2RldmxpbmsvcG9ydC5jIHRvIHVzZSB0aGUgZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgaW5zdGVhZCBvZiBhIGR1cGxpY2F0ZWQgc3RhdGljIHBvbGljeS5cblxuVGhlc2UgY2hhbmdlcyBzdHJpY3RseSBwZXJ0YWluIHRvIE5ldGxpbmsgbWVzc2FnZSBwb2xpY3kgdmFsaWRhdGlvbiwgc2NoZW1hIGRlc2NyaXB0aW9ucywgYW5kIGF0dHJpYnV0ZSBwYXJzaW5nLiBUaGUgYXJyYXkgYHRiYCBwYXNzZWQgdG8gYG5sYV9wYXJzZV9uZXN0ZWQoKWAgaXMgYXBwcm9wcmlhdGVseSBzaXplZCBhbmQgaW5pdGlhbGl6ZWQvemVyb2VkIGJ5IGBubGFfcGFyc2UoKWAuIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMsIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSBhcmUgaW50cm9kdWNlZC4gU3RhbmRhcmQgc2FuaXRpemVycyAoS0FTQU4pIGFuZCBOZXRsaW5rIHBhcnNlciBjaGVja3MgYXJlIHN1ZmZpY2llbnQ7IGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTQxYzQ3NDJmNzFkZmIzOWQxZTVkNjFiZjA2ZDJiMDRmZGM2MTY4ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDIwOjQ2OjEyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWwKaW5kZXggMzhiMTE5MGYzZDI2OS4uYWNiMjI4NTZhNmE4NSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sCkBAIC0xNzQsNiAmIzQzOzE3NCwxOCBAQCBkZWZpbml0aW9uczoKICAgICAgICAgdmFsdWU6IDEKICAgICAgIC0KICAgICAgICAgbmFtZTogZnctYWN0aXZhdGUKJiM0MzsgIC0KJiM0MzsgICAgdHlwZTogZW51bQomIzQzOyAgICBuYW1lOiByZWxvYWQtbGltaXQKJiM0MzsgICAgZW50cmllczoKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiB1bnNwZWMKJiM0MzsgICAgICAgIGRvYzogbm8gY29uc3RyYWludHMKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBuby1yZXNldAomIzQzOyAgICAgICAgZG9jOiAmZ3Q7LQomIzQzOyAgICAgICAgICBObyByZXNldCBhbGxvd2VkLCBubyBkb3duIHRpbWUgYWxsb3dlZCwgbm8gbGluayBmbGFwIGFuZCBubwomIzQzOyAgICAgICAgICBjb25maWd1cmF0aW9uIGlzIGxvc3QuCiAgIC0KICAgICB0eXBlOiBlbnVtCiAgICAgbmFtZTogcGFyYW0tY21vZGUKQEAgLTc3NSw3ICYjNDM7Nzg3LDcgQEAgYXR0cmlidXRlLXNldHM6CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlbG9hZC1saW1pdHMKICAgICAgICAgdHlwZTogYml0ZmllbGQzMgotICAgICAgICBlbnVtOiByZWxvYWQtYWN0aW9uCiYjNDM7ICAgICAgICBlbnVtOiByZWxvYWQtbGltaXQKICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZQogICAgICAgLQogICAgICAgICBuYW1lOiBkZXYtc3RhdHMKQEAgLTc5Myw2ICYjNDM7ODA1LDcgQEAgYXR0cmlidXRlLXNldHM6CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlbG9hZC1zdGF0cy1saW1pdAogICAgICAgICB0eXBlOiB1OAomIzQzOyAgICAgICAgZW51bTogcmVsb2FkLWxpbWl0CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlbG9hZC1zdGF0cy12YWx1ZQogICAgICAgICB0eXBlOiB1MzIKQEAgLTg0NSwxMyAmIzQzOzg1OCwxNCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogbGluZWNhcmQtc3VwcG9ydGVkLXR5cGVzCiAgICAgICAgIHR5cGU6IG5lc3QKICAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLWxpbmVjYXJkLXN1cHBvcnRlZC10eXBlcwotCi0gICAgICAjIFRPRE86IGZpbGwgaW4gdGhlIGF0dHJpYnV0ZXMgaW4gYmV0d2VlbgotCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogbmVzdGVkLWRldmxpbmsKJiM0MzsgICAgICAgIHR5cGU6IG5lc3QKJiM0MzsgICAgICAgIG11bHRpLWF0dHI6IHRydWUKJiM0MzsgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1uZXN0ZWQtZGV2bGluawogICAgICAgLQogICAgICAgICBuYW1lOiBzZWxmdGVzdHMKICAgICAgICAgdHlwZTogbmVzdAotICAgICAgICB2YWx1ZTogMTc2CiAgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1zZWxmdGVzdC1pZAogICAgICAgLQogICAgICAgICBuYW1lOiByYXRlLXR4LXByaW9yaXR5CkBAIC04OTgsNyAmIzQzOzkxMiw3IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgLQogICAgICAgICBuYW1lOiBwYXJlbnQtZGV2CiAgICAgICAgIHR5cGU6IG5lc3QKLSAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBhcmVudC1kZXYKJiM0MzsgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1uZXN0ZWQtZGV2bGluawogICAgICAgICBkb2M6IHwKICAgICAgICAgICBJZGVudGlmaWVzIHRoZSBkZXZsaW5rIGluc3RhbmNlIHdoaWNoIG93bnMgdGhlIHBhcmVudCByYXRlIG5vZGUuCiAgICAgICAgICAgVXNlZCB3aXRoIHJhdGUtc2V0IGFuZCByYXRlLW5ldyB0byBwYXJlbnQgYSByYXRlIG9iamVjdCB0byBhIG5vZGUgb24KQEAgLTk3OCw2ICYjNDM7OTkyLDQ5IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgICB0eXBlOiBiaXRmaWVsZDMyCiAgICAgICAgIGVudW06IHBvcnQtZm4tYXR0ci1jYXAKICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGRldmxpbmsKJiM0MzsgICAgICAgIHR5cGU6IG5lc3QKJiM0MzsgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1uZXN0ZWQtZGV2bGluawomIzQzOyAgICAgICAgZG9jOiBIYW5kbGUgb2YgdGhlIHBlZXIgZGV2bGluayBpbnN0YW5jZSBpbnN0YW50aWF0ZWQgZm9yIHRoaXMgZnVuY3Rpb24uCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogbWF4LWlvLWVxcwomIzQzOyAgICAgICAgdHlwZTogdTMyCiYjNDM7CiYjNDM7ICAtCiYjNDM7ICAgIG5hbWU6IGRsLXBvcnQtZnVuY3Rpb24tc2V0CiYjNDM7ICAgIHN1YnNldC1vZjogZGwtcG9ydC1mdW5jdGlvbgomIzQzOyAgICBkb2M6IHwKJiM0MzsgICAgICBQb3J0IGZ1bmN0aW9uIGF0dHJpYnV0ZXMgdGhhdCBjYW4gYmUgY29uZmlndXJlZDsgb3BzdGF0ZSBhbmQgdGhlCiYjNDM7ICAgICAgZGV2bGluayBoYW5kbGUgYXJlIHJlYWQtb25seS4KJiM0MzsgICAgYXR0cmlidXRlczoKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBody1hZGRyCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogc3RhdGUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBjYXBzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogbWF4LWlvLWVxcwomIzQzOwomIzQzOyAgLQomIzQzOyAgICBuYW1lOiBkbC1wb3J0LXNldAomIzQzOyAgICBzdWJzZXQtb2Y6IGRldmxpbmsKJiM0MzsgICAgZG9jOiBBdHRyaWJ1dGVzIGFjY2VwdGVkIGJ5IHRoZSBwb3J0LXNldCByZXF1ZXN0LgomIzQzOyAgICBhdHRyaWJ1dGVzOgomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGJ1cy1uYW1lCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogZGV2LW5hbWUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBpbmRleAomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHBvcnQtaW5kZXgKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwb3J0LXR5cGUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwb3J0LWZ1bmN0aW9uCiYjNDM7ICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtcG9ydC1mdW5jdGlvbi1zZXQKIAogICAtCiAgICAgbmFtZTogZGwtZHBpcGUtdGFibGVzCkBAIC0xMDA4LDYgJiM0MzsxMDY1LDggQEAgYXR0cmlidXRlLXNldHM6CiAgICAgICAgIG5hbWU6IGRwaXBlLXRhYmxlLXJlc291cmNlLWlkCiAgICAgICAtCiAgICAgICAgIG5hbWU6IGRwaXBlLXRhYmxlLXJlc291cmNlLXVuaXRzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogcGFkCiAKICAgLQogICAgIG5hbWU6IGRsLWRwaXBlLXRhYmxlLW1hdGNoZXMKQEAgLTEwNDIsNiAmIzQzOzExMDEsOCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogZHBpcGUtZW50cnktYWN0aW9uLXZhbHVlcwogICAgICAgLQogICAgICAgICBuYW1lOiBkcGlwZS1lbnRyeS1jb3VudGVyCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogcGFkCiAKICAgLQogICAgIG5hbWU6IGRsLWRwaXBlLWVudHJ5LW1hdGNoLXZhbHVlcwpAQCAtMTE4MCw2ICYjNDM7MTI0MSw4IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgICBuYW1lOiByZXNvdXJjZS11bml0CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlc291cmNlLW9jYwomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHBhZAogCiAgIC0KICAgICBuYW1lOiBkbC1yZXNvdXJjZS1saXN0CkBAIC0xMjA3LDYgJiM0MzsxMjcwLDcgQEAgYXR0cmlidXRlLXNldHM6CiAgICAgYXR0cmlidXRlczoKICAgICAgIC0KICAgICAgICAgbmFtZTogcmVnaW9uLXNuYXBzaG90CiYjNDM7ICAgICAgICBtdWx0aS1hdHRyOiB0cnVlCiAKICAgLQogICAgIG5hbWU6IGRsLXJlZ2lvbi1zbmFwc2hvdApAQCAtMTIyMSw2ICYjNDM7MTI4NSw3IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgIGF0dHJpYnV0ZXM6CiAgICAgICAtCiAgICAgICAgIG5hbWU6IHJlZ2lvbi1jaHVuawomIzQzOyAgICAgICAgbXVsdGktYXR0cjogdHJ1ZQogCiAgIC0KICAgICBuYW1lOiBkbC1yZWdpb24tY2h1bmsKQEAgLTEyMzAsNiAmIzQzOzEyOTUsOCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rLWRhdGEKICAgICAgIC0KICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rLWFkZHIKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwYWQKIAogICAtCiAgICAgbmFtZTogZGwtZm1zZwpAQCAtMTI3MCw2ICYjNDM7MTMzNyw4IEBAIGF0dHJpYnV0ZS1zZXRzOgogICAgICAgICBuYW1lOiBoZWFsdGgtcmVwb3J0ZXItYXV0by1kdW1wCiAgICAgICAtCiAgICAgICAgIG5hbWU6IGhlYWx0aC1yZXBvcnRlci1idXJzdC1wZXJpb2QKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwYWQKIAogICAtCiAgICAgbmFtZTogZGwtYXR0ci1zdGF0cwpAQCAtMTI4NCw2ICYjNDM7MTM1MywxMCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgIC0KICAgICAgICAgbmFtZTogc3RhdHMtcngtZHJvcHBlZAogICAgICAgICB0eXBlOiB1NjQKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBwYWQKJiM0MzsgICAgICAgIHR5cGU6IHBhZAomIzQzOyAgICAgICAgdmFsdWU6IDYxCiAKICAgLQogICAgIG5hbWU6IGRsLXRyYXAtbWV0YWRhdGEKQEAgLTEzMDMsNiAmIzQzOzEzNzYsNyBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICBhdHRyaWJ1dGVzOgogICAgICAgLQogICAgICAgICBuYW1lOiBsaW5lY2FyZC10eXBlCiYjNDM7ICAgICAgICBtdWx0aS1hdHRyOiB0cnVlCiAKICAgLQogICAgIG5hbWU6IGRsLXNlbGZ0ZXN0LWlkCkBAIC0xMzMwLDYgJiM0MzsxNDA0LDUwIEBAIGF0dHJpYnV0ZS1zZXRzOgogICAtCiAgICAgbmFtZTogZGwtcGFyZW50LWRldgogICAgIHN1YnNldC1vZjogZGV2bGluawomIzQzOyAgICBkb2M6IHwKJiM0MzsgICAgICBEZXZsaW5rIGhhbmRsZSBhY2NlcHRlZCBhcyB0aGUgcGFyZW50LWRldiBpbnB1dDsgdGhlIG5ldG5zIGlkIHRoZQomIzQzOyAgICAgIGtlcm5lbCByZXBvcnRzIGJhY2sgaXMgbm90IGFjY2VwdGVkLCB0aGUgcGFyZW50IGlzIGFsd2F5cyByZXNvbHZlZAomIzQzOyAgICAgIGluIHRoZSBjYWxsZXImIzM5O3MgbmV0bnMuCiYjNDM7ICAgIGF0dHJpYnV0ZXM6CiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogYnVzLW5hbWUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBkZXYtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGluZGV4CiYjNDM7CiYjNDM7ICAtCiYjNDM7ICAgIG5hbWU6IGRsLXJhdGUtc2V0CiYjNDM7ICAgIHN1YnNldC1vZjogZGV2bGluawomIzQzOyAgICBkb2M6IEF0dHJpYnV0ZXMgYWNjZXB0ZWQgYnkgdGhlIHJhdGUtc2V0IGFuZCByYXRlLW5ldyByZXF1ZXN0cy4KJiM0MzsgICAgYXR0cmlidXRlczoKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBidXMtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IGRldi1uYW1lCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogaW5kZXgKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiByYXRlLW5vZGUtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtdHgtc2hhcmUKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiByYXRlLXR4LW1heAomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtdHgtcHJpb3JpdHkKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiByYXRlLXR4LXdlaWdodAomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtcGFyZW50LW5vZGUtbmFtZQomIzQzOyAgICAgIC0KJiM0MzsgICAgICAgIG5hbWU6IHJhdGUtdGMtYndzCiYjNDM7ICAgICAgLQomIzQzOyAgICAgICAgbmFtZTogcGFyZW50LWRldgomIzQzOyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBhcmVudC1kZXYKJiM0MzsKJiM0MzsgIC0KJiM0MzsgICAgbmFtZTogZGwtbmVzdGVkLWRldmxpbmsKJiM0MzsgICAgc3Vic2V0LW9mOiBkZXZsaW5rCiAgICAgYXR0cmlidXRlczoKICAgICAgIC0KICAgICAgICAgbmFtZTogYnVzLW5hbWUKQEAgLTEzMzcsNiAmIzQzOzE0NTUsOCBAQCBhdHRyaWJ1dGUtc2V0czoKICAgICAgICAgbmFtZTogZGV2LW5hbWUKICAgICAgIC0KICAgICAgICAgbmFtZTogaW5kZXgKJiM0MzsgICAgICAtCiYjNDM7ICAgICAgICBuYW1lOiBuZXRucy1pZAogCiBvcGVyYXRpb25zOgogICBlbnVtLW1vZGVsOiBkaXJlY3Rpb25hbApAQCAtMTM2Myw2ICYjNDM7MTQ4Myw3IEBAIG9wZXJhdGlvbnM6CiAgICAgICAgICAgICAtIGluZGV4CiAgICAgICAgICAgICAtIHJlbG9hZC1mYWlsZWQKICAgICAgICAgICAgIC0gZGV2LXN0YXRzCiYjNDM7ICAgICAgICAgICAgLSBuZXN0ZWQtZGV2bGluawogICAgICAgZHVtcDoKICAgICAgICAgcmVwbHk6ICpnZXQtcmVwbHkKIApAQCAtMTM4OCwxMyAmIzQzOzE1MDksMTIgQEAgb3BlcmF0aW9uczoKICAgICAgICAgcmVxdWVzdDoKICAgICAgICAgICBhdHRyaWJ1dGVzOiAqZGV2LWlkLWF0dHJzCiAgICAgICAgIHJlcGx5OgotICAgICAgICAgIHZhbHVlOiAzICAjIGR1ZSB0byBhIGJ1ZywgcG9ydCBkdW1wIHJldHVybnMgREVWTElOS19DTURfTkVXCiAgICAgICAgICAgYXR0cmlidXRlczogKnBvcnQtaWQtYXR0cnMKIAogICAgIC0KICAgICAgIG5hbWU6IHBvcnQtc2V0CiAgICAgICBkb2M6IFNldCBkZXZsaW5rIHBvcnQgaW5zdGFuY2VzLgotICAgICAgYXR0cmlidXRlLXNldDogZGV2bGluawomIzQzOyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXBvcnQtc2V0CiAgICAgICBkb250LXZhbGlkYXRlOiBbc3RyaWN0XQogICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXQogICAgICAgZG86CkBAIC0xOTc1LDYgJiM0MzsyMDk1LDcgQEAgb3BlcmF0aW9uczoKICAgICAgICAgICAgIC0gaW5kZXgKICAgICAgICAgICAgIC0gcG9ydC1pbmRleAogICAgICAgICAgICAgLSByZWdpb24tbmFtZQomIzQzOyAgICAgICAgICAgIC0gcmVnaW9uLWNodW5rcwogCiAgICAgLQogICAgICAgbmFtZTogcG9ydC1wYXJhbS1nZXQKQEAgLTIzMDUsNyAmIzQzOzI0MjYsNyBAQCBvcGVyYXRpb25zOgogICAgIC0KICAgICAgIG5hbWU6IHJhdGUtc2V0CiAgICAgICBkb2M6IFNldCByYXRlIGluc3RhbmNlcy4KLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmsKJiM0MzsgICAgICBhdHRyaWJ1dGUtc2V0OiBkbC1yYXRlLXNldAogICAgICAgZG9udC12YWxpZGF0ZTogW3N0cmljdF0KICAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV0KICAgICAgIGRvOgpAQCAtMjMyOCw3ICYjNDM7MjQ0OSw3IEBAIG9wZXJhdGlvbnM6CiAgICAgLQogICAgICAgbmFtZTogcmF0ZS1uZXcKICAgICAgIGRvYzogQ3JlYXRlIHJhdGUgaW5zdGFuY2VzLgotICAgICAgYXR0cmlidXRlLXNldDogZGV2bGluawomIzQzOyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXJhdGUtc2V0CiAgICAgICBkb250LXZhbGlkYXRlOiBbc3RyaWN0XQogICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXQogICAgICAgZG86CkBAIC0yMzc0LDE0ICYjNDM7MjQ5NSwyMiBAQCBvcGVyYXRpb25zOgogICAgICAgICBwb3N0OiBkZXZsaW5rLW5sLXBvc3QtZG9pdAogICAgICAgICByZXF1ZXN0OgogICAgICAgICAgIHZhbHVlOiA3OAotICAgICAgICAgIGF0dHJpYnV0ZXM6ICZhbXA7bGluZWNhcmQtaWQtYXR0cnMKJiM0MzsgICAgICAgICAgYXR0cmlidXRlczoKICAgICAgICAgICAgIC0gYnVzLW5hbWUKICAgICAgICAgICAgIC0gZGV2LW5hbWUKICAgICAgICAgICAgIC0gaW5kZXgKICAgICAgICAgICAgIC0gbGluZWNhcmQtaW5kZXgKICAgICAgICAgcmVwbHk6ICZhbXA7bGluZWNhcmQtZ2V0LXJlcGx5CiAgICAgICAgICAgdmFsdWU6IDgwCi0gICAgICAgICAgYXR0cmlidXRlczogKmxpbmVjYXJkLWlkLWF0dHJzCiYjNDM7ICAgICAgICAgIGF0dHJpYnV0ZXM6CiYjNDM7ICAgICAgICAgICAgLSBidXMtbmFtZQomIzQzOyAgICAgICAgICAgIC0gZGV2LW5hbWUKJiM0MzsgICAgICAgICAgICAtIGluZGV4CiYjNDM7ICAgICAgICAgICAgLSBsaW5lY2FyZC1pbmRleAomIzQzOyAgICAgICAgICAgIC0gbGluZWNhcmQtc3RhdGUKJiM0MzsgICAgICAgICAgICAtIGxpbmVjYXJkLXR5cGUKJiM0MzsgICAgICAgICAgICAtIGxpbmVjYXJkLXN1cHBvcnRlZC10eXBlcwomIzQzOyAgICAgICAgICAgIC0gbmVzdGVkLWRldmxpbmsKICAgICAgIGR1bXA6CiAgICAgICAgIHJlcXVlc3Q6CiAgICAgICAgICAgYXR0cmlidXRlczogKmRldi1pZC1hdHRycwpkaWZmIC0tZ2l0IGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uYyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmMKaW5kZXggZGVjMDAxMzMxNzhkMS4uNDNlZjY4NjRkNDYyZiAxMDA2NDQKLS0tIGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jCkBAIC01MiwxMSAmIzQzOzUyLDExIEBAIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcGFyZW50X2Rldl9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICYjNDM7IDFdCiAJW0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsICZhbXA7ZGV2bGlua19hdHRyX2luZGV4X3JhbmdlKSwKIH07CiAKLWNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQUyAmIzQzOyAxXSA9IHsKJiM0Mztjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeVtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTICYjNDM7IDFdID0gewogCVtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZLCB9LAogCVtERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURV0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTgsIDEpLAotCVtERVZMSU5LX1BPUlRfRk5fQVRUUl9PUFNUQVRFXSA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VOCwgMSksCiAJW0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDE1KSwKJiM0MzsJW0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sCiB9OwogCiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3JhdGVfdGNfYndzX25sX3BvbGljeVtERVZMSU5LX1JBVEVfVENfQVRUUl9CVyAmIzQzOyAxXSA9IHsKQEAgLTk3LDcgJiM0Mzs5Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX3BvcnRfc2V0X25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggJiM0MzsgMQogCVtERVZMSU5LX0FUVFJfSU5ERVhdID0gTkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VSU5ULCAmYW1wO2RldmxpbmtfYXR0cl9pbmRleF9yYW5nZSksCiAJW0RFVkxJTktfQVRUUl9QT1JUX0lOREVYXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LAogCVtERVZMSU5LX0FUVFJfUE9SVF9UWVBFXSA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VMTYsIDMpLAotCVtERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl0gPSBOTEFfUE9MSUNZX05FU1RFRChkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5KSwKJiM0MzsJW0RFVkxJTktfQVRUUl9QT1JUX0ZVTkNUSU9OXSA9IE5MQV9QT0xJQ1lfTkVTVEVEKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5KSwKIH07CiAKIC8qIERFVkxJTktfQ01EX1BPUlRfTkVXIC0gZG8gKi8KQEAgLTMzNCw3ICYjNDM7MzM0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfcmVsb2FkX25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggJiM0MzsgMV0KIAlbREVWTElOS19BVFRSX0RFVl9OQU1FXSA9IHsgLnR5cGUgPSBOTEFfTlVMX1NUUklORywgfSwKIAlbREVWTElOS19BVFRSX0lOREVYXSA9IE5MQV9QT0xJQ1lfRlVMTF9SQU5HRShOTEFfVUlOVCwgJmFtcDtkZXZsaW5rX2F0dHJfaW5kZXhfcmFuZ2UpLAogCVtERVZMSU5LX0FUVFJfUkVMT0FEX0FDVElPTl0gPSBOTEFfUE9MSUNZX1JBTkdFKE5MQV9VOCwgMSwgMiksCi0JW0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMig2KSwKJiM0MzsJW0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMigzKSwKIAlbREVWTElOS19BVFRSX05FVE5TX1BJRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSwKIAlbREVWTElOS19BVFRSX05FVE5TX0ZEXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LAogCVtERVZMSU5LX0FUVFJfTkVUTlNfSURdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sCmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oIGIvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaAppbmRleCBhNzBlMGU0NzY5YWE1Li45OWNjYWNjNjkzYjc2IDEwMDY0NAotLS0gYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmgKQEAgLTE0LDcgJiM0MzsxNCw3IEBACiAKIC8qIENvbW1vbiBuZXN0ZWQgdHlwZXMgKi8KIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BhcmVudF9kZXZfbmxfcG9saWN5W0RFVkxJTktfQVRUUl9JTkRFWCAmIzQzOyAxXTsKLWV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFMgJiM0MzsgMV07CiYjNDM7ZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVMgJiM0MzsgMV07CiBleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9yYXRlX3RjX2J3c19ubF9wb2xpY3lbREVWTElOS19SQVRFX1RDX0FUVFJfQlcgJiM0MzsgMV07CiBleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9zZWxmdGVzdF9pZF9ubF9wb2xpY3lbREVWTElOS19BVFRSX1NFTEZURVNUX0lEX0ZMQVNIICYjNDM7IDFdOwogCmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9wb3J0LmMgYi9uZXQvZGV2bGluay9wb3J0LmMKaW5kZXggMTUyOGYyZDE0OGRmYy4uODAzNDI5ZDlhMDA4OSAxMDA2NDQKLS0tIGEvbmV0L2RldmxpbmsvcG9ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kZXZsaW5rL3BvcnQuYwpAQCAtNiwxOSAmIzQzOzYsNiBAQAogCiAjaW5jbHVkZSAmIzM0O2RldmxfaW50ZXJuYWwuaCYjMzQ7CiAKLSNkZWZpbmUgREVWTElOS19QT1JUX0ZOX0NBUFNfVkFMSURfTUFTSyBcCi0JKF9CSVRVTChfX0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNfTUFYKSAtIDEpCi0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeVtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9NQVggJiM0MzsgMV0gPSB7Ci0JW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJdID0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSwKLQlbREVWTElOS19QT1JUX0ZOX0FUVFJfU1RBVEVdID0KLQkJTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIERFVkxJTktfUE9SVF9GTl9TVEFURV9JTkFDVElWRSwKLQkJCQkgREVWTElOS19QT1JUX0ZOX1NUQVRFX0FDVElWRSksCi0JW0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID0KLQkJTkxBX1BPTElDWV9CSVRGSUVMRDMyKERFVkxJTktfUE9SVF9GTl9DQVBTX1ZBTElEX01BU0spLAotCVtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sCi19OwotCiAjZGVmaW5lIEFTU0VSVF9ERVZMSU5LX1BPUlRfUkVHSVNURVJFRChkZXZsaW5rX3BvcnQpCQkJCVwKIAlXQVJOX09OX09OQ0UoIShkZXZsaW5rX3BvcnQpLSZndDtyZWdpc3RlcmVkKQogI2RlZmluZSBBU1NFUlRfREVWTElOS19QT1JUX05PVF9SRUdJU1RFUkVEKGRldmxpbmtfcG9ydCkJCQlcCkBAIC03ODIsMTEgJiM0Mzs3NjksMTEgQEAgc3RhdGljIGludCBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsCiAJCQkJICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLAogCQkJCSAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogewotCXN0cnVjdCBubGF0dHIgKnRiW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCAmIzQzOyAxXTsKJiM0MzsJc3RydWN0IG5sYXR0ciAqdGJbQVJSQVlfU0laRShkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSldOwogCWludCBlcnI7CiAKLQllcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9NQVgsIGF0dHIsCi0JCQkgICAgICAgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3ksIGV4dGFjayk7CiYjNDM7CWVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIEFSUkFZX1NJWkUodGIpIC0gMSwgYXR0ciwKJiM0MzsJCQkgICAgICAgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3ksIGV4dGFjayk7CiAJaWYgKGVyciAmbHQ7IDApIHsKIAkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O0ZhaWwgdG8gcGFyc2UgcG9ydCBmdW5jdGlvbiBhdHRyaWJ1dGVzJiMzNDspOwogCQlyZXR1cm4gZXJyOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ0MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIFVuaW5pdGlhbGl6ZWQgTWVtb3J5IFJpc2tzIGluIHRoZSBEZXZsaW5rIEtlcm5lbCBQYXRjaCBTZXJpZXMqKgoKT2theSwgc28gbXkgdGFzayBoZXJlIGlzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoaXMga2VybmVsIHBhdGNoIHNlcmllcyB3YXJyYW50cyBydW5uaW5nIEtNU0FOLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBpZGVudGlmeSBhbnkgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBMZXQmIzM5O3MgYnJlYWsgaXQgZG93bi4KCkZpcnN0LCBJIHNlZSB1cGRhdGVzIHRvIHRoZSBOZXRsaW5rIHNwZWNpZmljYXRpb24gWUFNTCBmb3IgZGV2bGluayAoYERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWxgKS4gVGhpcyBpcyBtb3N0bHkgc2NoZW1hIGFuZCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMsIGRlZmluaW5nIGF0dHJpYnV0ZXMsIGV0Yy4sIHNvIG9uIGl0cyBvd24sIHNlZW1zIHVubGlrZWx5IHRvIGludHJvZHVjZSBtZW1vcnkgc2FmZXR5IGlzc3Vlcy4gV2UgaGF2ZSBzY2hlbWEgZGVmaW5pdGlvbnMgdGhhdCBhcmUgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMsIGFuZCB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgY29kZSBmcm9tIHRob3NlIHNjaGVtYXMuCgpOZXh0LCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNgIGFuZCBgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaGAuIEl0IGFwcGVhcnMgdG8gYmUgZ2VuZXJhdGluZyBOZXRsaW5rIHBvbGljeSB1cGRhdGVzIGJhc2VkIG9uIHRoZSBZQU1MIGZpbGUuIEkgc2VlIHRoZSBwb2xpY3kgZGVmaW5pdGlvbnMgYmVpbmcgdXBkYXRlZDogYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lgIGJlY29taW5nIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAsIHdpdGggYSBub3RhYmxlIGluY3JlYXNlIGluIHNpemUgYW5kIGBkZXZsaW5rX3JlbG9hZF9ubF9wb2xpY3lgIGdldHMgYSBiaXRmaWVsZCB1cGRhdGUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGV4YWN0IGRpZmZzLCBidXQgdGhpcyBpcyBhdXRvLWdlbmVyYXRlZCBjb2RlLCBzbyBJJiMzOTtkIGJlIGxvb2tpbmcgZm9yIGEgbG9naWMgZXJyb3IgaW4gdGhlIGNvZGUgZ2VuZXJhdG9yIHdoaWNoIGlzIHVubGlrZWx5LCBidXQgcG9zc2libGUuCgpGaW5hbGx5LCB0aGUgY29yZSBvZiB0aGUgY29uY2VybiBsaWVzIGluIGBuZXQvZGV2bGluay9wb3J0LmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBwYXRjaCByZW1vdmVzIGEgaGFuZC13cml0dGVuIGBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeWAgYW5kIHJlcGxhY2VzIGl0IHdpdGggdGhlIGF1dG8tZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAuIFRoZSBjaGFuZ2UgaW52b2x2ZXMgYSBgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCgpYCBmdW5jdGlvbi4gSW5zaWRlIHRoaXMgZnVuY3Rpb24sIEkgc2VlIGBzdHJ1Y3QgbmxhdHRyICp0YltBUlJBWV9TSVpFKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5KV07YCBkZWNsYXJlZCwgYW5kIHRoZW4gYG5sYV9wYXJzZV9uZXN0ZWQodGIsIEFSUkFZX1NJWkUodGIpIC0gMSwgYXR0ciwgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3ksIGV4dGFjayk7YC4KClRoaXMgaXMgd2hlcmUgSSBmb2N1cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGB0YmAgaXMgaW5pdGlhbGl6ZWQgYW5kIHVzZWQuIGBubGFfcGFyc2VfbmVzdGVkYCBmaWxscyB0aGUgYHRiYCBhcnJheSwgd2hpY2gsIHdoZW4gcHJvcGVybHkgaW1wbGVtZW50ZWQsIHNob3VsZCBiZSBPSy4gSG93ZXZlciwgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgYXJndW1lbnRzIGZyb20gYG5sYV9wYXJzZV9uZXN0ZWRgIGFyZSB1c2VkLiBJZiBgdGJgIGlzIHBhcnRpYWxseSBpbml0aWFsaXplZCBhbmQgaXRzIGNvbnRlbnRzIGFyZSB1c2VkIHdpdGhvdXQgcHJvcGVyIGJvdW5kcyBjaGVja3Mgb3IgaW5pdGlhbGl6YXRpb24gY2hlY2tzIGVsc2V3aGVyZSwgdGhhdCBjb3VsZCBiZSBhIHByb2JsZW0uIE15IHByaW1hcnkgZm9jdXMgaXMgdG8gdmVyaWZ5IHRoYXQgYHRiYCBpcyBmdWxseSBpbml0aWFsaXplZCBieSBgbmxhX3BhcnNlX25lc3RlZGAgb3IgdGhhdCBhbnkgdW5pbml0aWFsaXplZCBwYXJ0cyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCgpUaGVyZWZvcmUsIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBuZXQvZGV2bGluay9wb3J0LmNgIGFyb3VuZCBgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCgpYC4gSSB3aWxsIHVzZSBgZ3JlcHBlcmAgb3Igc2ltcGx5IHJlYWQgdGhlIGNvZGUgYXJvdW5kIHRoYXQgYXJlYSB0byB2ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3IgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbnMgZHVlIHRvIGNoYW5nZXMgaW4gdGhlIGRhdGEgc3RydWN0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kZXZsaW5rLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZGV2bGluay9wb3J0LmM9NjkzPXN0YXRpYyBpbnQgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3ZhbGlkYXRlKHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCxcbi0tXG5uZXQvZGV2bGluay9wb3J0LmMtNzY3LVxubmV0L2RldmxpbmsvcG9ydC5jOjc2ODpzdGF0aWMgaW50IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqcG9ydCxcbm5ldC9kZXZsaW5rL3BvcnQuYy03NjktXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jPTgyMD1pbnQgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2RldmxpbmsvcG9ydC5jLTgzNy1cbm5ldC9kZXZsaW5rL3BvcnQuYzo4Mzg6XHRcdGVyciA9IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoZGV2bGlua19wb3J0LCBhdHRyLCBleHRhY2spO1xubmV0L2RldmxpbmsvcG9ydC5jLTgzOS1cdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc3MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHByb2Nlc3NpbmcgdGhlIGNvZGUgbXlzZWxmOgoKKipEZWx2aW5nIGludG8gRGV2bGluayBQb3J0IENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byBgbmV0L2RldmxpbmsvcG9ydC5jYCwgc3BlY2lmaWNhbGx5IGxpbmVzIDc2MCB0byA4MjAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaW1wbGVtZW50ZWQgaW4gdGhpcyBzZWN0aW9uLCBsaWtlbHkgaW52b2x2aW5nIHRoZSBjb25maWd1cmF0aW9uIG9yIG1hbmlwdWxhdGlvbiBvZiBhIGRldmxpbmsgcG9ydC4gSSYjMzk7bSBpbW1lZGlhdGVseSBleHBlY3RpbmcgdG8gc2VlIGRldGFpbHMgYXJvdW5kIHNldHRpbmcgb3IgcmV0cmlldmluZyBwcm9wZXJ0aWVzLCBoYW5kbGluZyBzcGVjaWZpYyBjb21tYW5kcywgb3IgcG90ZW50aWFsbHkgZXZlbiBtYW5hZ2luZyB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgdGhyb3VnaCB0aGlzIHBvcnQuIEJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIHRoaXMgbGlrZWx5IGludm9sdmVzIGNoZWNraW5nIHBlcm1pc3Npb25zIG9yIHZhcmlvdXMgcGFyYW1ldGVycyB0byBlc3RhYmxpc2ggdGhlIGNvcnJlY3QgY29uZGl0aW9ucyBmb3IgYWNjZXNzLCBoYW5kbGluZyBlcnJvciBjb25kaXRpb25zLCBhbmQgbWFuYWdpbmcgbG9ja3MgdG8gZW5zdXJlIHRocmVhZCBzYWZldHkgd2hlbiBtb2RpZnlpbmcgc2hhcmVkIGRhdGEuIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBob3cgdGhleSBoYW5kbGUgZGlmZmVyZW50IHBvcnQgdHlwZXMgb3Igb3BlcmF0aW9uYWwgc3RhdGVzLCBhcyB0aGVzZSBhcmUgZnJlcXVlbnRseSB0aGUgc291cmNlcyBvZiBzdWJ0bGUgYnVncywgZGVwZW5kaW5nIG9uIHRoZSBwYXJ0aWN1bGFyIGRyaXZlci4gSSYjMzk7bSBhbHNvIGFudGljaXBhdGluZyBzb21lIGludGVyYWN0aW9uIHdpdGggbmV0bGluayBtZXNzYWdlcyBvciBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcywgZ2l2ZW4gdGhlIG5hdHVyZSBvZiBkZXZsaW5rLiBUaGlzIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHBpY3R1cmUgb2YgaG93IHRoZXNlIHBvcnRzIGFyZSBpbml0aWFsaXplZCBhbmQgd2hhdCBzb3J0IG9mIGN1c3RvbWl6YXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBJJiMzOTtsbCBiZSBsb29raW5nIGNhcmVmdWxseSBhdCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIHBhc3NlZCBhcm91bmQsIGJlY2F1c2UsIGRlcGVuZGluZyBvbiB0aGUgYXJjaGl0ZWN0dXJlLCB0aGVyZSBjb3VsZCBiZSBpbnRlcmVzdGluZyBvcHRpbWl6YXRpb25zIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGRldGFpbHMgaW4gdGhlIGRlc2lnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZGV2bGluay9wb3J0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc2MDpcdFx0ICAgICFvcHMtXHUwMDNlcG9ydF9mbl9tYXhfaW9fZXFzX3NldCkge1xuIDc2MTpcdFx0XHROTF9TRVRfRVJSX01TR19BVFRSKGV4dGFjaywgdGJbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU10sXG4gNzYyOlx0XHRcdFx0XHQgICAgXCYjMzQ7RnVuY3Rpb24gZG9lcyBub3Qgc3VwcG9ydCBtYXhfaW9fZXFzIHNldHRpbmdcJiMzNDspO1xuIDc2MzpcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gNzY0Olx0XHR9XG4gNzY1Olx0XHRyZXR1cm4gMDtcbiA3NjY6XHR9XG4gNzY3Olx0XG4gNzY4Olx0c3RhdGljIGludCBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsXG4gNzY5Olx0XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4gNzcwOlx0XHRcdFx0XHQgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiA3NzE6XHR7XG4gNzcyOlx0XHRzdHJ1Y3QgbmxhdHRyICp0YltBUlJBWV9TSVpFKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5KV07XG4gNzczOlx0XHRpbnQgZXJyO1xuIDc3NDpcdFxuIDc3NTpcdFx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgQVJSQVlfU0laRSh0YikgLSAxLCBhdHRyLFxuIDc3NjpcdFx0XHRcdCAgICAgICBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSwgZXh0YWNrKTtcbiA3Nzc6XHRcdGlmIChlcnIgXHUwMDNjIDApIHtcbiA3Nzg6XHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtGYWlsIHRvIHBhcnNlIHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlc1wmIzM0Oyk7XG4gNzc5Olx0XHRcdHJldHVybiBlcnI7XG4gNzgwOlx0XHR9XG4gNzgxOlx0XG4gNzgyOlx0XHRlcnIgPSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fdmFsaWRhdGUocG9ydCwgdGIsIGV4dGFjayk7XG4gNzgzOlx0XHRpZiAoZXJyKVxuIDc4NDpcdFx0XHRyZXR1cm4gZXJyO1xuIDc4NTpcdFxuIDc4NjpcdFx0YXR0ciA9IHRiW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJdO1xuIDc4NzpcdFx0aWYgKGF0dHIpIHtcbiA3ODg6XHRcdFx0ZXJyID0gZGV2bGlua19wb3J0X2Z1bmN0aW9uX2h3X2FkZHJfc2V0KHBvcnQsIGF0dHIsIGV4dGFjayk7XG4gNzg5Olx0XHRcdGlmIChlcnIpXG4gNzkwOlx0XHRcdFx0cmV0dXJuIGVycjtcbiA3OTE6XHRcdH1cbiA3OTI6XHRcbiA3OTM6XHRcdGF0dHIgPSB0YltERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTXTtcbiA3OTQ6XHRcdGlmIChhdHRyKSB7XG4gNzk1Olx0XHRcdGVyciA9IGRldmxpbmtfcG9ydF9mbl9jYXBzX3NldChwb3J0LCBhdHRyLCBleHRhY2spO1xuIDc5NjpcdFx0XHRpZiAoZXJyKVxuIDc5NzpcdFx0XHRcdHJldHVybiBlcnI7XG4gNzk4Olx0XHR9XG4gNzk5Olx0XG4gODAwOlx0XHRhdHRyID0gdGJbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU107XG4gODAxOlx0XHRpZiAoYXR0cikge1xuIDgwMjpcdFx0XHRlcnIgPSBkZXZsaW5rX3BvcnRfZm5fbWF4X2lvX2Vxc19zZXQocG9ydCwgYXR0ciwgZXh0YWNrKTtcbiA4MDM6XHRcdFx0aWYgKGVycilcbiA4MDQ6XHRcdFx0XHRyZXR1cm4gZXJyO1xuIDgwNTpcdFx0fVxuIDgwNjpcdFxuIDgwNzpcdFx0LyogS2VlcCB0aGlzIGFzIHRoZSBsYXN0IGZ1bmN0aW9uIGF0dHJpYnV0ZSBzZXQsIHNvIHRoYXQgd2hlblxuIDgwODpcdFx0ICogbXVsdGlwbGUgcG9ydCBmdW5jdGlvbiBhdHRyaWJ1dGVzIGFyZSBzZXQgYWxvbmcgd2l0aCBzdGF0ZSxcbiA4MDk6XHRcdCAqIFRob3NlIGNhbiBiZSBhcHBsaWVkIGZpcnN0IGJlZm9yZSBhY3RpdmF0aW5nIHRoZSBzdGF0ZS5cbiA4MTA6XHRcdCAqL1xuIDgxMTpcdFx0YXR0ciA9IHRiW0RFVkxJTktfUE9SVF9GTl9BVFRSX1NUQVRFXTtcbiA4MTI6XHRcdGlmIChhdHRyKVxuIDgxMzpcdFx0XHRlcnIgPSBkZXZsaW5rX3BvcnRfZm5fc3RhdGVfc2V0KHBvcnQsIGF0dHIsIGV4dGFjayk7XG4gODE0Olx0XG4gODE1Olx0XHRpZiAoIWVycilcbiA4MTY6XHRcdFx0ZGV2bGlua19wb3J0X25vdGlmeShwb3J0LCBERVZMSU5LX0NNRF9QT1JUX05FVyk7XG4gODE3Olx0XHRyZXR1cm4gZXJyO1xuIDgxODpcdH1cbiA4MTk6XHRcbiA4MjA6XHRpbnQgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gODIxOlx0e1xuIDgyMjpcdFx0c3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0ID0gZGV2bGlua19ubF9jdHgoaW5mbyktXHUwMDNlZGV2bGlua19wb3J0O1xuIDgyMzpcdFx0aW50IGVycjtcbiA4MjQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTEyOAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGxpbmsgQXR0cmlidXRlIFBhcnNpbmcgTG9naWMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBubGFfcGFyc2VfbmVzdGVkYCBpcyBiZWluZyB1c2VkIGhlcmUsIGFuZCBpdCBsb29rcyBsaWtlIGl0IGluaXRpYWxpemVzIHRoZSBgdGJgIGFycmF5IGJ5IGNsZWFyaW5nIG9yIHNldHRpbmcgdGhlIHBvaW50ZXJzLiBTcGVjaWZpY2FsbHksIGBubGFfcGFyc2VfbmVzdGVkYCBpcyBjYWxsZWQgd2l0aCBgdGJgIGFuZCBgQVJSQVlfU0laRSh0YikgLSAxYCwgYWxvbmcgd2l0aCBvdGhlciBwYXJhbWV0ZXJzIGxpa2UgYGF0dHJgLiBJIG5lZWQgdG8gY29uZmlybSBob3cgYG5sYV9wYXJzZV9uZXN0ZWRgIG9wZXJhdGVzIHVuZGVyIHRoZSBob29kLiBJdCBzZWVtcyB0byBiZSBlaXRoZXIgZG9pbmcgYSBgbWVtc2V0YCB0byB6ZXJvIG91dCBgdGJgIG9yIHVzaW5nIGBubGFfcGFyc2VgLgoKQSBkZWVwZXIgbG9vayBhdCBgbmxhX3BhcnNlYCBjb25maXJtcyBpdCYjMzk7cyBkb2luZyBhIGBtZW1zZXRgIG9uIGB0YmAgd2l0aCBgbWVtc2V0KHRiLCAwLCBzaXplb2Yoc3RydWN0IG5sYXR0ciAqKSAqIChtYXh0eXBlICYjNDM7IDEpKWAuIEluIHRoaXMgY29udGV4dCwgdGhlIHNpemUgb2YgdGhlIGB0YmAgYXJyYXksIGBBUlJBWV9TSVpFKHRiKWAsIGlzIGVxdWFsIHRvIGBERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTICYjNDM7IDFgLiBUaGlzIGltcGxpZXMgdGhhdCBgQVJSQVlfU0laRSh0YikgLSAxYCBpcyB0aGVuIGBERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTYC4gU28sIGB0YlswXWAgdXAgdG8gYHRiW0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdYCBzaG91bGQgYmUgZ2V0dGluZyB6ZXJvZWQgb3V0LCBhbmQgdGhlbiBwb3B1bGF0ZWQgYnkgYG5sYV9wYXJzZWAuCgpOZXh0LCBJJiMzOTtsbCBleGFtaW5lIHRoZSBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGRlZmluaXRpb24sIGZvdW5kIGluIGBuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jYC4gSXQmIzM5O3MgYSBgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3lgIGFycmF5IHdpdGggYSBzaXplIG9mIGBbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRUyAmIzQzOyAxXWAuCgpOb3csIEkgbmVlZCB0byBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaW5kZXggYWNjZXNzIHRvIGFsbCBlbGVtZW50cyBpbiBgdGJgIGFyZSB3aXRoaW4gYWNjZXB0YWJsZSBib3VuZHMsIGFuZCBpdCBsb29rcyBsaWtlIGl0IGlzLiBIZXJlIGFyZSB0aGUgYXR0cmlidXRlcyB0aGF0IHNlZW0gdG8gYmUgcmVsZXZhbnQ6IGBERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSYCAodmFsdWUgMSksIGBERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTYCAodmFsdWUgMyksIGBERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTYCAodmFsdWUgNCksIGFuZCBgREVWTElOS19QT1JUX0ZOX0FUVFJfU1RBVEVgICh2YWx1ZSAyKS4gQWxsIHRoZSBpbmRpY2VzIGFyZSB3aXRoaW4gdGhlIHJhbmdlIEkmIzM5O3ZlIGNhbGN1bGF0ZWQsIHVwIHRvIGBERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTYC4KCkZpbmFsbHksIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIHJldmlldyB0aGUgZW51bSB2YWx1ZXMgb2YgYERFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSXypgIHRvIHZlcmlmeSB0aGV5IGFsaWduIHdpdGggdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCB3aGljaCBJJiMzOTtsbCBmaW5kIGluIGBpbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7REVWTElOS19QT1JUX0ZOX0FUVFJfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oPTcyMT1lbnVtIGRldmxpbmtfcG9ydF9mbl9hdHRyX2NhcCB7XG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oOjcyMjpcdERFVkxJTktfUE9SVF9GTl9BVFRSX0NBUF9ST0NFX0JJVCxcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzIzOlx0REVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX01JR1JBVEFCTEVfQklULFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3MjQ6XHRERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBfSVBTRUNfQ1JZUFRPX0JJVCxcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzI1Olx0REVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX0lQU0VDX1BBQ0tFVF9CSVQsXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTcyNi1cbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmgtNzI3LVx0LyogQWRkIG5ldyBjYXBzIGFib3ZlICovXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oOjcyODpcdF9fREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQU19NQVgsXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTcyOS19O1xuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaC03MzAtXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oOjczMTojZGVmaW5lIERFVkxJTktfUE9SVF9GTl9DQVBfUk9DRSBfQklUVUwoREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX1JPQ0VfQklUKVxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaC03MzItI2RlZmluZSBERVZMSU5LX1BPUlRfRk5fQ0FQX01JR1JBVEFCTEUgXFxcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzMzOlx0X0JJVFVMKERFVkxJTktfUE9SVF9GTl9BVFRSX0NBUF9NSUdSQVRBQkxFX0JJVClcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzM0OiNkZWZpbmUgREVWTElOS19QT1JUX0ZOX0NBUF9JUFNFQ19DUllQVE8gX0JJVFVMKERFVkxJTktfUE9SVF9GTl9BVFRSX0NBUF9JUFNFQ19DUllQVE9fQklUKVxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3MzU6I2RlZmluZSBERVZMSU5LX1BPUlRfRk5fQ0FQX0lQU0VDX1BBQ0tFVCBfQklUVUwoREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX0lQU0VDX1BBQ0tFVF9CSVQpXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTczNi1cbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg9NzM3PWVudW0gZGV2bGlua19wb3J0X2Z1bmN0aW9uX2F0dHIge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmgtNzM5LVx0REVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfSFdfQUREUixcdC8qIGJpbmFyeSAqL1xuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3NDA6XHRERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURSxcdC8qIHU4ICovXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oOjc0MTpcdERFVkxJTktfUE9SVF9GTl9BVFRSX09QU1RBVEUsXHQvKiB1OCAqL1xuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3NDI6XHRERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTLFx0LyogYml0ZmllbGQzMiAqL1xuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3NDM6XHRERVZMSU5LX1BPUlRfRk5fQVRUUl9ERVZMSU5LLFx0LyogbmVzdGVkICovXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oOjc0NDpcdERFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVMsXHQvKiB1MzIgKi9cbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmgtNzQ1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAwMgoJCQkJCQkJb3V0cHV0OiAyMjEKCQkJCQkJCXRob3VnaHRzOiA0MTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBEZXZsaW5rIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBvbiByZWZpbmluZyB0aGUgaW50ZXJuYWwgd29ya2luZ3MgYW5kIGRvY3VtZW50YXRpb24gb2YgdGhlIERldmxpbmsgc3Vic3lzdGVtLCBwYXJ0aWN1bGFybHkgYXJvdW5kIGhvdyBpdCBoYW5kbGVzIE5ldGxpbmsgYXR0cmlidXRlcy4KCkZpcnN0LCB0aGUgY29yZSBvZiBpdCBpbnZvbHZlcyB1cGRhdGluZyB0aGUgYGRldmxpbmsueWFtbGAgc3BlY2lmaWNhdGlvbi4gSXQgc2VlbXMgbGlrZSB0aGUgZ29hbCBpcyB0byBtYWtlIHRoZSBzY2hlbWEgZGVmaW5pdGlvbnMgbW9yZSBwcmVjaXNlLCBlc3BlY2lhbGx5IGFyb3VuZCBhdHRyaWJ1dGVzIHJlbGF0ZWQgdG8gc2V0cywgcmVwbGllcywgbXVsdGktYXR0cmlidXRlIGZsYWdzLCBhbmQgZW51bXMuIFRoaXMgaXMgYSBnb29kIG1vdmU7IGEgbW9yZSBhY2N1cmF0ZSBZQU1MIHNwZWMgaXMgY3J1Y2lhbCBmb3IgZ2VuZXJhdGluZyBjb3JyZWN0IGFuZCBtYWludGFpbmFibGUgTmV0bGluayBjb2RlLgoKVGhlIHVwZGF0ZXMgdG8gdGhlIGF1dG8tZ2VuZXJhdGVkIGZpbGVzLCBgbmV0bGlua19nZW4uY2AgYW5kIGBuZXRsaW5rX2dlbi5oYCwgYXJlIGV4cGVjdGVkLiBUaGV54oCZcmUgZGlyZWN0bHkgZGVyaXZlZCBmcm9tIHRoZSBZQU1MIHNwZWMuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZSBmcm9tIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5YCB0byBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGFuZCB0aGUgYml0bWFzayBjb25zdHJhaW50IGZvciByZWxvYWQgbGltaXRzIGluIGBkZXZsaW5rX3JlbG9hZF9ubF9wb2xpY3lgIGFyZSBzaW1wbHkgdGhlIGRvd25zdHJlYW0gZWZmZWN0cyBvZiByZWZpbmluZyB0aGUgWUFNTC4KClRoZSBtb3N0IGludGVyZXN0aW5nIHBhcnQgaXMgaW4gYG5ldC9kZXZsaW5rL3BvcnQuY2AuIEl0JiMzOTtzIGNsZWFuaW5nIHVwIHRoZSBjb2RlIGJ5IGRlZHVwbGljYXRpbmcgdGhlIHBvbGljeSwgcmVwbGFjaW5nIHRoZSBtYW51YWxseSBkZWZpbmVkIGBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeWAgd2l0aCB0aGUgYXV0by1nZW5lcmF0ZWQgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5YCB3aXRoaW4gdGhlIGBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KClgIGZ1bmN0aW9uLiBUaGlzIGltcHJvdmVzIG1haW50YWluYWJpbGl0eSBhbmQgZW5zdXJlcyBjb25zaXN0ZW5jeS4KCk5vdywgbGV0JiMzOTtzIGFkZHJlc3MgdGhlIGNydWNpYWwgcXVlc3Rpb246IGFyZSB0aGVyZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3M/IEJhc2VkIG9uIG15IHJldmlldywgdGhlIHBhdGNoIHNlZW1zIHRvIGJlIHF1aXRlIHNhZmUuIE5vIG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aG91dCBpbml0aWFsaXphdGlvbiwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIGRvbiYjMzk7dCBzZWUgYW55IG9idmlvdXMgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlIGVpdGhlci4gVGhlIHVzZSBvZiBgbmxhX3BhcnNlX25lc3RlZGAgZm9yIHBhcnNpbmcgbmVzdGVkIE5ldGxpbmsgYXR0cmlidXRlcyBwcm92aWRlcyBhIHJvYnVzdCBzb2x1dGlvbiwgc2luY2UgaXQgemVyb2VzIG91dCB0aGUgYHRiYCBzdHJ1Y3QsIHdoaWNoIGlzIGVzc2VudGlhbC4gVGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBmb2N1c2VkIG9uIE5ldGxpbmsgYXR0cmlidXRlIHZhbGlkYXRpb24gYW5kIGRvY3VtZW50YXRpb24sIHdoaWNoIHNob3VsZCByZWR1Y2UgdGhlIGNoYW5jZSBmb3IgZXJyb3JzLiBFeGlzdGluZyBOZXRsaW5rIHBhcnNpbmcgbWVjaGFuaXNtcywgYW5kIEtBU0FOLCBzZWVtIHRvIGNhdGNoIGFueSBvdXQtb2YtYm91bmRzIGFjY2Vzcy4KClNvLCB0byBzdW1tYXJpemUgYW5kIGFuc3dlciBteSBvd24gcXVlc3Rpb25zOgoKKiAgIERvZXMgdGhpcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBOby4gVGhlIHBhdGNoIGxvb2tzIHZlcnkgc2FmZSBvbiB0aGF0IGZyb250LgoqICAgVGhlIHN0YW5kYXJkIEtBU0FOIGFuZCBVQlNBTiBidWlsZHMgc2hvdWxkIGVhc2lseSBiZSBhYmxlIHRvIGRldGVjdCBhbnkgYnVmZmVyIG92ZXJydW5zIG9yIHR5cGUgaXNzdWVzIGlmIHRoZXkgc29tZWhvdyBleGlzdGVkLgoqICAgTmVlZHNLTVNBTiBzaG91bGQgYmUgZmFsc2UuCgpGaW5hbGx5LCBqdXN0IHRvIGJlIHN1cmU6CgpgTmVlZHNLTVNBTmA6IGZhbHNlCmBLTVNBTlJlYXNvbmluZ2A6IFRoZSByZWFzb25pbmcgaXMgY2xlYXIuIEtBU0FOIGlzIHRoZSByaWdodCB0b29sIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyB1cGRhdGVzIHRoZSBkZXZsaW5rIE5ldGxpbmsgWUFNTCBzcGVjaWZpY2F0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sKSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYXV0by1nZW5lcmF0ZWQgTmV0bGluayBwb2xpY2llcyAobmV0L2RldmxpbmsvbmV0bGlua19nZW4uYywgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaCksIGFuZCByZWZhY3RvcnMgbmV0L2RldmxpbmsvcG9ydC5jIHRvIHVzZSB0aGUgZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgaW5zdGVhZCBvZiBhIGR1cGxpY2F0ZWQgc3RhdGljIHBvbGljeS5cblxuVGhlc2UgY2hhbmdlcyBzdHJpY3RseSBwZXJ0YWluIHRvIE5ldGxpbmsgbWVzc2FnZSBwb2xpY3kgdmFsaWRhdGlvbiwgc2NoZW1hIGRlc2NyaXB0aW9ucywgYW5kIGF0dHJpYnV0ZSBwYXJzaW5nLiBUaGUgYXJyYXkgYHRiYCBwYXNzZWQgdG8gYG5sYV9wYXJzZV9uZXN0ZWQoKWAgaXMgYXBwcm9wcmlhdGVseSBzaXplZCBhbmQgaW5pdGlhbGl6ZWQvemVyb2VkIGJ5IGBubGFfcGFyc2UoKWAuIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMsIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSBhcmUgaW50cm9kdWNlZC4gU3RhbmRhcmQgc2FuaXRpemVycyAoS0FTQU4pIGFuZCBOZXRsaW5rIHBhcnNlciBjaGVja3MgYXJlIHN1ZmZpY2llbnQ7IGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIHVwZGF0ZXMgdGhlIGRldmxpbmsgTmV0bGluayBZQU1MIHNwZWNpZmljYXRpb24gKERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWwpIGFuZCB0aGUgY29ycmVzcG9uZGluZyBhdXRvLWdlbmVyYXRlZCBOZXRsaW5rIHBvbGljaWVzIChuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLCBuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oKSwgYW5kIHJlZmFjdG9ycyBuZXQvZGV2bGluay9wb3J0LmMgdG8gdXNlIHRoZSBnZW5lcmF0ZWQgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5YCBpbnN0ZWFkIG9mIGEgZHVwbGljYXRlZCBzdGF0aWMgcG9saWN5LlxuXG5UaGVzZSBjaGFuZ2VzIHN0cmljdGx5IHBlcnRhaW4gdG8gTmV0bGluayBtZXNzYWdlIHBvbGljeSB2YWxpZGF0aW9uLCBzY2hlbWEgZGVzY3JpcHRpb25zLCBhbmQgYXR0cmlidXRlIHBhcnNpbmcuIFRoZSBhcnJheSBgdGJgIHBhc3NlZCB0byBgbmxhX3BhcnNlX25lc3RlZCgpYCBpcyBhcHByb3ByaWF0ZWx5IHNpemVkIGFuZCBpbml0aWFsaXplZC96ZXJvZWQgYnkgYG5sYV9wYXJzZSgpYC4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSByZWFkcywgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIGFyZSBpbnRyb2R1Y2VkLiBTdGFuZGFyZCBzYW5pdGl6ZXJzIChLQVNBTikgYW5kIE5ldGxpbmsgcGFyc2VyIGNoZWNrcyBhcmUgc3VmZmljaWVudDsgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjQ2OjEzLjE2NTMwODc1NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NjgxNDY1MzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9ERVZMSU5LXCIsXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0XCIsXG4gICAgXCJkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRcIixcbiAgICBcImRldmxpbmtfbmxfcmVsb2FkX2RvaXRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyB1cGRhdGVzIHRoZSBkZXZsaW5rIE5ldGxpbmsgWUFNTCBzcGVjaWZpY2F0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sKSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYXV0by1nZW5lcmF0ZWQgTmV0bGluayBwb2xpY2llcyAobmV0L2RldmxpbmsvbmV0bGlua19nZW4uYywgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaCksIGFuZCByZWZhY3RvcnMgbmV0L2RldmxpbmsvcG9ydC5jIHRvIHVzZSB0aGUgZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgaW5zdGVhZCBvZiBhIGR1cGxpY2F0ZWQgc3RhdGljIHBvbGljeS5cXG5cXG5UaGVzZSBjaGFuZ2VzIHN0cmljdGx5IHBlcnRhaW4gdG8gTmV0bGluayBtZXNzYWdlIHBvbGljeSB2YWxpZGF0aW9uLCBzY2hlbWEgZGVzY3JpcHRpb25zLCBhbmQgYXR0cmlidXRlIHBhcnNpbmcuIFRoZSBhcnJheSBgdGJgIHBhc3NlZCB0byBgbmxhX3BhcnNlX25lc3RlZCgpYCBpcyBhcHByb3ByaWF0ZWx5IHNpemVkIGFuZCBpbml0aWFsaXplZC96ZXJvZWQgYnkgYG5sYV9wYXJzZSgpYC4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSByZWFkcywgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIGFyZSBpbnRyb2R1Y2VkLiBTdGFuZGFyZCBzYW5pdGl6ZXJzIChLQVNBTikgYW5kIE5ldGxpbmsgcGFyc2VyIGNoZWNrcyBhcmUgc3VmZmljaWVudDsgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBkZXZsaW5rIG5ldGxpbmsgYXR0cmlidXRlIHBvbGljaWVzIGFuZCB0aGUgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCBwYXJzaW5nIGxvZ2ljIGZvciBnZW5lcmljIG5ldGxpbmsgY29tbWFuZHMgKHBvcnQtc2V0IGFuZCByZWxvYWQpLiBUaGUgY2hhbmdlcyBhcmUgaW4gY29yZSBuZXR3b3JraW5nIG5ldGxpbmsgY29kZSwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBnZW5lcmljIG5ldGxpbmsgZGV2bGluayBmYW1pbHkgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6MTMuMTY1MzEzMDM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU4MTE0MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5NDFjNDc0MmY3MWRmYjM5ZDFlNWQ2MWJmMDZkMmIwNGZkYzYxNjhkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDIwOjQ2OjEyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWwgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sXFxuaW5kZXggMzhiMTE5MGYzZDI2OS4uYWNiMjI4NTZhNmE4NSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbFxcbkBAIC0xNzQsNiArMTc0LDE4IEBAIGRlZmluaXRpb25zOlxcbiAgICAgICAgIHZhbHVlOiAxXFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBmdy1hY3RpdmF0ZVxcbisgIC1cXG4rICAgIHR5cGU6IGVudW1cXG4rICAgIG5hbWU6IHJlbG9hZC1saW1pdFxcbisgICAgZW50cmllczpcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHVuc3BlY1xcbisgICAgICAgIGRvYzogbm8gY29uc3RyYWludHNcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IG5vLXJlc2V0XFxuKyAgICAgICAgZG9jOiBcXHUwMDNlLVxcbisgICAgICAgICAgTm8gcmVzZXQgYWxsb3dlZCwgbm8gZG93biB0aW1lIGFsbG93ZWQsIG5vIGxpbmsgZmxhcCBhbmQgbm9cXG4rICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaXMgbG9zdC5cXG4gICAtXFxuICAgICB0eXBlOiBlbnVtXFxuICAgICBuYW1lOiBwYXJhbS1jbW9kZVxcbkBAIC03NzUsNyArNzg3LDcgQEAgYXR0cmlidXRlLXNldHM6XFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiByZWxvYWQtbGltaXRzXFxuICAgICAgICAgdHlwZTogYml0ZmllbGQzMlxcbi0gICAgICAgIGVudW06IHJlbG9hZC1hY3Rpb25cXG4rICAgICAgICBlbnVtOiByZWxvYWQtbGltaXRcXG4gICAgICAgICBlbnVtLWFzLWZsYWdzOiB0cnVlXFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBkZXYtc3RhdHNcXG5AQCAtNzkzLDYgKzgwNSw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogcmVsb2FkLXN0YXRzLWxpbWl0XFxuICAgICAgICAgdHlwZTogdThcXG4rICAgICAgICBlbnVtOiByZWxvYWQtbGltaXRcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IHJlbG9hZC1zdGF0cy12YWx1ZVxcbiAgICAgICAgIHR5cGU6IHUzMlxcbkBAIC04NDUsMTMgKzg1OCwxNCBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgICAgICBuYW1lOiBsaW5lY2FyZC1zdXBwb3J0ZWQtdHlwZXNcXG4gICAgICAgICB0eXBlOiBuZXN0XFxuICAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLWxpbmVjYXJkLXN1cHBvcnRlZC10eXBlc1xcbi1cXG4tICAgICAgIyBUT0RPOiBmaWxsIGluIHRoZSBhdHRyaWJ1dGVzIGluIGJldHdlZW5cXG4tXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBuZXN0ZWQtZGV2bGlua1xcbisgICAgICAgIHR5cGU6IG5lc3RcXG4rICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXFxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLW5lc3RlZC1kZXZsaW5rXFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBzZWxmdGVzdHNcXG4gICAgICAgICB0eXBlOiBuZXN0XFxuLSAgICAgICAgdmFsdWU6IDE3NlxcbiAgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1zZWxmdGVzdC1pZFxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogcmF0ZS10eC1wcmlvcml0eVxcbkBAIC04OTgsNyArOTEyLDcgQEAgYXR0cmlidXRlLXNldHM6XFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBwYXJlbnQtZGV2XFxuICAgICAgICAgdHlwZTogbmVzdFxcbi0gICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1wYXJlbnQtZGV2XFxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLW5lc3RlZC1kZXZsaW5rXFxuICAgICAgICAgZG9jOiB8XFxuICAgICAgICAgICBJZGVudGlmaWVzIHRoZSBkZXZsaW5rIGluc3RhbmNlIHdoaWNoIG93bnMgdGhlIHBhcmVudCByYXRlIG5vZGUuXFxuICAgICAgICAgICBVc2VkIHdpdGggcmF0ZS1zZXQgYW5kIHJhdGUtbmV3IHRvIHBhcmVudCBhIHJhdGUgb2JqZWN0IHRvIGEgbm9kZSBvblxcbkBAIC05NzgsNiArOTkyLDQ5IEBAIGF0dHJpYnV0ZS1zZXRzOlxcbiAgICAgICAgIHR5cGU6IGJpdGZpZWxkMzJcXG4gICAgICAgICBlbnVtOiBwb3J0LWZuLWF0dHItY2FwXFxuICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZVxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogZGV2bGlua1xcbisgICAgICAgIHR5cGU6IG5lc3RcXG4rICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtbmVzdGVkLWRldmxpbmtcXG4rICAgICAgICBkb2M6IEhhbmRsZSBvZiB0aGUgcGVlciBkZXZsaW5rIGluc3RhbmNlIGluc3RhbnRpYXRlZCBmb3IgdGhpcyBmdW5jdGlvbi5cXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IG1heC1pby1lcXNcXG4rICAgICAgICB0eXBlOiB1MzJcXG4rXFxuKyAgLVxcbisgICAgbmFtZTogZGwtcG9ydC1mdW5jdGlvbi1zZXRcXG4rICAgIHN1YnNldC1vZjogZGwtcG9ydC1mdW5jdGlvblxcbisgICAgZG9jOiB8XFxuKyAgICAgIFBvcnQgZnVuY3Rpb24gYXR0cmlidXRlcyB0aGF0IGNhbiBiZSBjb25maWd1cmVkOyBvcHN0YXRlIGFuZCB0aGVcXG4rICAgICAgZGV2bGluayBoYW5kbGUgYXJlIHJlYWQtb25seS5cXG4rICAgIGF0dHJpYnV0ZXM6XFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBody1hZGRyXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBzdGF0ZVxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogY2Fwc1xcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogbWF4LWlvLWVxc1xcbitcXG4rICAtXFxuKyAgICBuYW1lOiBkbC1wb3J0LXNldFxcbisgICAgc3Vic2V0LW9mOiBkZXZsaW5rXFxuKyAgICBkb2M6IEF0dHJpYnV0ZXMgYWNjZXB0ZWQgYnkgdGhlIHBvcnQtc2V0IHJlcXVlc3QuXFxuKyAgICBhdHRyaWJ1dGVzOlxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogYnVzLW5hbWVcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IGRldi1uYW1lXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBpbmRleFxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogcG9ydC1pbmRleFxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogcG9ydC10eXBlXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBwb3J0LWZ1bmN0aW9uXFxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBvcnQtZnVuY3Rpb24tc2V0XFxuIFxcbiAgIC1cXG4gICAgIG5hbWU6IGRsLWRwaXBlLXRhYmxlc1xcbkBAIC0xMDA4LDYgKzEwNjUsOCBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgICAgICBuYW1lOiBkcGlwZS10YWJsZS1yZXNvdXJjZS1pZFxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogZHBpcGUtdGFibGUtcmVzb3VyY2UtdW5pdHNcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHBhZFxcbiBcXG4gICAtXFxuICAgICBuYW1lOiBkbC1kcGlwZS10YWJsZS1tYXRjaGVzXFxuQEAgLTEwNDIsNiArMTEwMSw4IEBAIGF0dHJpYnV0ZS1zZXRzOlxcbiAgICAgICAgIG5hbWU6IGRwaXBlLWVudHJ5LWFjdGlvbi12YWx1ZXNcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IGRwaXBlLWVudHJ5LWNvdW50ZXJcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHBhZFxcbiBcXG4gICAtXFxuICAgICBuYW1lOiBkbC1kcGlwZS1lbnRyeS1tYXRjaC12YWx1ZXNcXG5AQCAtMTE4MCw2ICsxMjQxLDggQEAgYXR0cmlidXRlLXNldHM6XFxuICAgICAgICAgbmFtZTogcmVzb3VyY2UtdW5pdFxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogcmVzb3VyY2Utb2NjXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBwYWRcXG4gXFxuICAgLVxcbiAgICAgbmFtZTogZGwtcmVzb3VyY2UtbGlzdFxcbkBAIC0xMjA3LDYgKzEyNzAsNyBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgIGF0dHJpYnV0ZXM6XFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiByZWdpb24tc25hcHNob3RcXG4rICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXFxuIFxcbiAgIC1cXG4gICAgIG5hbWU6IGRsLXJlZ2lvbi1zbmFwc2hvdFxcbkBAIC0xMjIxLDYgKzEyODUsNyBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgIGF0dHJpYnV0ZXM6XFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiByZWdpb24tY2h1bmtcXG4rICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXFxuIFxcbiAgIC1cXG4gICAgIG5hbWU6IGRsLXJlZ2lvbi1jaHVua1xcbkBAIC0xMjMwLDYgKzEyOTUsOCBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgICAgICBuYW1lOiByZWdpb24tY2h1bmstZGF0YVxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rLWFkZHJcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHBhZFxcbiBcXG4gICAtXFxuICAgICBuYW1lOiBkbC1mbXNnXFxuQEAgLTEyNzAsNiArMTMzNyw4IEBAIGF0dHJpYnV0ZS1zZXRzOlxcbiAgICAgICAgIG5hbWU6IGhlYWx0aC1yZXBvcnRlci1hdXRvLWR1bXBcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IGhlYWx0aC1yZXBvcnRlci1idXJzdC1wZXJpb2RcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHBhZFxcbiBcXG4gICAtXFxuICAgICBuYW1lOiBkbC1hdHRyLXN0YXRzXFxuQEAgLTEyODQsNiArMTM1MywxMCBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IHN0YXRzLXJ4LWRyb3BwZWRcXG4gICAgICAgICB0eXBlOiB1NjRcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHBhZFxcbisgICAgICAgIHR5cGU6IHBhZFxcbisgICAgICAgIHZhbHVlOiA2MVxcbiBcXG4gICAtXFxuICAgICBuYW1lOiBkbC10cmFwLW1ldGFkYXRhXFxuQEAgLTEzMDMsNiArMTM3Niw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxcbiAgICAgYXR0cmlidXRlczpcXG4gICAgICAgLVxcbiAgICAgICAgIG5hbWU6IGxpbmVjYXJkLXR5cGVcXG4rICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXFxuIFxcbiAgIC1cXG4gICAgIG5hbWU6IGRsLXNlbGZ0ZXN0LWlkXFxuQEAgLTEzMzAsNiArMTQwNCw1MCBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAtXFxuICAgICBuYW1lOiBkbC1wYXJlbnQtZGV2XFxuICAgICBzdWJzZXQtb2Y6IGRldmxpbmtcXG4rICAgIGRvYzogfFxcbisgICAgICBEZXZsaW5rIGhhbmRsZSBhY2NlcHRlZCBhcyB0aGUgcGFyZW50LWRldiBpbnB1dDsgdGhlIG5ldG5zIGlkIHRoZVxcbisgICAgICBrZXJuZWwgcmVwb3J0cyBiYWNrIGlzIG5vdCBhY2NlcHRlZCwgdGhlIHBhcmVudCBpcyBhbHdheXMgcmVzb2x2ZWRcXG4rICAgICAgaW4gdGhlIGNhbGxlcidzIG5ldG5zLlxcbisgICAgYXR0cmlidXRlczpcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IGJ1cy1uYW1lXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBkZXYtbmFtZVxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogaW5kZXhcXG4rXFxuKyAgLVxcbisgICAgbmFtZTogZGwtcmF0ZS1zZXRcXG4rICAgIHN1YnNldC1vZjogZGV2bGlua1xcbisgICAgZG9jOiBBdHRyaWJ1dGVzIGFjY2VwdGVkIGJ5IHRoZSByYXRlLXNldCBhbmQgcmF0ZS1uZXcgcmVxdWVzdHMuXFxuKyAgICBhdHRyaWJ1dGVzOlxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogYnVzLW5hbWVcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IGRldi1uYW1lXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiBpbmRleFxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogcmF0ZS1ub2RlLW5hbWVcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHJhdGUtdHgtc2hhcmVcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IHJhdGUtdHgtbWF4XFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiByYXRlLXR4LXByaW9yaXR5XFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiByYXRlLXR4LXdlaWdodFxcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogcmF0ZS1wYXJlbnQtbm9kZS1uYW1lXFxuKyAgICAgIC1cXG4rICAgICAgICBuYW1lOiByYXRlLXRjLWJ3c1xcbisgICAgICAtXFxuKyAgICAgICAgbmFtZTogcGFyZW50LWRldlxcbisgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1wYXJlbnQtZGV2XFxuK1xcbisgIC1cXG4rICAgIG5hbWU6IGRsLW5lc3RlZC1kZXZsaW5rXFxuKyAgICBzdWJzZXQtb2Y6IGRldmxpbmtcXG4gICAgIGF0dHJpYnV0ZXM6XFxuICAgICAgIC1cXG4gICAgICAgICBuYW1lOiBidXMtbmFtZVxcbkBAIC0xMzM3LDYgKzE0NTUsOCBAQCBhdHRyaWJ1dGUtc2V0czpcXG4gICAgICAgICBuYW1lOiBkZXYtbmFtZVxcbiAgICAgICAtXFxuICAgICAgICAgbmFtZTogaW5kZXhcXG4rICAgICAgLVxcbisgICAgICAgIG5hbWU6IG5ldG5zLWlkXFxuIFxcbiBvcGVyYXRpb25zOlxcbiAgIGVudW0tbW9kZWw6IGRpcmVjdGlvbmFsXFxuQEAgLTEzNjMsNiArMTQ4Myw3IEBAIG9wZXJhdGlvbnM6XFxuICAgICAgICAgICAgIC0gaW5kZXhcXG4gICAgICAgICAgICAgLSByZWxvYWQtZmFpbGVkXFxuICAgICAgICAgICAgIC0gZGV2LXN0YXRzXFxuKyAgICAgICAgICAgIC0gbmVzdGVkLWRldmxpbmtcXG4gICAgICAgZHVtcDpcXG4gICAgICAgICByZXBseTogKmdldC1yZXBseVxcbiBcXG5AQCAtMTM4OCwxMyArMTUwOSwxMiBAQCBvcGVyYXRpb25zOlxcbiAgICAgICAgIHJlcXVlc3Q6XFxuICAgICAgICAgICBhdHRyaWJ1dGVzOiAqZGV2LWlkLWF0dHJzXFxuICAgICAgICAgcmVwbHk6XFxuLSAgICAgICAgICB2YWx1ZTogMyAgIyBkdWUgdG8gYSBidWcsIHBvcnQgZHVtcCByZXR1cm5zIERFVkxJTktfQ01EX05FV1xcbiAgICAgICAgICAgYXR0cmlidXRlczogKnBvcnQtaWQtYXR0cnNcXG4gXFxuICAgICAtXFxuICAgICAgIG5hbWU6IHBvcnQtc2V0XFxuICAgICAgIGRvYzogU2V0IGRldmxpbmsgcG9ydCBpbnN0YW5jZXMuXFxuLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmtcXG4rICAgICAgYXR0cmlidXRlLXNldDogZGwtcG9ydC1zZXRcXG4gICAgICAgZG9udC12YWxpZGF0ZTogW3N0cmljdF1cXG4gICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXVxcbiAgICAgICBkbzpcXG5AQCAtMTk3NSw2ICsyMDk1LDcgQEAgb3BlcmF0aW9uczpcXG4gICAgICAgICAgICAgLSBpbmRleFxcbiAgICAgICAgICAgICAtIHBvcnQtaW5kZXhcXG4gICAgICAgICAgICAgLSByZWdpb24tbmFtZVxcbisgICAgICAgICAgICAtIHJlZ2lvbi1jaHVua3NcXG4gXFxuICAgICAtXFxuICAgICAgIG5hbWU6IHBvcnQtcGFyYW0tZ2V0XFxuQEAgLTIzMDUsNyArMjQyNiw3IEBAIG9wZXJhdGlvbnM6XFxuICAgICAtXFxuICAgICAgIG5hbWU6IHJhdGUtc2V0XFxuICAgICAgIGRvYzogU2V0IHJhdGUgaW5zdGFuY2VzLlxcbi0gICAgICBhdHRyaWJ1dGUtc2V0OiBkZXZsaW5rXFxuKyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXJhdGUtc2V0XFxuICAgICAgIGRvbnQtdmFsaWRhdGU6IFtzdHJpY3RdXFxuICAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV1cXG4gICAgICAgZG86XFxuQEAgLTIzMjgsNyArMjQ0OSw3IEBAIG9wZXJhdGlvbnM6XFxuICAgICAtXFxuICAgICAgIG5hbWU6IHJhdGUtbmV3XFxuICAgICAgIGRvYzogQ3JlYXRlIHJhdGUgaW5zdGFuY2VzLlxcbi0gICAgICBhdHRyaWJ1dGUtc2V0OiBkZXZsaW5rXFxuKyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXJhdGUtc2V0XFxuICAgICAgIGRvbnQtdmFsaWRhdGU6IFtzdHJpY3RdXFxuICAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV1cXG4gICAgICAgZG86XFxuQEAgLTIzNzQsMTQgKzI0OTUsMjIgQEAgb3BlcmF0aW9uczpcXG4gICAgICAgICBwb3N0OiBkZXZsaW5rLW5sLXBvc3QtZG9pdFxcbiAgICAgICAgIHJlcXVlc3Q6XFxuICAgICAgICAgICB2YWx1ZTogNzhcXG4tICAgICAgICAgIGF0dHJpYnV0ZXM6IFxcdTAwMjZsaW5lY2FyZC1pZC1hdHRyc1xcbisgICAgICAgICAgYXR0cmlidXRlczpcXG4gICAgICAgICAgICAgLSBidXMtbmFtZVxcbiAgICAgICAgICAgICAtIGRldi1uYW1lXFxuICAgICAgICAgICAgIC0gaW5kZXhcXG4gICAgICAgICAgICAgLSBsaW5lY2FyZC1pbmRleFxcbiAgICAgICAgIHJlcGx5OiBcXHUwMDI2bGluZWNhcmQtZ2V0LXJlcGx5XFxuICAgICAgICAgICB2YWx1ZTogODBcXG4tICAgICAgICAgIGF0dHJpYnV0ZXM6ICpsaW5lY2FyZC1pZC1hdHRyc1xcbisgICAgICAgICAgYXR0cmlidXRlczpcXG4rICAgICAgICAgICAgLSBidXMtbmFtZVxcbisgICAgICAgICAgICAtIGRldi1uYW1lXFxuKyAgICAgICAgICAgIC0gaW5kZXhcXG4rICAgICAgICAgICAgLSBsaW5lY2FyZC1pbmRleFxcbisgICAgICAgICAgICAtIGxpbmVjYXJkLXN0YXRlXFxuKyAgICAgICAgICAgIC0gbGluZWNhcmQtdHlwZVxcbisgICAgICAgICAgICAtIGxpbmVjYXJkLXN1cHBvcnRlZC10eXBlc1xcbisgICAgICAgICAgICAtIG5lc3RlZC1kZXZsaW5rXFxuICAgICAgIGR1bXA6XFxuICAgICAgICAgcmVxdWVzdDpcXG4gICAgICAgICAgIGF0dHJpYnV0ZXM6ICpkZXYtaWQtYXR0cnNcXG5kaWZmIC0tZ2l0IGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uYyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNcXG5pbmRleCBkZWMwMDEzMzE3OGQxLi40M2VmNjg2NGQ0NjJmIDEwMDY0NFxcbi0tLSBhL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNcXG4rKysgYi9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jXFxuQEAgLTUyLDExICs1MiwxMSBAQCBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BhcmVudF9kZXZfbmxfcG9saWN5W0RFVkxJTktfQVRUUl9JTkRFWCArIDFdXFxuIFxcdFtERVZMSU5LX0FUVFJfSU5ERVhdID0gTkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VSU5ULCBcXHUwMDI2ZGV2bGlua19hdHRyX2luZGV4X3JhbmdlKSxcXG4gfTtcXG4gXFxuLWNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQUyArIDFdID0ge1xcbitjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeVtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTICsgMV0gPSB7XFxuIFxcdFtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZLCB9LFxcbiBcXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfU1RBVEVdID0gTkxBX1BPTElDWV9NQVgoTkxBX1U4LCAxKSxcXG4tXFx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX09QU1RBVEVdID0gTkxBX1BPTElDWV9NQVgoTkxBX1U4LCAxKSxcXG4gXFx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDE1KSxcXG4rXFx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXFxuIH07XFxuIFxcbiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3JhdGVfdGNfYndzX25sX3BvbGljeVtERVZMSU5LX1JBVEVfVENfQVRUUl9CVyArIDFdID0ge1xcbkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX3BvcnRfc2V0X25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggKyAxXFxuIFxcdFtERVZMSU5LX0FUVFJfSU5ERVhdID0gTkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VSU5ULCBcXHUwMDI2ZGV2bGlua19hdHRyX2luZGV4X3JhbmdlKSxcXG4gXFx0W0RFVkxJTktfQVRUUl9QT1JUX0lOREVYXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LFxcbiBcXHRbREVWTElOS19BVFRSX1BPUlRfVFlQRV0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTE2LCAzKSxcXG4tXFx0W0RFVkxJTktfQVRUUl9QT1JUX0ZVTkNUSU9OXSA9IE5MQV9QT0xJQ1lfTkVTVEVEKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3kpLFxcbitcXHRbREVWTElOS19BVFRSX1BPUlRfRlVOQ1RJT05dID0gTkxBX1BPTElDWV9ORVNURUQoZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3kpLFxcbiB9O1xcbiBcXG4gLyogREVWTElOS19DTURfUE9SVF9ORVcgLSBkbyAqL1xcbkBAIC0zMzQsNyArMzM0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfcmVsb2FkX25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggKyAxXVxcbiBcXHRbREVWTElOS19BVFRSX0RFVl9OQU1FXSA9IHsgLnR5cGUgPSBOTEFfTlVMX1NUUklORywgfSxcXG4gXFx0W0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsIFxcdTAwMjZkZXZsaW5rX2F0dHJfaW5kZXhfcmFuZ2UpLFxcbiBcXHRbREVWTElOS19BVFRSX1JFTE9BRF9BQ1RJT05dID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIDEsIDIpLFxcbi1cXHRbREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDYpLFxcbitcXHRbREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDMpLFxcbiBcXHRbREVWTElOS19BVFRSX05FVE5TX1BJRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcXG4gXFx0W0RFVkxJTktfQVRUUl9ORVROU19GRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcXG4gXFx0W0RFVkxJTktfQVRUUl9ORVROU19JRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcXG5kaWZmIC0tZ2l0IGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaCBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmhcXG5pbmRleCBhNzBlMGU0NzY5YWE1Li45OWNjYWNjNjkzYjc2IDEwMDY0NFxcbi0tLSBhL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmhcXG4rKysgYi9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oXFxuQEAgLTE0LDcgKzE0LDcgQEBcXG4gXFxuIC8qIENvbW1vbiBuZXN0ZWQgdHlwZXMgKi9cXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcGFyZW50X2Rldl9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICsgMV07XFxuLWV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFMgKyAxXTtcXG4rZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVMgKyAxXTtcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcmF0ZV90Y19id3NfbmxfcG9saWN5W0RFVkxJTktfUkFURV9UQ19BVFRSX0JXICsgMV07XFxuIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3NlbGZ0ZXN0X2lkX25sX3BvbGljeVtERVZMSU5LX0FUVFJfU0VMRlRFU1RfSURfRkxBU0ggKyAxXTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9kZXZsaW5rL3BvcnQuYyBiL25ldC9kZXZsaW5rL3BvcnQuY1xcbmluZGV4IDE1MjhmMmQxNDhkZmMuLjgwMzQyOWQ5YTAwODkgMTAwNjQ0XFxuLS0tIGEvbmV0L2RldmxpbmsvcG9ydC5jXFxuKysrIGIvbmV0L2RldmxpbmsvcG9ydC5jXFxuQEAgLTYsMTkgKzYsNiBAQFxcbiBcXG4gI2luY2x1ZGUgXFxcImRldmxfaW50ZXJuYWwuaFxcXCJcXG4gXFxuLSNkZWZpbmUgREVWTElOS19QT1JUX0ZOX0NBUFNfVkFMSURfTUFTSyBcXFxcXFxuLVxcdChfQklUVUwoX19ERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTX01BWCkgLSAxKVxcbi1cXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZnVuY3Rpb25fbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCArIDFdID0ge1xcbi1cXHRbREVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfSFdfQUREUl0gPSB7IC50eXBlID0gTkxBX0JJTkFSWSB9LFxcbi1cXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfU1RBVEVdID1cXG4tXFx0XFx0TkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIERFVkxJTktfUE9SVF9GTl9TVEFURV9JTkFDVElWRSxcXG4tXFx0XFx0XFx0XFx0IERFVkxJTktfUE9SVF9GTl9TVEFURV9BQ1RJVkUpLFxcbi1cXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQU10gPVxcbi1cXHRcXHROTEFfUE9MSUNZX0JJVEZJRUxEMzIoREVWTElOS19QT1JUX0ZOX0NBUFNfVkFMSURfTUFTSyksXFxuLVxcdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuLX07XFxuLVxcbiAjZGVmaW5lIEFTU0VSVF9ERVZMSU5LX1BPUlRfUkVHSVNURVJFRChkZXZsaW5rX3BvcnQpXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRXQVJOX09OX09OQ0UoIShkZXZsaW5rX3BvcnQpLVxcdTAwM2VyZWdpc3RlcmVkKVxcbiAjZGVmaW5lIEFTU0VSVF9ERVZMSU5LX1BPUlRfTk9UX1JFR0lTVEVSRUQoZGV2bGlua19wb3J0KVxcdFxcdFxcdFxcXFxcXG5AQCAtNzgyLDExICs3NjksMTEgQEAgc3RhdGljIGludCBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsXFxuIFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG4gXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIHtcXG4tXFx0c3RydWN0IG5sYXR0ciAqdGJbREVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfTUFYICsgMV07XFxuK1xcdHN0cnVjdCBubGF0dHIgKnRiW0FSUkFZX1NJWkUoZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3kpXTtcXG4gXFx0aW50IGVycjtcXG4gXFxuLVxcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIERFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCwgYXR0cixcXG4tXFx0XFx0XFx0ICAgICAgIGRldmxpbmtfZnVuY3Rpb25fbmxfcG9saWN5LCBleHRhY2spO1xcbitcXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBBUlJBWV9TSVpFKHRiKSAtIDEsIGF0dHIsXFxuK1xcdFxcdFxcdCAgICAgICBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSwgZXh0YWNrKTtcXG4gXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4gXFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiRmFpbCB0byBwYXJzZSBwb3J0IGZ1bmN0aW9uIGF0dHJpYnV0ZXNcXFwiKTtcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6MTMuNzIxODg4ODk2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozOTUxMDExODAwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfREVWTElOS1wiLFxuICAgIFwiTkVUREVWU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldFwiLFxuICAgIFwiZGV2bGlua19ubF9wb3J0X3NldF9kb2l0XCIsXG4gICAgXCJkZXZsaW5rX25sX3JlbG9hZF9kb2l0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBkZXZsaW5rIG5ldGxpbmsgYXR0cmlidXRlIHBvbGljaWVzIGFuZCB0aGUgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCBwYXJzaW5nIGxvZ2ljIGZvciBnZW5lcmljIG5ldGxpbmsgY29tbWFuZHMgKHBvcnQtc2V0IGFuZCByZWxvYWQpLiBUaGUgY2hhbmdlcyBhcmUgaW4gY29yZSBuZXR3b3JraW5nIG5ldGxpbmsgY29kZSwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBnZW5lcmljIG5ldGxpbmsgZGV2bGluayBmYW1pbHkgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5NDFjNDc0MmY3MWRmYjM5ZDFlNWQ2MWJmMDZkMmIwNGZkYzYxNjhkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMjA6NDY6MTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sIGIvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbFxuaW5kZXggMzhiMTE5MGYzZDI2OS4uYWNiMjI4NTZhNmE4NSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWxcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWxcbkBAIC0xNzQsNiArMTc0LDE4IEBAIGRlZmluaXRpb25zOlxuICAgICAgICAgdmFsdWU6IDFcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBmdy1hY3RpdmF0ZVxuKyAgLVxuKyAgICB0eXBlOiBlbnVtXG4rICAgIG5hbWU6IHJlbG9hZC1saW1pdFxuKyAgICBlbnRyaWVzOlxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHVuc3BlY1xuKyAgICAgICAgZG9jOiBubyBjb25zdHJhaW50c1xuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IG5vLXJlc2V0XG4rICAgICAgICBkb2M6IFx1MDAzZS1cbisgICAgICAgICAgTm8gcmVzZXQgYWxsb3dlZCwgbm8gZG93biB0aW1lIGFsbG93ZWQsIG5vIGxpbmsgZmxhcCBhbmQgbm9cbisgICAgICAgICAgY29uZmlndXJhdGlvbiBpcyBsb3N0LlxuICAgLVxuICAgICB0eXBlOiBlbnVtXG4gICAgIG5hbWU6IHBhcmFtLWNtb2RlXG5AQCAtNzc1LDcgKzc4Nyw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHJlbG9hZC1saW1pdHNcbiAgICAgICAgIHR5cGU6IGJpdGZpZWxkMzJcbi0gICAgICAgIGVudW06IHJlbG9hZC1hY3Rpb25cbisgICAgICAgIGVudW06IHJlbG9hZC1saW1pdFxuICAgICAgICAgZW51bS1hcy1mbGFnczogdHJ1ZVxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGRldi1zdGF0c1xuQEAgLTc5Myw2ICs4MDUsNyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWxvYWQtc3RhdHMtbGltaXRcbiAgICAgICAgIHR5cGU6IHU4XG4rICAgICAgICBlbnVtOiByZWxvYWQtbGltaXRcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWxvYWQtc3RhdHMtdmFsdWVcbiAgICAgICAgIHR5cGU6IHUzMlxuQEAgLTg0NSwxMyArODU4LDE0IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogbGluZWNhcmQtc3VwcG9ydGVkLXR5cGVzXG4gICAgICAgICB0eXBlOiBuZXN0XG4gICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtbGluZWNhcmQtc3VwcG9ydGVkLXR5cGVzXG4tXG4tICAgICAgIyBUT0RPOiBmaWxsIGluIHRoZSBhdHRyaWJ1dGVzIGluIGJldHdlZW5cbi1cbisgICAgICAtXG4rICAgICAgICBuYW1lOiBuZXN0ZWQtZGV2bGlua1xuKyAgICAgICAgdHlwZTogbmVzdFxuKyAgICAgICAgbXVsdGktYXR0cjogdHJ1ZVxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLW5lc3RlZC1kZXZsaW5rXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogc2VsZnRlc3RzXG4gICAgICAgICB0eXBlOiBuZXN0XG4tICAgICAgICB2YWx1ZTogMTc2XG4gICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtc2VsZnRlc3QtaWRcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByYXRlLXR4LXByaW9yaXR5XG5AQCAtODk4LDcgKzkxMiw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHBhcmVudC1kZXZcbiAgICAgICAgIHR5cGU6IG5lc3Rcbi0gICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1wYXJlbnQtZGV2XG4rICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtbmVzdGVkLWRldmxpbmtcbiAgICAgICAgIGRvYzogfFxuICAgICAgICAgICBJZGVudGlmaWVzIHRoZSBkZXZsaW5rIGluc3RhbmNlIHdoaWNoIG93bnMgdGhlIHBhcmVudCByYXRlIG5vZGUuXG4gICAgICAgICAgIFVzZWQgd2l0aCByYXRlLXNldCBhbmQgcmF0ZS1uZXcgdG8gcGFyZW50IGEgcmF0ZSBvYmplY3QgdG8gYSBub2RlIG9uXG5AQCAtOTc4LDYgKzk5Miw0OSBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIHR5cGU6IGJpdGZpZWxkMzJcbiAgICAgICAgIGVudW06IHBvcnQtZm4tYXR0ci1jYXBcbiAgICAgICAgIGVudW0tYXMtZmxhZ3M6IHRydWVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBkZXZsaW5rXG4rICAgICAgICB0eXBlOiBuZXN0XG4rICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtbmVzdGVkLWRldmxpbmtcbisgICAgICAgIGRvYzogSGFuZGxlIG9mIHRoZSBwZWVyIGRldmxpbmsgaW5zdGFuY2UgaW5zdGFudGlhdGVkIGZvciB0aGlzIGZ1bmN0aW9uLlxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IG1heC1pby1lcXNcbisgICAgICAgIHR5cGU6IHUzMlxuK1xuKyAgLVxuKyAgICBuYW1lOiBkbC1wb3J0LWZ1bmN0aW9uLXNldFxuKyAgICBzdWJzZXQtb2Y6IGRsLXBvcnQtZnVuY3Rpb25cbisgICAgZG9jOiB8XG4rICAgICAgUG9ydCBmdW5jdGlvbiBhdHRyaWJ1dGVzIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQ7IG9wc3RhdGUgYW5kIHRoZVxuKyAgICAgIGRldmxpbmsgaGFuZGxlIGFyZSByZWFkLW9ubHkuXG4rICAgIGF0dHJpYnV0ZXM6XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogaHctYWRkclxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHN0YXRlXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogY2Fwc1xuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IG1heC1pby1lcXNcbitcbisgIC1cbisgICAgbmFtZTogZGwtcG9ydC1zZXRcbisgICAgc3Vic2V0LW9mOiBkZXZsaW5rXG4rICAgIGRvYzogQXR0cmlidXRlcyBhY2NlcHRlZCBieSB0aGUgcG9ydC1zZXQgcmVxdWVzdC5cbisgICAgYXR0cmlidXRlczpcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBidXMtbmFtZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGRldi1uYW1lXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogaW5kZXhcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBwb3J0LWluZGV4XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcG9ydC10eXBlXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcG9ydC1mdW5jdGlvblxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBvcnQtZnVuY3Rpb24tc2V0XG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLWRwaXBlLXRhYmxlc1xuQEAgLTEwMDgsNiArMTA2NSw4IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogZHBpcGUtdGFibGUtcmVzb3VyY2UtaWRcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBkcGlwZS10YWJsZS1yZXNvdXJjZS11bml0c1xuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1kcGlwZS10YWJsZS1tYXRjaGVzXG5AQCAtMTA0Miw2ICsxMTAxLDggQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICBuYW1lOiBkcGlwZS1lbnRyeS1hY3Rpb24tdmFsdWVzXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZHBpcGUtZW50cnktY291bnRlclxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1kcGlwZS1lbnRyeS1tYXRjaC12YWx1ZXNcbkBAIC0xMTgwLDYgKzEyNDEsOCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IHJlc291cmNlLXVuaXRcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZXNvdXJjZS1vY2NcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBwYWRcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtcmVzb3VyY2UtbGlzdFxuQEAgLTEyMDcsNiArMTI3MCw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICBhdHRyaWJ1dGVzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHJlZ2lvbi1zbmFwc2hvdFxuKyAgICAgICAgbXVsdGktYXR0cjogdHJ1ZVxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1yZWdpb24tc25hcHNob3RcbkBAIC0xMjIxLDYgKzEyODUsNyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgYXR0cmlidXRlczpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWdpb24tY2h1bmtcbisgICAgICAgIG11bHRpLWF0dHI6IHRydWVcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtcmVnaW9uLWNodW5rXG5AQCAtMTIzMCw2ICsxMjk1LDggQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICBuYW1lOiByZWdpb24tY2h1bmstZGF0YVxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHJlZ2lvbi1jaHVuay1hZGRyXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcGFkXG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLWZtc2dcbkBAIC0xMjcwLDYgKzEzMzcsOCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IGhlYWx0aC1yZXBvcnRlci1hdXRvLWR1bXBcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBoZWFsdGgtcmVwb3J0ZXItYnVyc3QtcGVyaW9kXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcGFkXG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLWF0dHItc3RhdHNcbkBAIC0xMjg0LDYgKzEzNTMsMTAgQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogc3RhdHMtcngtZHJvcHBlZFxuICAgICAgICAgdHlwZTogdTY0XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcGFkXG4rICAgICAgICB0eXBlOiBwYWRcbisgICAgICAgIHZhbHVlOiA2MVxuIFxuICAgLVxuICAgICBuYW1lOiBkbC10cmFwLW1ldGFkYXRhXG5AQCAtMTMwMyw2ICsxMzc2LDcgQEAgYXR0cmlidXRlLXNldHM6XG4gICAgIGF0dHJpYnV0ZXM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogbGluZWNhcmQtdHlwZVxuKyAgICAgICAgbXVsdGktYXR0cjogdHJ1ZVxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1zZWxmdGVzdC1pZFxuQEAgLTEzMzAsNiArMTQwNCw1MCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgIC1cbiAgICAgbmFtZTogZGwtcGFyZW50LWRldlxuICAgICBzdWJzZXQtb2Y6IGRldmxpbmtcbisgICAgZG9jOiB8XG4rICAgICAgRGV2bGluayBoYW5kbGUgYWNjZXB0ZWQgYXMgdGhlIHBhcmVudC1kZXYgaW5wdXQ7IHRoZSBuZXRucyBpZCB0aGVcbisgICAgICBrZXJuZWwgcmVwb3J0cyBiYWNrIGlzIG5vdCBhY2NlcHRlZCwgdGhlIHBhcmVudCBpcyBhbHdheXMgcmVzb2x2ZWRcbisgICAgICBpbiB0aGUgY2FsbGVyJ3MgbmV0bnMuXG4rICAgIGF0dHJpYnV0ZXM6XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogYnVzLW5hbWVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBkZXYtbmFtZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGluZGV4XG4rXG4rICAtXG4rICAgIG5hbWU6IGRsLXJhdGUtc2V0XG4rICAgIHN1YnNldC1vZjogZGV2bGlua1xuKyAgICBkb2M6IEF0dHJpYnV0ZXMgYWNjZXB0ZWQgYnkgdGhlIHJhdGUtc2V0IGFuZCByYXRlLW5ldyByZXF1ZXN0cy5cbisgICAgYXR0cmlidXRlczpcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBidXMtbmFtZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGRldi1uYW1lXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogaW5kZXhcbisgICAgICAtXG4rICAgICAgICBuYW1lOiByYXRlLW5vZGUtbmFtZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHJhdGUtdHgtc2hhcmVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiByYXRlLXR4LW1heFxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHJhdGUtdHgtcHJpb3JpdHlcbisgICAgICAtXG4rICAgICAgICBuYW1lOiByYXRlLXR4LXdlaWdodFxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHJhdGUtcGFyZW50LW5vZGUtbmFtZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHJhdGUtdGMtYndzXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcGFyZW50LWRldlxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXBhcmVudC1kZXZcbitcbisgIC1cbisgICAgbmFtZTogZGwtbmVzdGVkLWRldmxpbmtcbisgICAgc3Vic2V0LW9mOiBkZXZsaW5rXG4gICAgIGF0dHJpYnV0ZXM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogYnVzLW5hbWVcbkBAIC0xMzM3LDYgKzE0NTUsOCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IGRldi1uYW1lXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogaW5kZXhcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBuZXRucy1pZFxuIFxuIG9wZXJhdGlvbnM6XG4gICBlbnVtLW1vZGVsOiBkaXJlY3Rpb25hbFxuQEAgLTEzNjMsNiArMTQ4Myw3IEBAIG9wZXJhdGlvbnM6XG4gICAgICAgICAgICAgLSBpbmRleFxuICAgICAgICAgICAgIC0gcmVsb2FkLWZhaWxlZFxuICAgICAgICAgICAgIC0gZGV2LXN0YXRzXG4rICAgICAgICAgICAgLSBuZXN0ZWQtZGV2bGlua1xuICAgICAgIGR1bXA6XG4gICAgICAgICByZXBseTogKmdldC1yZXBseVxuIFxuQEAgLTEzODgsMTMgKzE1MDksMTIgQEAgb3BlcmF0aW9uczpcbiAgICAgICAgIHJlcXVlc3Q6XG4gICAgICAgICAgIGF0dHJpYnV0ZXM6ICpkZXYtaWQtYXR0cnNcbiAgICAgICAgIHJlcGx5OlxuLSAgICAgICAgICB2YWx1ZTogMyAgIyBkdWUgdG8gYSBidWcsIHBvcnQgZHVtcCByZXR1cm5zIERFVkxJTktfQ01EX05FV1xuICAgICAgICAgICBhdHRyaWJ1dGVzOiAqcG9ydC1pZC1hdHRyc1xuIFxuICAgICAtXG4gICAgICAgbmFtZTogcG9ydC1zZXRcbiAgICAgICBkb2M6IFNldCBkZXZsaW5rIHBvcnQgaW5zdGFuY2VzLlxuLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmtcbisgICAgICBhdHRyaWJ1dGUtc2V0OiBkbC1wb3J0LXNldFxuICAgICAgIGRvbnQtdmFsaWRhdGU6IFtzdHJpY3RdXG4gICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXVxuICAgICAgIGRvOlxuQEAgLTE5NzUsNiArMjA5NSw3IEBAIG9wZXJhdGlvbnM6XG4gICAgICAgICAgICAgLSBpbmRleFxuICAgICAgICAgICAgIC0gcG9ydC1pbmRleFxuICAgICAgICAgICAgIC0gcmVnaW9uLW5hbWVcbisgICAgICAgICAgICAtIHJlZ2lvbi1jaHVua3NcbiBcbiAgICAgLVxuICAgICAgIG5hbWU6IHBvcnQtcGFyYW0tZ2V0XG5AQCAtMjMwNSw3ICsyNDI2LDcgQEAgb3BlcmF0aW9uczpcbiAgICAgLVxuICAgICAgIG5hbWU6IHJhdGUtc2V0XG4gICAgICAgZG9jOiBTZXQgcmF0ZSBpbnN0YW5jZXMuXG4tICAgICAgYXR0cmlidXRlLXNldDogZGV2bGlua1xuKyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXJhdGUtc2V0XG4gICAgICAgZG9udC12YWxpZGF0ZTogW3N0cmljdF1cbiAgICAgICBmbGFnczogW2FkbWluLXBlcm1dXG4gICAgICAgZG86XG5AQCAtMjMyOCw3ICsyNDQ5LDcgQEAgb3BlcmF0aW9uczpcbiAgICAgLVxuICAgICAgIG5hbWU6IHJhdGUtbmV3XG4gICAgICAgZG9jOiBDcmVhdGUgcmF0ZSBpbnN0YW5jZXMuXG4tICAgICAgYXR0cmlidXRlLXNldDogZGV2bGlua1xuKyAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRsLXJhdGUtc2V0XG4gICAgICAgZG9udC12YWxpZGF0ZTogW3N0cmljdF1cbiAgICAgICBmbGFnczogW2FkbWluLXBlcm1dXG4gICAgICAgZG86XG5AQCAtMjM3NCwxNCArMjQ5NSwyMiBAQCBvcGVyYXRpb25zOlxuICAgICAgICAgcG9zdDogZGV2bGluay1ubC1wb3N0LWRvaXRcbiAgICAgICAgIHJlcXVlc3Q6XG4gICAgICAgICAgIHZhbHVlOiA3OFxuLSAgICAgICAgICBhdHRyaWJ1dGVzOiBcdTAwMjZsaW5lY2FyZC1pZC1hdHRyc1xuKyAgICAgICAgICBhdHRyaWJ1dGVzOlxuICAgICAgICAgICAgIC0gYnVzLW5hbWVcbiAgICAgICAgICAgICAtIGRldi1uYW1lXG4gICAgICAgICAgICAgLSBpbmRleFxuICAgICAgICAgICAgIC0gbGluZWNhcmQtaW5kZXhcbiAgICAgICAgIHJlcGx5OiBcdTAwMjZsaW5lY2FyZC1nZXQtcmVwbHlcbiAgICAgICAgICAgdmFsdWU6IDgwXG4tICAgICAgICAgIGF0dHJpYnV0ZXM6ICpsaW5lY2FyZC1pZC1hdHRyc1xuKyAgICAgICAgICBhdHRyaWJ1dGVzOlxuKyAgICAgICAgICAgIC0gYnVzLW5hbWVcbisgICAgICAgICAgICAtIGRldi1uYW1lXG4rICAgICAgICAgICAgLSBpbmRleFxuKyAgICAgICAgICAgIC0gbGluZWNhcmQtaW5kZXhcbisgICAgICAgICAgICAtIGxpbmVjYXJkLXN0YXRlXG4rICAgICAgICAgICAgLSBsaW5lY2FyZC10eXBlXG4rICAgICAgICAgICAgLSBsaW5lY2FyZC1zdXBwb3J0ZWQtdHlwZXNcbisgICAgICAgICAgICAtIG5lc3RlZC1kZXZsaW5rXG4gICAgICAgZHVtcDpcbiAgICAgICAgIHJlcXVlc3Q6XG4gICAgICAgICAgIGF0dHJpYnV0ZXM6ICpkZXYtaWQtYXR0cnNcbmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jIGIvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uY1xuaW5kZXggZGVjMDAxMzMxNzhkMS4uNDNlZjY4NjRkNDYyZiAxMDA2NDRcbi0tLSBhL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNcbisrKyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNcbkBAIC01MiwxMSArNTIsMTEgQEAgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9wYXJlbnRfZGV2X25sX3BvbGljeVtERVZMSU5LX0FUVFJfSU5ERVggKyAxXVxuIFx0W0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsIFx1MDAyNmRldmxpbmtfYXR0cl9pbmRleF9yYW5nZSksXG4gfTtcbiBcbi1jb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFMgKyAxXSA9IHtcbitjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeVtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTICsgMV0gPSB7XG4gXHRbREVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfSFdfQUREUl0gPSB7IC50eXBlID0gTkxBX0JJTkFSWSwgfSxcbiBcdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURV0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTgsIDEpLFxuLVx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX09QU1RBVEVdID0gTkxBX1BPTElDWV9NQVgoTkxBX1U4LCAxKSxcbiBcdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMigxNSksXG4rXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU10gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcbiB9O1xuIFxuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcmF0ZV90Y19id3NfbmxfcG9saWN5W0RFVkxJTktfUkFURV9UQ19BVFRSX0JXICsgMV0gPSB7XG5AQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19wb3J0X3NldF9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICsgMVxuIFx0W0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsIFx1MDAyNmRldmxpbmtfYXR0cl9pbmRleF9yYW5nZSksXG4gXHRbREVWTElOS19BVFRSX1BPUlRfSU5ERVhdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXG4gXHRbREVWTElOS19BVFRSX1BPUlRfVFlQRV0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTE2LCAzKSxcbi1cdFtERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl0gPSBOTEFfUE9MSUNZX05FU1RFRChkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5KSxcbitcdFtERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl0gPSBOTEFfUE9MSUNZX05FU1RFRChkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSksXG4gfTtcbiBcbiAvKiBERVZMSU5LX0NNRF9QT1JUX05FVyAtIGRvICovXG5AQCAtMzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX3JlbG9hZF9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICsgMV1cbiBcdFtERVZMSU5LX0FUVFJfREVWX05BTUVdID0geyAudHlwZSA9IE5MQV9OVUxfU1RSSU5HLCB9LFxuIFx0W0RFVkxJTktfQVRUUl9JTkRFWF0gPSBOTEFfUE9MSUNZX0ZVTExfUkFOR0UoTkxBX1VJTlQsIFx1MDAyNmRldmxpbmtfYXR0cl9pbmRleF9yYW5nZSksXG4gXHRbREVWTElOS19BVFRSX1JFTE9BRF9BQ1RJT05dID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIDEsIDIpLFxuLVx0W0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMig2KSxcbitcdFtERVZMSU5LX0FUVFJfUkVMT0FEX0xJTUlUU10gPSBOTEFfUE9MSUNZX0JJVEZJRUxEMzIoMyksXG4gXHRbREVWTElOS19BVFRSX05FVE5TX1BJRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcbiBcdFtERVZMSU5LX0FUVFJfTkVUTlNfRkRdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXG4gXHRbREVWTElOS19BVFRSX05FVE5TX0lEXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LFxuZGlmZiAtLWdpdCBhL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmggYi9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oXG5pbmRleCBhNzBlMGU0NzY5YWE1Li45OWNjYWNjNjkzYjc2IDEwMDY0NFxuLS0tIGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaFxuKysrIGIvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaFxuQEAgLTE0LDcgKzE0LDcgQEBcbiBcbiAvKiBDb21tb24gbmVzdGVkIHR5cGVzICovXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcGFyZW50X2Rldl9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICsgMV07XG4tZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQUyArIDFdO1xuK2V4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeVtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTICsgMV07XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcmF0ZV90Y19id3NfbmxfcG9saWN5W0RFVkxJTktfUkFURV9UQ19BVFRSX0JXICsgMV07XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfc2VsZnRlc3RfaWRfbmxfcG9saWN5W0RFVkxJTktfQVRUUl9TRUxGVEVTVF9JRF9GTEFTSCArIDFdO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9kZXZsaW5rL3BvcnQuYyBiL25ldC9kZXZsaW5rL3BvcnQuY1xuaW5kZXggMTUyOGYyZDE0OGRmYy4uODAzNDI5ZDlhMDA4OSAxMDA2NDRcbi0tLSBhL25ldC9kZXZsaW5rL3BvcnQuY1xuKysrIGIvbmV0L2RldmxpbmsvcG9ydC5jXG5AQCAtNiwxOSArNiw2IEBAXG4gXG4gI2luY2x1ZGUgXCJkZXZsX2ludGVybmFsLmhcIlxuIFxuLSNkZWZpbmUgREVWTElOS19QT1JUX0ZOX0NBUFNfVkFMSURfTUFTSyBcXFxuLVx0KF9CSVRVTChfX0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNfTUFYKSAtIDEpXG4tXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZnVuY3Rpb25fbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCArIDFdID0ge1xuLVx0W0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJdID0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSxcbi1cdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURV0gPVxuLVx0XHROTEFfUE9MSUNZX1JBTkdFKE5MQV9VOCwgREVWTElOS19QT1JUX0ZOX1NUQVRFX0lOQUNUSVZFLFxuLVx0XHRcdFx0IERFVkxJTktfUE9SVF9GTl9TVEFURV9BQ1RJVkUpLFxuLVx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNdID1cbi1cdFx0TkxBX1BPTElDWV9CSVRGSUVMRDMyKERFVkxJTktfUE9SVF9GTl9DQVBTX1ZBTElEX01BU0spLFxuLVx0W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbi19O1xuLVxuICNkZWZpbmUgQVNTRVJUX0RFVkxJTktfUE9SVF9SRUdJU1RFUkVEKGRldmxpbmtfcG9ydClcdFx0XHRcdFxcXG4gXHRXQVJOX09OX09OQ0UoIShkZXZsaW5rX3BvcnQpLVx1MDAzZXJlZ2lzdGVyZWQpXG4gI2RlZmluZSBBU1NFUlRfREVWTElOS19QT1JUX05PVF9SRUdJU1RFUkVEKGRldmxpbmtfcG9ydClcdFx0XHRcXFxuQEAgLTc4MiwxMSArNzY5LDExIEBAIHN0YXRpYyBpbnQgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpwb3J0LFxuIFx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuLVx0c3RydWN0IG5sYXR0ciAqdGJbREVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfTUFYICsgMV07XG4rXHRzdHJ1Y3QgbmxhdHRyICp0YltBUlJBWV9TSVpFKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5KV07XG4gXHRpbnQgZXJyO1xuIFxuLVx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgREVWTElOS19QT1JUX0ZVTkNUSU9OX0FUVFJfTUFYLCBhdHRyLFxuLVx0XHRcdCAgICAgICBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeSwgZXh0YWNrKTtcbitcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIEFSUkFZX1NJWkUodGIpIC0gMSwgYXR0cixcbitcdFx0XHQgICAgICAgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3ksIGV4dGFjayk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJGYWlsIHRvIHBhcnNlIHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlc1wiKTtcbiBcdFx0cmV0dXJuIGVycjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjQ2OjEzLjcyMTg5MTMzNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4Mjc1NjA4OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZXZsaW5rIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLiBJIHNlZSB3ZSdyZSB0b3VjaGluZyBgRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbGAsIGBuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jYCwgYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmhgLCBhbmQgYG5ldC9kZXZsaW5rL3BvcnQuY2AuIFRoYXQgaW5kaWNhdGVzIHNvbWUgbW9kaWZpY2F0aW9uIHRvIHRoZSBkZXZsaW5rIHN1YnN5c3RlbSwgbGlrZWx5IGludm9sdmluZyBOZXRsaW5rIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIHBvcnQgY29uZmlndXJhdGlvbi5cblxuRmlyc3QsIEknbGwgemVybyBpbiBvbiBgbmV0L2RldmxpbmsvcG9ydC5jYCBhbmQgYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNgLCBhbG9uZyB3aXRoIHJlbGF0ZWQgZmlsZXMgZm9yIGNvbnRleHQuIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSBleGlzdGluZyBOZXRsaW5rIG1lc3NhZ2UgZ2VuZXJhdGlvbiBpcyBhZmZlY3RlZCBhbmQgaWYgdGhlIHBvcnQgbWFuYWdlbWVudCBsb2dpYyBpcyBiZWluZyBhbHRlcmVkLiBHaXZlbiB0aGUgYC55YW1sYCBjaGFuZ2UsIEknbSBhbnRpY2lwYXRpbmcgc29tZSBzY2hlbWEgdXBkYXRlcyB0b28uXG5cblRvIHF1aWNrbHkgZ2V0IHVwIHRvIHNwZWVkIHdpdGggYW55IHVuZmFtaWxpYXIgcGFydHMgb2YgdGhlIGNoYW5nZSwgSSdsbCBwcm9iYWJseSBmaXJlIHVwIHNvbWUgc2VhcmNoIHRvb2xzIG9yIHJlYWQgc3Vycm91bmRpbmcgY29kZSB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRldmxpbmsgc3Vic3lzdGVtIGFuZCBpdHMgY3VycmVudCByb2xlIGluIHRoZSBrZXJuZWwuIFRoaXMgaXMgZXNzZW50aWFsIGZvciBhIHRob3JvdWdoIHJldmlldzsgSSBuZWVkIHRvIGtub3cgaG93IHRoZXNlIGNoYW5nZXMgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjI4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6MTYuNTQ5NDU0ODI3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTEyNDMzMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZGV2bGluay9wb3J0LmM9NjkzPXN0YXRpYyBpbnQgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3ZhbGlkYXRlKHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCxcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYy03NjctXFxubmV0L2RldmxpbmsvcG9ydC5jOjc2ODpzdGF0aWMgaW50IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqcG9ydCxcXG5uZXQvZGV2bGluay9wb3J0LmMtNzY5LVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYz04MjA9aW50IGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jLTgzNy1cXG5uZXQvZGV2bGluay9wb3J0LmM6ODM4OlxcdFxcdGVyciA9IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoZGV2bGlua19wb3J0LCBhdHRyLCBleHRhY2spO1xcbm5ldC9kZXZsaW5rL3BvcnQuYy04MzktXFx0XFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6MTguMzYwNzAzNzkzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzA4MTQ3NjUwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQncyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGlzIGNvZGUsIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gdGhlIERldmxpbmsgUG9ydCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzIGBkZXZsaW5rYCBwb3J0IGNvbmZpZ3VyYXRpb24gc3R1ZmYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBwb3J0IGZ1bmN0aW9ucyBhcmUgYmVpbmcgc2V0LiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IGBuZXQvZGV2bGluay9wb3J0LmNgLCBmb2N1c2luZyBzcGVjaWZpY2FsbHkgb24gdGhlIGBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0YCBhbmQgYGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdGAgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBtYXAgb3V0IHRoZSBjYWxsIGZsb3cgYW5kIGlkZW50aWZ5IHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLiBJJ20gYXNzdW1pbmcsIGJhc2VkIG9uIHRoZSBuYW1pbmcsIHRoYXQgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIGZvciBjaGFuZ2luZyB0aGUgcG9ydCdzIHJvbGUsIHdoZXJlYXMgYGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdGAgaXMgbW9zdCBsaWtlbHkgdGhlIE5ldGxpbmsgaGFuZGxlciB0aGF0IHJlY2VpdmVzIGFuZCBwcm9jZXNzZXMgdGhlIHVzZXItc3BhY2UgcmVxdWVzdHMuXG5cbkknbGwgYmUgbG9va2luZyBmb3IgaG93IHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgZGF0YSBtYWtlcyBpdHMgd2F5IGZyb20gdGhlIE5ldGxpbmsgbWVzc2FnZSB0byB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGBkZXZsaW5rYCBwb3J0LCB0aGUgdmFsaWRhdGlvbiB0aGF0IG9jY3VycywgYW5kIGhvdyB0aGUgaGFyZHdhcmUgaXMgdWx0aW1hdGVseSBwcm9ncmFtbWVkIChpZiBhcHBsaWNhYmxlKS4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5IGhhbmRsZSBlcnJvciBjb25kaXRpb25zLCBhbmQgaWYgdGhleSBsb2NrIGFueXRoaW5nIChsaWtlIHRoZSBwb3J0KSB3aGVuIHBlcmZvcm1pbmcgdGhpcyBzZXR0aW5nLCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMuXG5cbkknbGwgYWxzbyBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBpbnRlcmVzdGluZyBvciBub24tb2J2aW91cyBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgYGRldmxpbmtgIHN1YnN5c3RlbS4gQXJlIHRoZXJlIGFueSBjYWxsYmFja3Mgb3IgZXZlbnQgbm90aWZpY2F0aW9ucyBpbnZvbHZlZD8gSXMgdGhlcmUgYW4gQVBJIGZvciB2ZW5kb3JzIHRvIGV4dGVuZCB0aGlzLCBvciBpcyBpdCBwcmV0dHkgdGlnaHRseSBjb3VwbGVkPyBJJ20gYW50aWNpcGF0aW5nIHRoZXJlIHdpbGwgYmUgc29tZSBjaGVja3MgZm9yIHRoZSBzcGVjaWZpYyBjYXBhYmlsaXRpZXMgb2YgdGhlIHVuZGVybHlpbmcgZGV2aWNlIOKAkyB0aGVyZSdzIHByb2JhYmx5IGEgZGV2aWNlLXNwZWNpZmljIGRhdGEgbW9kZWwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYXMgd2VsbCwgYW5kIEknZCBsaWtlIHRvIGlkZW50aWZ5IHdoYXQgdGhhdCBsb29rcyBsaWtlLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSB0cmlja3kgY2FzZXMsIHN1Y2ggYXMgcG9ydCByb2xlcyBjaGFuZ2luZyBmcm9tIGEgcGh5c2ljYWwgaW50ZXJmYWNlIHRvIGEgdmlydHVhbCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4ODksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0NjoyMS40NDIxODI2MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvZGV2bGluay9wb3J0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzYwLFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzYwOlxcdFxcdCAgICAhb3BzLVxcdTAwM2Vwb3J0X2ZuX21heF9pb19lcXNfc2V0KSB7XFxuIDc2MTpcXHRcXHRcXHROTF9TRVRfRVJSX01TR19BVFRSKGV4dGFjaywgdGJbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU10sXFxuIDc2MjpcXHRcXHRcXHRcXHRcXHQgICAgXFxcIkZ1bmN0aW9uIGRvZXMgbm90IHN1cHBvcnQgbWF4X2lvX2VxcyBzZXR0aW5nXFxcIik7XFxuIDc2MzpcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIDc2NDpcXHRcXHR9XFxuIDc2NTpcXHRcXHRyZXR1cm4gMDtcXG4gNzY2OlxcdH1cXG4gNzY3OlxcdFxcbiA3Njg6XFx0c3RhdGljIGludCBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KHN0cnVjdCBkZXZsaW5rX3BvcnQgKnBvcnQsXFxuIDc2OTpcXHRcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXFxuIDc3MDpcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4gNzcxOlxcdHtcXG4gNzcyOlxcdFxcdHN0cnVjdCBubGF0dHIgKnRiW0FSUkFZX1NJWkUoZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3kpXTtcXG4gNzczOlxcdFxcdGludCBlcnI7XFxuIDc3NDpcXHRcXG4gNzc1OlxcdFxcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIEFSUkFZX1NJWkUodGIpIC0gMSwgYXR0cixcXG4gNzc2OlxcdFxcdFxcdFxcdCAgICAgICBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSwgZXh0YWNrKTtcXG4gNzc3OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuIDc3ODpcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJGYWlsIHRvIHBhcnNlIHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlc1xcXCIpO1xcbiA3Nzk6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNzgwOlxcdFxcdH1cXG4gNzgxOlxcdFxcbiA3ODI6XFx0XFx0ZXJyID0gZGV2bGlua19wb3J0X2Z1bmN0aW9uX3ZhbGlkYXRlKHBvcnQsIHRiLCBleHRhY2spO1xcbiA3ODM6XFx0XFx0aWYgKGVycilcXG4gNzg0OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDc4NTpcXHRcXG4gNzg2OlxcdFxcdGF0dHIgPSB0YltERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSXTtcXG4gNzg3OlxcdFxcdGlmIChhdHRyKSB7XFxuIDc4ODpcXHRcXHRcXHRlcnIgPSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25faHdfYWRkcl9zZXQocG9ydCwgYXR0ciwgZXh0YWNrKTtcXG4gNzg5OlxcdFxcdFxcdGlmIChlcnIpXFxuIDc5MDpcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA3OTE6XFx0XFx0fVxcbiA3OTI6XFx0XFxuIDc5MzpcXHRcXHRhdHRyID0gdGJbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQU107XFxuIDc5NDpcXHRcXHRpZiAoYXR0cikge1xcbiA3OTU6XFx0XFx0XFx0ZXJyID0gZGV2bGlua19wb3J0X2ZuX2NhcHNfc2V0KHBvcnQsIGF0dHIsIGV4dGFjayk7XFxuIDc5NjpcXHRcXHRcXHRpZiAoZXJyKVxcbiA3OTc6XFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNzk4OlxcdFxcdH1cXG4gNzk5OlxcdFxcbiA4MDA6XFx0XFx0YXR0ciA9IHRiW0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdO1xcbiA4MDE6XFx0XFx0aWYgKGF0dHIpIHtcXG4gODAyOlxcdFxcdFxcdGVyciA9IGRldmxpbmtfcG9ydF9mbl9tYXhfaW9fZXFzX3NldChwb3J0LCBhdHRyLCBleHRhY2spO1xcbiA4MDM6XFx0XFx0XFx0aWYgKGVycilcXG4gODA0OlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDgwNTpcXHRcXHR9XFxuIDgwNjpcXHRcXG4gODA3OlxcdFxcdC8qIEtlZXAgdGhpcyBhcyB0aGUgbGFzdCBmdW5jdGlvbiBhdHRyaWJ1dGUgc2V0LCBzbyB0aGF0IHdoZW5cXG4gODA4OlxcdFxcdCAqIG11bHRpcGxlIHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlcyBhcmUgc2V0IGFsb25nIHdpdGggc3RhdGUsXFxuIDgwOTpcXHRcXHQgKiBUaG9zZSBjYW4gYmUgYXBwbGllZCBmaXJzdCBiZWZvcmUgYWN0aXZhdGluZyB0aGUgc3RhdGUuXFxuIDgxMDpcXHRcXHQgKi9cXG4gODExOlxcdFxcdGF0dHIgPSB0YltERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURV07XFxuIDgxMjpcXHRcXHRpZiAoYXR0cilcXG4gODEzOlxcdFxcdFxcdGVyciA9IGRldmxpbmtfcG9ydF9mbl9zdGF0ZV9zZXQocG9ydCwgYXR0ciwgZXh0YWNrKTtcXG4gODE0OlxcdFxcbiA4MTU6XFx0XFx0aWYgKCFlcnIpXFxuIDgxNjpcXHRcXHRcXHRkZXZsaW5rX3BvcnRfbm90aWZ5KHBvcnQsIERFVkxJTktfQ01EX1BPUlRfTkVXKTtcXG4gODE3OlxcdFxcdHJldHVybiBlcnI7XFxuIDgxODpcXHR9XFxuIDgxOTpcXHRcXG4gODIwOlxcdGludCBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gODIxOlxcdHtcXG4gODIyOlxcdFxcdHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCA9IGRldmxpbmtfbmxfY3R4KGluZm8pLVxcdTAwM2VkZXZsaW5rX3BvcnQ7XFxuIDgyMzpcXHRcXHRpbnQgZXJyO1xcbiA4MjQ6XFx0XFxuIDgyNTpcXHRcXHRpZiAoaW5mby1cXHUwMDNlYXR0cnNbREVWTElOS19BVFRSX1BPUlRfVFlQRV0pIHtcXG4gODI2OlxcdFxcdFxcdGVudW0gZGV2bGlua19wb3J0X3R5cGUgcG9ydF90eXBlO1xcbiA4Mjc6XFx0XFxuIDgyODpcXHRcXHRcXHRwb3J0X3R5cGUgPSBubGFfZ2V0X3UxNihpbmZvLVxcdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfUE9SVF9UWVBFXSk7XFxuIDgyOTpcXHRcXHRcXHRlcnIgPSBkZXZsaW5rX3BvcnRfdHlwZV9zZXQoZGV2bGlua19wb3J0LCBwb3J0X3R5cGUpO1xcbiA4MzA6XFx0XFx0XFx0aWYgKGVycilcXG4gODMxOlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDgzMjpcXHRcXHR9XFxuIDgzMzpcXHRcXG4gODM0OlxcdFxcdGlmIChpbmZvLVxcdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl0pIHtcXG4gODM1OlxcdFxcdFxcdHN0cnVjdCBubGF0dHIgKmF0dHIgPSBpbmZvLVxcdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfUE9SVF9GVU5DVElPTl07XFxuIDgzNjpcXHRcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2sgPSBpbmZvLVxcdTAwM2VleHRhY2s7XFxuIDgzNzpcXHRcXG4gODM4OlxcdFxcdFxcdGVyciA9IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoZGV2bGlua19wb3J0LCBhdHRyLCBleHRhY2spO1xcbiA4Mzk6XFx0XFx0XFx0aWYgKGVycilcXG4gODQwOlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDg0MTpcXHRcXHR9XFxuIDg0MjpcXHRcXG4gODQzOlxcdFxcdHJldHVybiAwO1xcbiA4NDQ6XFx0fVxcbiA4NDU6XFx0XFxuIDg0NjpcXHRpbnQgZGV2bGlua19ubF9wb3J0X3NwbGl0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gODQ3OlxcdHtcXG4gODQ4OlxcdFxcdHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydCA9IGRldmxpbmtfbmxfY3R4KGluZm8pLVxcdTAwM2VkZXZsaW5rX3BvcnQ7XFxuIDg0OTpcXHRcXHRzdHJ1Y3QgZGV2bGluayAqZGV2bGluayA9IGRldmxpbmtfbmxfY3R4KGluZm8pLVxcdTAwM2VkZXZsaW5rO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0NjoyMS40NDIyOTk5NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5NzYxNjA0MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGV2bGluayBOZXRsaW5rIFN1YnN5c3RlbSBBbmFseXNpcyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBkZXZsaW5rYCDigJMgdGhhdCdzIGEgY29yZSBuZXR3b3JraW5nIE5ldGxpbmsgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0J3MgYSBnZW5lcmljIE5ldGxpbmsgZmFtaWx5IChgTkVUTElOS19HRU5FUklDYCkgdW5kZXIgYGRldmxpbmtgLiBUaGUgcXVlc3Rpb24gbm93IGlzOiBpcyBgZGV2bGlua2AgYWNjZXNzaWJsZSBpbiB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBUaGUgYW5zd2VyIGFwcGVhcnMgdG8gYmUgeWVzLiBJdCdzIGEgc3RhbmRhcmQgZ2VuZXJpYyBOZXRsaW5rIGludGVyZmFjZSB1c2VkIGJ5IG5ldCBkZXZpY2VzIOKAkyB0aGluayBgbmV0ZGV2c2ltYCwgYHZpcnRpb19uZXRgLCBvciBldmVuIHRoZSBzaW1wbGUgYGR1bW15YCBpbnRlcmZhY2UuIFN5emthbGxlcidzIGhlYXZ5IGZ1enppbmcgb2YgYGRldmxpbmtgIGRlZmluaXRlbHkgY29uZmlybXMgdGhpcywgbG9va2luZyBhdCBjb21tYW5kcyBsaWtlIGBkZXZsaW5rX25sX2NtZF9wb3J0X3NldGAsIGBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRgLCBhbmQgb3BlcmF0aW9ucyBsaWtlIHJlbG9hZCBhbmQgcmF0ZS5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgcGF0Y2guIE15IGZvY3VzIGhhcyBzaGlmdGVkIHRvIGBuZXRsaW5rX2dlbi5jYCBhbmQgYHBvcnQuY2AuXG5cblRoZSBwYXRjaCBpdHNlbGYgc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHVwZGF0ZXMgdG8gdGhlIGBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sYCBmaWxlLiBJdCBsb29rcyBsaWtlIHdlJ3JlIHJlZmluaW5nIHRoZSBkZWZpbml0aW9ucyBoZXJlLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGUgYHJlbG9hZC1saW1pdGAgZW51bSwgbmV3IHN1YnNldHMgZm9yIHBvcnQtZnVuY3Rpb24gYW5kIHJhdGUtc2V0LCBhbmQgcmVmaW5lbWVudHMgbGlrZSBuZXN0ZWQtZGV2bGluayBhbmQgbXVsdGktYXR0cmlidXRlIGZsYWdzLiBJdCBhbHNvIGxvb2tzIGxpa2UgdGhleSdyZSBkZWFsaW5nIHdpdGggcGFkZGluZyBhdHRyaWJ1dGVzLlxuXG5CYXNlZCBvbiB0aGlzIHNwZWMgeWFtbCwgYG5ldGxpbmtfZ2VuLmNgIGFuZCBgbmV0bGlua19nZW4uaGAgaGF2ZSBiZWVuIHVwZGF0ZWQvcmVnZW5lcmF0ZWQuXG5UaGUgY2hhbmdlcyB3aXRoaW4gdGhlc2UgZmlsZXMgbG9vayBzaWduaWZpY2FudDpcbiogICBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX25sX3BvbGljeWAgaXMgcmVwbGFjZWQgYnkgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5YC4gVGhlIG5ldyBwb2xpY3kgaW5jbHVkZXMgYERFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNgLCBhbmQgaXQgcmVtb3ZlcyBgT1BTVEFURWAsIGFzIGl0IGlzIHJlYWQtb25seS5cbiogICBUaGUgYGRldmxpbmtfcG9ydF9zZXRfbmxfcG9saWN5YCBub3cgdXNlcyB0aGUgbmVzdGVkIHBvbGljeSBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGZvciB0aGUgYERFVkxJTktfQVRUUl9QT1JUX0ZVTkNUSU9OYCBhdHRyaWJ1dGUuXG4qICAgYGRldmxpbmtfcmVsb2FkX25sX3BvbGljeWAgbm93IHNwZWNpZmllcyBgW0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSA9IE5MQV9QT0xJQ1lfQklURklFTEQzMigzKTtgIHdoZXJlIHRoZSBsaW1pdCB3YXMgcHJldmlvdXNseSA2LlxuXG5GaW5hbGx5LCBpbiBgbmV0L2RldmxpbmsvcG9ydC5jYCwgaXQgbG9va3MgbGlrZSB0aGVyZSdzIHNvbWUgY2xlYW51cDpcbiogICBgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3lgIGFuZCBpdHMgcHJpdmF0ZSBtYXNrIG1hY3JvIGFyZSBnb25lLlxuKiAgIGBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0YCBpcyBub3cgZGlyZWN0bHkgdXNpbmcgdGhlIGdlbmVyYXRlZCBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGFuZCBwYXJzaW5nIGl0IHdpdGggYEFSUkFZX1NJWkUoZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3kpYC5cblxuSSBzaG91bGQgcHJvYmFibHkgYWxzbyBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZm9yIGBkZXZsaW5rYCB0byBtYWtlIHN1cmUgbm90aGluZyBoYXMgY2hhbmdlZCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTgwOCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjQ2OjI4LjQxODQ2MzMwM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDgxODQyNjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9ERVZMSU5LXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvY3J5cHRvL21hcnZlbGwvS2NvbmZpZz00MD1jb25maWcgQ1JZUFRPX0RFVl9PQ1RFT05UWDJfQ1BUXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9tYXJ2ZWxsL0tjb25maWctNTEtXFx0c2VsZWN0IENSWVBUT19BVVRIRU5DXFxuZHJpdmVycy9jcnlwdG8vbWFydmVsbC9LY29uZmlnOjUyOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvY3J5cHRvL21hcnZlbGwvS2NvbmZpZy01My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnPTM9Y29uZmlnIFpMMzA3M1hcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWctNi1cXHRzZWxlY3QgRFBMTFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L0tjb25maWc6NzpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9LY29uZmlnLTgtXFx0c2VsZWN0IFJFR01BUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz02MDQ9Y29uZmlnIE5FVERFVlNJTVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDktXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19NT0NLIHx8IFBUUF8xNTg4X0NMT0NLX01PQ0s9blxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjEwOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L0tjb25maWctNjExLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnPTE2OD1jb25maWcgQ0FOX0tWQVNFUl9QQ0lFRkRcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTE3MC1cXHR0cmlzdGF0ZSBcXFwiS3Zhc2VyIFBDSWUgRkQgY2FyZHNcXFwiXFxuZHJpdmVycy9uZXQvY2FuL0tjb25maWc6MTcxOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTE3Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWc9MzE9Y29uZmlnIENBTl9FVEFTX0VTNThYXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWctMzMtXFx0c2VsZWN0IENSQzE2XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnOjM0OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZy0zNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWc9Njc9Y29uZmlnIENBTl9LVkFTRVJfVVNCXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnLTY4LVxcdHRyaXN0YXRlIFxcXCJLdmFzZXIgQ0FOL1VTQiBpbnRlcmZhY2VcXFwiXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9LY29uZmlnOjY5OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZy03MC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vS2NvbmZpZz0xOT1jb25maWcgRU5BX0VUSEVSTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vS2NvbmZpZy0yMy1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWc6MjQ6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL0tjb25maWctMjUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc9MTY5PWNvbmZpZyBQRFNfQ09SRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWctMTcyLVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc6MTczOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnLTE3NC1cXHRzZWxlY3QgUExETUZXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTIwNz1jb25maWcgQk5YVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTItXFx0c2VsZWN0IENSQzMyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyMTM6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTQtXFx0c2VsZWN0IFBBR0VfUE9PTFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yNTg9Y29uZmlnIEJOR0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYwLVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNjE6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjItXFx0c2VsZWN0IFBBR0VfUE9PTFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9Njg9Y29uZmlnIExJUVVJRElPXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy03NS1cXHRzZWxlY3QgTElRVUlESU9fQ09SRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjc2OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTc3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnPTI9Y29uZmlnIEZTTF9EUEFBMl9FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTctXFx0c2VsZWN0IEZTTF9YR01BQ19NRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc6ODpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy05LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9LY29uZmlnPTY9Y29uZmlnIEZVTl9FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9LY29uZmlnLTktXFx0ZGVwZW5kcyBvbiBUTFMgXFx1MDAyNlxcdTAwMjYgVExTX0RFVklDRSB8fCBUTFNfREVWSUNFPW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvS2NvbmZpZzoxMDpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvS2NvbmZpZy0xMS1cXHRzZWxlY3QgRlVOX0NPUkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTkxPWNvbmZpZyBITlMzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05My1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjk0OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk1LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9LY29uZmlnPTY9Y29uZmlnIEhJTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gKFBDSV9NU0kgXFx1MDAyNlxcdTAwMjYgKFg4NiB8fCBBUk02NCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL0tjb25maWc6OTpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvS2NvbmZpZy0xMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE0NT1jb25maWcgSVhHQkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTUwLVxcdHNlbGVjdCBNRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoxNTE6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0xNTItXFx0c2VsZWN0IFBMRE1GV1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMjk9Y29uZmlnIEk0MEVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjM1LVxcdHNlbGVjdCBMSUJJRV9BRE1JTlFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjIzNjpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIzNy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTI5MT1jb25maWcgSUNFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTMwMi1cXHRzZWxlY3QgTElCSUVfRldMT0cgaWYgREVCVUdfRlNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjMwMzpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTMwNC1cXHRzZWxlY3QgUEFDS0lOR1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhkL0tjb25maWc9ND1jb25maWcgSVhEXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGQvS2NvbmZpZy04LVxcdHNlbGVjdCBMSUJJRV9QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGQvS2NvbmZpZzo5OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4ZC9LY29uZmlnLTEwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9OT1jb25maWcgT0NURU9OVFgyX0FGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTExLVxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MTI6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMy1cXHRkZXBlbmRzIG9uICg2NEJJVCBcXHUwMDI2XFx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTMxPWNvbmZpZyBPQ1RFT05UWDJfUEZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzMtXFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozNDpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM1LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZz02PWNvbmZpZyBQUkVTVEVSQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTktXFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc6MTA6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTExLVxcdHNlbGVjdCBQSFlMSU5LXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc9Mjg9Y29uZmlnIE1MWDRfQ09SRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTMxLVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnOjMyOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy0zMy1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTY9Y29uZmlnIE1MWDVfQ09SRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctOS1cXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjEwOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTExLVxcdGRlcGVuZHMgb24gTUxYRlcgfHwgIU1MWEZXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnPTY9Y29uZmlnIE1MWEZXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnLTE0LVxcdHNlbGVjdCBYWl9ERUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhmdy9LY29uZmlnOjE1OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZz02PWNvbmZpZyBNTFhTV19DT1JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzo4OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctOS1cXHRzZWxlY3QgTUxYRldcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yNi1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjI3OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOC1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc9MTU9Y29uZmlnIE1TQ0NfT0NFTE9UX1NXSVRDSF9MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTYtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZzoxNzpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTgtXFx0c2VsZWN0IFJFR01BUF9NTUlPXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvS2NvbmZpZz0xOT1jb25maWcgTkZQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvS2NvbmZpZy0yMy1cXHRkZXBlbmRzIG9uIFRMUyBcXHUwMDI2XFx1MDAyNiBUTFNfREVWSUNFIHx8IFRMU19ERVZJQ0U9blxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9LY29uZmlnOjI0OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9LY29uZmlnLTI1LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZz0yMD1jb25maWcgSU9OSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjMtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjQ6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNS1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZz03Nj1jb25maWcgUUVEXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy04MS1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZzo4MjpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy04My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZz0xOT1jb25maWcgU0ZDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZy0yNC1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZzoyNTpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZy0yNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTItXFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEzOlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz02NT1jb25maWcgVElfQ1BTV19TV0lUQ0hERVZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNzMtXFx0c2VsZWN0IFJFR01BUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NzQ6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03NS1cXHRpbXBseSBQSFlfVElfR01JSV9TRUxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9OTY9Y29uZmlnIFRJX0szX0FNNjVfQ1BTV19OVVNTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTk4LVxcdGRlcGVuZHMgb24gQVJDSF9LMyBcXHUwMDI2XFx1MDAyNiBPRiBcXHUwMDI2XFx1MDAyNiBUSV9LM19VRE1BX0dMVUVfTEFZRVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjk5OlxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAwLVxcdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3p0ZS9kaW5naGFpL0tjb25maWc9Nj1jb25maWcgRElOR0hBSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvenRlL2RpbmdoYWkvS2NvbmZpZy04LSAgICBkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3p0ZS9kaW5naGFpL0tjb25maWc6OTogICAgc2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvenRlL2RpbmdoYWkvS2NvbmZpZy0xMC0gICAgaGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTk2PWNvbmZpZyBJT1NNXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctOTgtXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6OTk6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTEwMC1cXHRzZWxlY3QgUkVMQVkgaWYgV1dBTl9ERUJVR0ZTXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTIxMT1jb25maWcgUFRQXzE1ODhfQ0xPQ0tfT0NQXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxOC1cXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG5kcml2ZXJzL3B0cC9LY29uZmlnOjIxOTpcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIyMC1cXHRzZWxlY3QgQ1JDMTZcXG4tLVxcbmluY2x1ZGUvbmV0L2RldmxpbmsuaC02LSAqL1xcbmluY2x1ZGUvbmV0L2RldmxpbmsuaDo3OiNpZm5kZWYgX05FVF9ERVZMSU5LX0hfXFxuaW5jbHVkZS9uZXQvZGV2bGluay5oOjg6I2RlZmluZSBfTkVUX0RFVkxJTktfSF9cXG5pbmNsdWRlL25ldC9kZXZsaW5rLmgtOS1cXG4tLVxcbmluY2x1ZGUvbmV0L2RldmxpbmsuaD0yMTE0PWRldmxfdHJhcF9wb2xpY2Vyc191bnJlZ2lzdGVyKHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLFxcbi0tXFxuaW5jbHVkZS9uZXQvZGV2bGluay5oLTIxMTctXFxuaW5jbHVkZS9uZXQvZGV2bGluay5oOjIxMTg6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9ERVZMSU5LKVxcbmluY2x1ZGUvbmV0L2RldmxpbmsuaC0yMTE5LVxcbi0tXFxuaW5jbHVkZS9uZXQvZGV2bGluay5oPTIxNzc9c3RhdGljIGlubGluZSBzaXplX3QgZGV2bGlua19ubF9wb3J0X2hhbmRsZV9zaXplKHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRldmxpbmtfcG9ydClcXG4tLVxcbmluY2x1ZGUvbmV0L2RldmxpbmsuaC0yMTgzLVxcbmluY2x1ZGUvbmV0L2RldmxpbmsuaDoyMTg0OiNlbmRpZiAvKiBfTkVUX0RFVkxJTktfSF8gKi9cXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RldmxpbmsuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvZGV2bGluay5oOjI6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9ERVZMSU5LKVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RldmxpbmsuaC0zLVxcbi0tXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvZGV2bGluay5oPTE3Nz1UUkFDRV9FVkVOVChkZXZsaW5rX3RyYXBfcmVwb3J0LFxcbi0tXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvZGV2bGluay5oLTIxNC1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9kZXZsaW5rLmg6MjE1OiNlbHNlIC8qIENPTkZJR19ORVRfREVWTElOSyAqL1xcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2RldmxpbmsuaC0yMTYtXFxuLS1cXG5uZXQvS2NvbmZpZz00Nzk9Y29uZmlnIE5FVF9TT0NLX01TR1xcbi0tXFxubmV0L0tjb25maWctNDg2LVxcbm5ldC9LY29uZmlnOjQ4Nzpjb25maWcgTkVUX0RFVkxJTktcXG5uZXQvS2NvbmZpZy00ODgtXFx0Ym9vbFxcbi0tXFxubmV0L01ha2VmaWxlPTI1PW9iai0kKENPTkZJR19CUklER0UpXFx0XFx0Kz0gYnJpZGdlL1xcbm5ldC9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfTkVUX0RFVkxJTkspXFx0Kz0gZGV2bGluay9cXG5uZXQvTWFrZWZpbGUtMjctb2JqLXlcXHRcXHRcXHRcXHQrPSBkc2EvXFxuLS1cXG5uZXQvY29yZS9kcm9wX21vbml0b3IuYz0xMDE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RtX2FsZXJ0X29wcyAqbmV0X2RtX2FsZXJ0X29wc19hcnJbXSA9IHtcXG4tLVxcbm5ldC9jb3JlL2Ryb3BfbW9uaXRvci5jLTEwMjEtXFxubmV0L2NvcmUvZHJvcF9tb25pdG9yLmM6MTAyMjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RFVkxJTkspXFxubmV0L2NvcmUvZHJvcF9tb25pdG9yLmMtMTAyMy1zdGF0aWMgaW50IG5ldF9kbV9od19wcm9iZV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgbmV0X2RtX2FsZXJ0X29wcyAqb3BzKVxcbi0tXFxubmV0L2RzYS9LY29uZmlnPTM9bWVudWNvbmZpZyBORVRfRFNBXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTAtXFx0c2VsZWN0IFBIWUxJTktcXG5uZXQvZHNhL0tjb25maWc6MTE6XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxubmV0L2RzYS9LY29uZmlnLTEyLVxcdGltcGx5IE5FVF9TRUxGVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6MzAuNTAwMzExNTk1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTI5ODIzNDE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERldmxpbmsgTmV0bGluayBDaGFuZ2VzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgRGV2bGluayB1cGRhdGUuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLCBzbyBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBORVRfREVWTElOS2AgaW4gYG5ldC9LY29uZmlnYC4gUmlnaHQsIGl0J3Mgc2VsZWN0ZWQgYnkgc2V2ZXJhbCBkcml2ZXJzIGxpa2UgTkVUREVWU0lNLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzZWUgTkVUREVWU0lNICpkb2VzKiBzZWxlY3QgYE5FVF9ERVZMSU5LYCwgYW5kIGFsc28gYE5FVF9EU0FgIGFuZCBNTFg1LiBHb29kLCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBjbGVhci5cblxuTm93LCBsZXQncyBnZXQgaW50byB0aGUgY29kZSBjaGFuZ2VzIHRoZW1zZWx2ZXMsIHN0YXJ0aW5nIHdpdGggYG5ldC9kZXZsaW5rL3BvcnQuY2AuIEFoLCBgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldGAgaGFzIGJlZW4gbW9kaWZpZWQuIEkgc2VlIHRoYXQgdGhlIHN0YXRpYyBgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3lgIHN0cnVjdCBoYXMgYmVlbiByZW1vdmVkLiBJbnN0ZWFkLCB3ZSdyZSB1c2luZyB0aGUgYXV0by1nZW5lcmF0ZWQgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5YCBmcm9tIGBuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jYC4gSW50ZXJlc3RpbmcuIFRoZXkndmUgdXBkYXRlZCBob3cgdGhlIGF0dHJpYnV0ZXMgYXJlIHBhcnNlZC4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIHN3aXRjaGVkIGZyb20gYSBmaXhlZC1zaXplIGB0YmAgYXJyYXkgYW5kIGEgaGFyZGNvZGVkIHNpemUgdG8gdXNpbmcgYEFSUkFZX1NJWkUoKWAgZm9yIHRoZSBgdGJgIGFycmF5IGFuZCBhIGRlcml2ZWQgc2l6ZSBmb3IgdGhlIG5sYV9wYXJzZSBjYWxsLCB3aGljaCBpcyBhIGJldHRlciwgbW9yZSBmbGV4aWJsZSBhcHByb2FjaC5cblxuTGV0J3MgZXhhbWluZSB0aGF0IG5ldyBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIHBvbGljeS4gT2theSwgc28gaXQgaGFuZGxlcyB0aGUgZGlmZmVyZW50IGF0dHJpYnV0ZXMgbGlrZSBgSFdfQUREUmAsIGBTVEFURWAsIGBDQVBTYCwgYW5kIGBNQVhfSU9fRVFTYC4gVGhlIHBvbGljeSBkZWZpbml0aW9ucyBsb29rIHN0YW5kYXJkIGVub3VnaC4gVXNpbmcgYE5MQV9CSU5BUllgIGZvciBgSFdfQUREUmAsIGBOTEFfUE9MSUNZX01BWGAgZm9yIGBTVEFURWAsIGBOTEFfUE9MSUNZX0JJVEZJRUxEMzJgIGZvciBgQ0FQU2AsIGFuZCBgTkxBX1UzMmAgZm9yIGBNQVhfSU9fRVFTYC4gVGhhdCdzIGFsbCB0eXBpY2FsIE5ldGxpbmsgc3R1ZmYuXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayBob3cgdGhlc2UgcG9saWNpZXMgYXJlIHVzZWQgaW4gYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNgLiBBaCwgdGhlcmUncyBgZGV2bGlua19wb3J0X3NldF9ubF9wb2xpY3lgIGFuZCBgZGV2bGlua19yZWxvYWRfbmxfcG9saWN5YC4gVGhlIGZpcnN0IG9uZSB1c2VzIHRoZSBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGZvciBgREVWTElOS19BVFRSX1BPUlRfRlVOQ1RJT05gIGFzIGEgbmVzdGVkIGF0dHJpYnV0ZSBhbmQgdGhlIHNlY29uZCB1c2VzIGBOTEFfUE9MSUNZX0JJVEZJRUxEMzIoMylgIGZvciBgREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNgLlxuXG5GaW5hbGx5LCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgSSBoYXZlIHRvIHNlZSB3aG8gaXMgYWN0dWFsbHkgKnVzaW5nKiB0aGVzZSBjaGFuZ2VzLiBJJ2xsIG5lZWQgdG8gZ3JlcCBmb3IgY2FsbHMgdG8gYGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdGAsIGBkZXZsaW5rX25sX2NtZF9yZWxvYWRfZG9pdGAgYW5kIG90aGVycyBpbiB0aGUgYGRldmxpbmtgIHN1YnN5c3RlbS4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByYWN0aWNhbCBpbXBhY3Qgb2YgdGhlc2UgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1MDcsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6MzUuNzk4NTQ4NzY0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjc1NTM5MzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jPTcwMj1jb25zdCBzdHJ1Y3QgZ2VubF9zcGxpdF9vcHMgZGV2bGlua19ubF9vcHNbNzVdID0ge1xcbi0tXFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uYy03MzktXFx0XFx0LnByZV9kb2l0XFx0PSBkZXZsaW5rX25sX3ByZV9kb2l0X3BvcnQsXFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uYzo3NDA6XFx0XFx0LmRvaXRcXHRcXHQ9IGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdCxcXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLTc0MS1cXHRcXHQucG9zdF9kb2l0XFx0PSBkZXZsaW5rX25sX3Bvc3RfZG9pdCxcXG4tLVxcbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmg9NTA9aW50IGRldmxpbmtfbmxfcG9ydF9nZXRfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uaC01MS1cXHRcXHRcXHQgICAgICAgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTtcXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oOjUyOmludCBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uaC01My1pbnQgZGV2bGlua19ubF9wb3J0X25ld19kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTc2OD1zdGF0aWMgaW50IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqcG9ydCxcXG4tLVxcbm5ldC9kZXZsaW5rL3BvcnQuYy04MTktXFxubmV0L2RldmxpbmsvcG9ydC5jOjgyMDppbnQgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L2RldmxpbmsvcG9ydC5jLTgyMS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjQ2OjM3LjQ3NDA5NzMzMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDk4NDgxMTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBEZXZsaW5rIFJlbG9hZCBIYW5kbGVycyoqXG5cbkFscmlnaHQsIHNvIHdlIG5lZWQgdG8gdHJhY2sgZG93biBob3cgdGhlc2UgcmVsb2FkIGNvbW1hbmRzIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgZGV2bGluayBzdWJzeXN0ZW0uIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgY29udGV4dCBvZiBhIHJlbG9hZCBvcGVyYXRpb24sIGlzIHRvIHplcm8gaW4gb24gZnVuY3Rpb25zIHRoYXQgbGlrZWx5IG1hbmFnZSB0aGF0IHByb2Nlc3MuIFNwZWNpZmljYWxseSwgSeKAmWQgYmUgY2hlY2tpbmcgb3V0IGBkZXZsaW5rX25sX2NtZF9yZWxvYWRfZG9pdGAgb3Igc2ltaWxhciBmdW5jdGlvbnMgaW4gdGhlIGBuZXQvZGV2bGluay9gIGRpcmVjdG9yeS4gVGhhdCBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0cyBhIGRpcmVjdCBsaW5rIHRvIHRoZSBOZXRsaW5rIGludGVyZmFjZSBhbmQgdGhlIGNvcmUgZXhlY3V0aW9uIGZsb3cgZm9yIHJlbG9hZCBjb21tYW5kcyB3aXRoaW4gdGhlIGRldmxpbmsgY29udGV4dC4gSSBleHBlY3QgdG8gZmluZCB0aGUgbWVhdCBvZiB0aGUgcHJvY2Vzc2luZyB0aGVyZSDigJMgcGFyc2luZyB0aGUgTmV0bGluayBtZXNzYWdlLCB2YWxpZGF0aW5nIHRoZSByZXF1ZXN0LCBhbmQgdWx0aW1hdGVseSBvcmNoZXN0cmF0aW5nIHRoZSBkZXZpY2UgcmVsb2FkIGl0c2VsZi4gRGVwZW5kaW5nIG9uIHRoZSBzb3BoaXN0aWNhdGlvbiBvZiB0aGUgZGV2bGluayBpbXBsZW1lbnRhdGlvbiwgdGhhdCBzcGVjaWZpYyBmdW5jdGlvbiBtaWdodCBiZSBhIHdyYXBwZXIgb3IgYW4gZW50cnkgcG9pbnQgdGhhdCBkZWxlZ2F0ZXMgdG8gYSBtb3JlIGdyYW51bGFyIHNldCBvZiBoYW5kbGVycyBkZXBlbmRpbmcgb24gdGhlIGRldmxpbmsgb2JqZWN0IHR5cGUgaW52b2x2ZWQuIFRpbWUgdG8gZ28gc3BlbHVua2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTcyNTMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0NjozOS41NzI1ODEzNzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzE2NDQxODgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmxpbmtfbmxfY21kX3JlbG9hZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6NDEuMjA0MjMzMDJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE4MzcwNDQwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipIdW50aW5nIERvd24gRGV2bGluayBSZWxvYWQgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIFwicmVsb2FkXCIgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYG5ldC9kZXZsaW5rL2AgZGlyZWN0b3J5LiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgZm9yIGRldmxpbmsgZGV2aWNlIG1hbmFnZW1lbnQgcmVzaWRlcywgc28gaXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nLiBUaGlzIHByb2JhYmx5IG1lYW5zIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGV2bGluayBpbmZyYXN0cnVjdHVyZSBoYW5kbGVzIHJlbG9hZHMsIHdoaWNoIGlzIGxpa2VseSBhIGNydWNpYWwgcGFydCBvZiBlcnJvciByZWNvdmVyeSwgaG90cGx1Z2dpbmcsIG9yIGV2ZW4gY29uZmlndXJhdGlvbiBjaGFuZ2VzIHRoYXQgcmVxdWlyZSBhIGRldmljZSByZXN0YXJ0LiBJIHN1c3BlY3QgaXQncyBnb2luZyB0byBpbnZvbHZlIHNvbWUgZm9ybSBvZiBtb2R1bGUgaW50ZXJhY3Rpb24gb3Igc3RhdGUgbWFuYWdlbWVudCBhbmQgSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUuIFRoZSBcInJlbG9hZCBkb2l0XCIgdGVybWlub2xvZ3kgc3VnZ2VzdHMgdGhlc2UgZnVuY3Rpb25zIGFyZSB3aGVyZSB0aGUgcmVhbCB3b3JrIGdldHMgZG9uZSwgcG9zc2libHkgYWZ0ZXIgc29tZSBwcmUtZmxpZ2h0IGNoZWNrcyBvciBjb250ZXh0IHNldHVwLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgYW5kIHN0YXJ0IGdyZXBwaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzUyOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjQ2OjQzLjM4NzkzOTY5MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUzNDU4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVsb2FkLipkb2l0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9kZXZsaW5rXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9kZXZsaW5rL2Rldi5jPTQ4OT1kZXZsaW5rX25sX3JlbG9hZF9hY3Rpb25zX3BlcmZvcm1lZF9zbmQoc3RydWN0IGRldmxpbmsgKmRldmxpbmssIHUzMiBhY3Rpb25zX3BlcmZvcm1lZCxcXG4tLVxcbm5ldC9kZXZsaW5rL2Rldi5jLTUxOS1cXG5uZXQvZGV2bGluay9kZXYuYzo1MjA6aW50IGRldmxpbmtfbmxfcmVsb2FkX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvZGV2bGluay9kZXYuYy01MjEte1xcbi0tXFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uYz03MDI9Y29uc3Qgc3RydWN0IGdlbmxfc3BsaXRfb3BzIGRldmxpbmtfbmxfb3BzWzc1XSA9IHtcXG4tLVxcbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmMtOTk0LVxcdFxcdC5wcmVfZG9pdFxcdD0gZGV2bGlua19ubF9wcmVfZG9pdF9kZXZfbG9jayxcXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jOjk5NTpcXHRcXHQuZG9pdFxcdFxcdD0gZGV2bGlua19ubF9yZWxvYWRfZG9pdCxcXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLTk5Ni1cXHRcXHQucG9zdF9kb2l0XFx0PSBkZXZsaW5rX25sX3Bvc3RfZG9pdF9kZXZfbG9jayxcXG4tLVxcbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmg9OTE9aW50IGRldmxpbmtfbmxfcmVzb3VyY2VfZHVtcF9kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oLTkyLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpO1xcbm5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmg6OTM6aW50IGRldmxpbmtfbmxfcmVsb2FkX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxubmV0L2RldmxpbmsvbmV0bGlua19nZW4uaC05NC1pbnQgZGV2bGlua19ubF9wYXJhbV9nZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6NDMuNDMzMjg5MDNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ0NDIwODAzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYGRldmxpbmtfbmxfcmVsb2FkX2RvaXRgIGFuZCBpdHMgSW50ZXJhY3Rpb24gd2l0aCBgREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNgKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEknbSBmb2N1c2luZyBvbiBob3cgYGRldmxpbmtfbmxfcmVsb2FkX2RvaXRgIHV0aWxpemVzIHRoZSBgREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNgIGF0dHJpYnV0ZS4gTXkgcHJpbWFyeSBpbnRlcmVzdCBpcyBpbiB1bmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgcGFydGljdWxhcmx5IGhvdyByZXNvdXJjZSBjb25zdHJhaW50cywgaWYgYW55LCBhcmUgbWFuYWdlZCBkdXJpbmcgYSBkZXZpY2UgcmVsb2FkIG9wZXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSByZWxvYWQgbGltaXRzLCByZXByZXNlbnRlZCBieSB0aGlzIGF0dHJpYnV0ZSwgaW1wYWN0IHRoZSBvdmVyYWxsIGV4ZWN1dGlvbiBvZiB0aGUgcmVsb2FkIHByb2NlZHVyZS4gQXJlIHRoZXkgc3RyaWN0bHkgZW5mb3JjZWQ/IEFyZSB0aGV5IGFkdmlzb3J5PyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGlmIHRoZSBsaW1pdHMgYXJlIGV4Y2VlZGVkPyBJIGFsc28gbmVlZCB0byBhc2NlcnRhaW4gd2hhdCBvdGhlciBhc3BlY3RzIG9mIGRldmxpbmsgYXJlIHJlbGF0ZWQgdG8gdGhpcyBhdHRyaWJ1dGUsIGlzIHRoaXMgYSBzdGFuZGFsb25lIGZlYXR1cmUsIG9yIGlzIGl0IHJlbGF0ZWQgdG8gdGhpbmdzIGxpa2UgcG93ZXIgY29uc3VtcHRpb24sIGV0Yz8gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGBERVZMSU5LX0FUVFJfUkVMT0FEX0xJTUlUU2AgYXR0cmlidXRlIGlzIGJlaW5nIHByb3Blcmx5IHZhbGlkYXRlZCBhbmQgdXNlZCB0byBwcmV2ZW50IGFueSBwb3RlbnRpYWwgcmVzb3VyY2UgZXhoYXVzdGlvbiBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1cmluZyByZWxvYWRzLiBNeSB1bHRpbWF0ZSBnb2FsIGlzIHRvIGV2YWx1YXRlIGlmIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBvciBzZWN1cml0eSBpc3N1ZXMgZXhpc3QgaW4gdGhpcyBjb250cm9sIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTkwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6NDUuODc3NTAwNTc2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvZGV2bGluay9kZXYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MjAsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MjA6XFx0aW50IGRldmxpbmtfbmxfcmVsb2FkX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gNTIxOlxcdHtcXG4gNTIyOlxcdFxcdHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rID0gZGV2bGlua19ubF9jdHgoaW5mbyktXFx1MDAzZWRldmxpbms7XFxuIDUyMzpcXHRcXHRlbnVtIGRldmxpbmtfcmVsb2FkX2FjdGlvbiBhY3Rpb247XFxuIDUyNDpcXHRcXHRlbnVtIGRldmxpbmtfcmVsb2FkX2xpbWl0IGxpbWl0O1xcbiA1MjU6XFx0XFx0c3RydWN0IG5ldCAqZGVzdF9uZXQgPSBOVUxMO1xcbiA1MjY6XFx0XFx0dTMyIGFjdGlvbnNfcGVyZm9ybWVkO1xcbiA1Mjc6XFx0XFx0aW50IGVycjtcXG4gNTI4OlxcdFxcbiA1Mjk6XFx0XFx0ZXJyID0gZGV2bGlua19yZXNvdXJjZXNfdmFsaWRhdGUoZGV2bGluaywgTlVMTCwgaW5mbyk7XFxuIDUzMDpcXHRcXHRpZiAoZXJyKSB7XFxuIDUzMTpcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhpbmZvLVxcdTAwM2VleHRhY2ssIFxcXCJyZXNvdXJjZXMgc2l6ZSB2YWxpZGF0aW9uIGZhaWxlZFxcXCIpO1xcbiA1MzI6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNTMzOlxcdFxcdH1cXG4gNTM0OlxcdFxcbiA1MzU6XFx0XFx0YWN0aW9uID0gbmxhX2dldF91OF9kZWZhdWx0KGluZm8tXFx1MDAzZWF0dHJzW0RFVkxJTktfQVRUUl9SRUxPQURfQUNUSU9OXSxcXG4gNTM2OlxcdFxcdFxcdFxcdFxcdCAgICBERVZMSU5LX1JFTE9BRF9BQ1RJT05fRFJJVkVSX1JFSU5JVCk7XFxuIDUzNzpcXHRcXG4gNTM4OlxcdFxcdGlmICghZGV2bGlua19yZWxvYWRfYWN0aW9uX2lzX3N1cHBvcnRlZChkZXZsaW5rLCBhY3Rpb24pKSB7XFxuIDUzOTpcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhpbmZvLVxcdTAwM2VleHRhY2ssIFxcXCJSZXF1ZXN0ZWQgcmVsb2FkIGFjdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXJcXFwiKTtcXG4gNTQwOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gNTQxOlxcdFxcdH1cXG4gNTQyOlxcdFxcbiA1NDM6XFx0XFx0bGltaXQgPSBERVZMSU5LX1JFTE9BRF9MSU1JVF9VTlNQRUM7XFxuIDU0NDpcXHRcXHRpZiAoaW5mby1cXHUwMDNlYXR0cnNbREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNdKSB7XFxuIDU0NTpcXHRcXHRcXHRzdHJ1Y3QgbmxhX2JpdGZpZWxkMzIgbGltaXRzO1xcbiA1NDY6XFx0XFx0XFx0dTMyIGxpbWl0c19zZWxlY3RlZDtcXG4gNTQ3OlxcdFxcbiA1NDg6XFx0XFx0XFx0bGltaXRzID0gbmxhX2dldF9iaXRmaWVsZDMyKGluZm8tXFx1MDAzZWF0dHJzW0RFVkxJTktfQVRUUl9SRUxPQURfTElNSVRTXSk7XFxuIDU0OTpcXHRcXHRcXHRsaW1pdHNfc2VsZWN0ZWQgPSBsaW1pdHMudmFsdWUgXFx1MDAyNiBsaW1pdHMuc2VsZWN0b3I7XFxuIDU1MDpcXHRcXHRcXHRpZiAoIWxpbWl0c19zZWxlY3RlZCkge1xcbiA1NTE6XFx0XFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coaW5mby1cXHUwMDNlZXh0YWNrLCBcXFwiSW52YWxpZCBsaW1pdCBzZWxlY3RlZFxcXCIpO1xcbiA1NTI6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU1MzpcXHRcXHRcXHR9XFxuIDU1NDpcXHRcXHRcXHRmb3IgKGxpbWl0ID0gMCA7IGxpbWl0IFxcdTAwM2M9IERFVkxJTktfUkVMT0FEX0xJTUlUX01BWCA7IGxpbWl0KyspXFxuIDU1NTpcXHRcXHRcXHRcXHRpZiAobGltaXRzX3NlbGVjdGVkIFxcdTAwMjYgQklUKGxpbWl0KSlcXG4gNTU2OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbiA1NTc6XFx0XFx0XFx0LyogVUFQSSBlbmFibGVzIG11bHRpc2VsZWN0aW9uLCBidXQgY3VycmVudGx5IGl0IGlzIG5vdCB1c2VkICovXFxuIDU1ODpcXHRcXHRcXHRpZiAobGltaXRzX3NlbGVjdGVkICE9IEJJVChsaW1pdCkpIHtcXG4gNTU5OlxcdFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGluZm8tXFx1MDAzZWV4dGFjaywgXFxcIk11bHRpc2VsZWN0aW9uIG9mIGxpbWl0IGlzIG5vdCBzdXBwb3J0ZWRcXFwiKTtcXG4gNTYwOlxcdFxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gNTYxOlxcdFxcdFxcdH1cXG4gNTYyOlxcdFxcdFxcdGlmICghZGV2bGlua19yZWxvYWRfbGltaXRfaXNfc3VwcG9ydGVkKGRldmxpbmssIGxpbWl0KSkge1xcbiA1NjM6XFx0XFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coaW5mby1cXHUwMDNlZXh0YWNrLCBcXFwiUmVxdWVzdGVkIGxpbWl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlclxcXCIpO1xcbiA1NjQ6XFx0XFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiA1NjU6XFx0XFx0XFx0fVxcbiA1NjY6XFx0XFx0XFx0aWYgKGRldmxpbmtfcmVsb2FkX2NvbWJpbmF0aW9uX2lzX2ludmFsaWQoYWN0aW9uLCBsaW1pdCkpIHtcXG4gNTY3OlxcdFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGluZm8tXFx1MDAzZWV4dGFjaywgXFxcIlJlcXVlc3RlZCBsaW1pdCBpcyBpbnZhbGlkIGZvciB0aGlzIGFjdGlvblxcXCIpO1xcbiA1Njg6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU2OTpcXHRcXHRcXHR9XFxuIDU3MDpcXHRcXHR9XFxuIDU3MTpcXHRcXHRpZiAoaW5mby1cXHUwMDNlYXR0cnNbREVWTElOS19BVFRSX05FVE5TX1BJRF0gfHxcXG4gNTcyOlxcdFxcdCAgICBpbmZvLVxcdTAwM2VhdHRyc1tERVZMSU5LX0FUVFJfTkVUTlNfRkRdIHx8XFxuIDU3MzpcXHRcXHQgICAgaW5mby1cXHUwMDNlYXR0cnNbREVWTElOS19BVFRSX05FVE5TX0lEXSkge1xcbiA1NzQ6XFx0XFx0XFx0ZGVzdF9uZXQgPSBkZXZsaW5rX25ldG5zX2dldChza2IsIGluZm8pO1xcbiA1NzU6XFx0XFx0XFx0aWYgKElTX0VSUihkZXN0X25ldCkpXFxuIDU3NjpcXHRcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihkZXN0X25ldCk7XFxuIDU3NzpcXHRcXHRcXHRpZiAoIW5ldF9lcShkZXN0X25ldCwgZGV2bGlua19uZXQoZGV2bGluaykpIFxcdTAwMjZcXHUwMDI2XFxuIDU3ODpcXHRcXHRcXHQgICAgYWN0aW9uICE9IERFVkxJTktfUkVMT0FEX0FDVElPTl9EUklWRVJfUkVJTklUKSB7XFxuIDU3OTpcXHRcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoaW5mby1cXHUwMDNlZXh0YWNrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0Njo0NS44Nzc2MDIyODZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzI4MzM0NzEzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmlhZ2UgVmVyZGljdDogV29ydGhGdXp6aW5nID0gVHJ1ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhpcyBwYXRjaCB0b3VjaGVzIHRoZSBgbmV0L2RldmxpbmsvYCBzdWJzeXN0ZW0sIGFuZCB0aGF0IGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gU3BlY2lmaWNhbGx5LCBJJ20gc2VlaW5nIG1vZGlmaWNhdGlvbnMgdG8gYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgLCBgZGV2bGlua19ubF9yZWxvYWRfZG9pdGAsIGFuZCB0aGUgYXNzb2NpYXRlZCBuZXRsaW5rIHBvbGljeSB0YWJsZXMuXG5cblRoZSBrZXkgY2hhbmdlcyBpbnZvbHZlIGBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0YCBpbiBgbmV0L2RldmxpbmsvcG9ydC5jYCBub3cgdXNpbmcgYSBkeW5hbWljYWxseSBwYXJzZWQgbmVzdGVkIGF0dHJpYnV0ZSBzdHJ1Y3R1cmUsIGFuZCBhIGZpeCBpbiBgZGV2bGlua19yZWxvYWRfbmxfcG9saWN5YCB3aXRoaW4gYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNgIHJlZ2FyZGluZyB2YWxpZGF0aW9uIGxpbWl0cy4gQWRkaXRpb25hbGx5LCBhIG5ldyBwb2xpY3kgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5YCBpcyBub3cgaW4gdXNlIHdpdGhpbiBgZGV2bGlua19wb3J0X3NldF9ubF9wb2xpY3lgLiBUaGlzIGRyb3BzIGBPUFNUQVRFYCBhbmQgYWRkcyBgTUFYX0lPX0VRU2AuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgXCJJcyB0aGlzIGZ1enphYmxlP1wiIFRoZSBhbnN3ZXIgaGluZ2VzIG9uIHdoZXRoZXIgdGhlIG1vZGlmaWVkIGNvZGUgaXMgKnJlYWNoYWJsZSouIEFuZCwgeWVzLCBgbmV0L2RldmxpbmsvYCBpcyBjb3JlIG5ldHdvcmtpbmcsIGEgbmV0bGluayBzdWJzeXN0ZW0uIEl0J3MgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSBpbiBzdGFuZGFyZCBRRU1VL0tWTSBlbnZpcm9ubWVudHMgdmlhIG5ldGRldnNpbSBvciBhbnkgZGV2bGluayBuZXRkZXZpY2UuIFNvIHRoZSBjcml0ZXJpYSBhcmUgbWV0IGZvciBcIldvcnRoRnV6emluZz10cnVlXCIuIEl0J3MgY29yZSBuZXR3b3JraW5nLCBhbmQgbmV0bGluayBpcyBhIGRlZmluaXRlIGF0dGFjayBzdXJmYWNlLlxuXG5Ob3csIGxldCdzIGRldGVybWluZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBgTkVUX0RFVkxJTktgIGlzIHRoZSBwcmltYXJ5IG9uZSwgb2YgY291cnNlLCBhbmQgYE5FVERFVlNJTWAgbG9va3MgbGlrZSBhIGdvb2QgYWRkaXRpb24gdG8gZW5zdXJlIGRldmxpbmsgZGV2aWNlcyBhcmUgcHJlc2VudCBmb3IgdGVzdGluZy4gU28sIEkgd2lsbCBpbmNsdWRlIGBORVRfREVWTElOS2AgYW5kIGBORVRERVZTSU1gIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AuXG5cbk5leHQsIHRoZSAqRm9jdXNTeW1ib2xzKi4gV2UgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IGltcGxlbWVudCB0aGUgbW9kaWZpZWQgbG9naWMgb3IgZGlyZWN0bHkgZXhlcmNpc2UgaXQuIEJhc2VkIG9uIHRoZSBwYXRjaCwgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBhcmU6XG5cbjEuICBgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0YCAodGhlIG5ldGxpbmsgZW50cnkgcG9pbnQgZm9yIHBvcnQgc2V0KVxuMi4gIGBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0YCAodGhlIHJlZmFjdG9yZWQgZnVuY3Rpb24gaW4gYG5ldC9kZXZsaW5rL3BvcnQuY2ApXG4zLiAgYGRldmxpbmtfbmxfcmVsb2FkX2RvaXRgICh3aG9zZSBuZXRsaW5rIHBvbGljeSB3YXMgbW9kaWZpZWQpLlxuXG5BIHF1aWNrIGNoZWNrIGNvbmZpcm1zIHRoYXQgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIGNhbGxlZCBieSBhIG5vbi1zdGF0aWMgKGBkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRgKSBlbnRyeSBwb2ludC4gQm90aCBhcmUgcmVsZXZhbnQsIGFuZCBzbyBpcyBgZGV2bGlua19ubF9yZWxvYWRfZG9pdGAuXG5cbkRvdWJsZS1jaGVja2luZyBhZ2FpbnN0IHRoZSBndWlkZWxpbmVzLCB3ZSBoYXZlOlxuXG4qICAgKipXb3J0aEZ1enppbmcqKjogVHJ1ZVxuKiAgICoqRW5hYmxlQ29uZmlncyoqOiBcXFtcIk5FVF9ERVZMSU5LXCIsIFwiTkVUREVWU0lNXCJdXG4qICAgKipGb2N1c1N5bWJvbHMqKjogXFxbXCJkZXZsaW5rXFxfcG9ydFxcX2Z1bmN0aW9uXFxfc2V0XCIsIFwiZGV2bGlua1xcX25sXFxfcG9ydFxcX3NldFxcX2RvaXRcIiwgXCJkZXZsaW5rXFxfbmxcXF9yZWxvYWRcXF9kb2l0XCJdXG5cbkV2ZXJ5dGhpbmcgY2hlY2tzIG91dC4gVGhlIGBuZXQvZGV2bGluay9gIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIG5ldGxpbmssIHdoaWNoIHByZXNlbnRzIGEgY2xlYXIgYXR0YWNrIHZlY3Rvci4gSSdtIGNvbmZpZGVudCBpbiB0aGUgdmVyZGljdC4gV2UncmUgZ29pbmcgdG8gZnV6eiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTYwOSwiT3V0cHV0VG9rZW5zIjoxMzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6NTMuMTYwOTUyMzk2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEwNTA0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9ERVZMSU5LXCIsXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0XCIsXG4gICAgXCJkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRcIixcbiAgICBcImRldmxpbmtfbmxfcmVsb2FkX2RvaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGRldmxpbmsgbmV0bGluayBhdHRyaWJ1dGUgcG9saWNpZXMgYW5kIHRoZSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0IHBhcnNpbmcgbG9naWMgZm9yIGdlbmVyaWMgbmV0bGluayBjb21tYW5kcyAocG9ydC1zZXQgYW5kIHJlbG9hZCkuIFRoZSBjaGFuZ2VzIGFyZSBpbiBjb3JlIG5ldHdvcmtpbmcgbmV0bGluayBjb2RlLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGdlbmVyaWMgbmV0bGluayBkZXZsaW5rIGZhbWlseSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9ERVZMSU5LXCIsXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0XCIsXG4gICAgXCJkZXZsaW5rX25sX3BvcnRfc2V0X2RvaXRcIixcbiAgICBcImRldmxpbmtfbmxfcmVsb2FkX2RvaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGRldmxpbmsgbmV0bGluayBhdHRyaWJ1dGUgcG9saWNpZXMgYW5kIHRoZSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0IHBhcnNpbmcgbG9naWMgZm9yIGdlbmVyaWMgbmV0bGluayBjb21tYW5kcyAocG9ydC1zZXQgYW5kIHJlbG9hZCkuIFRoZSBjaGFuZ2VzIGFyZSBpbiBjb3JlIG5ldHdvcmtpbmcgbmV0bGluayBjb2RlLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGdlbmVyaWMgbmV0bGluayBkZXZsaW5rIGZhbWlseSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0Njo1My4yMzIwMTA5OTVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NjE0NzUwODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDY6NTMuMjMyNDY2NzE1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjY2MTQyODk5NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyB1cGRhdGVzIHRoZSBkZXZsaW5rIE5ldGxpbmsgWUFNTCBzcGVjaWZpY2F0aW9uIChEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sKSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYXV0by1nZW5lcmF0ZWQgTmV0bGluayBwb2xpY2llcyAobmV0L2RldmxpbmsvbmV0bGlua19nZW4uYywgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaCksIGFuZCByZWZhY3RvcnMgbmV0L2RldmxpbmsvcG9ydC5jIHRvIHVzZSB0aGUgZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgaW5zdGVhZCBvZiBhIGR1cGxpY2F0ZWQgc3RhdGljIHBvbGljeS5cXG5cXG5UaGVzZSBjaGFuZ2VzIHN0cmljdGx5IHBlcnRhaW4gdG8gTmV0bGluayBtZXNzYWdlIHBvbGljeSB2YWxpZGF0aW9uLCBzY2hlbWEgZGVzY3JpcHRpb25zLCBhbmQgYXR0cmlidXRlIHBhcnNpbmcuIFRoZSBhcnJheSBgdGJgIHBhc3NlZCB0byBgbmxhX3BhcnNlX25lc3RlZCgpYCBpcyBhcHByb3ByaWF0ZWx5IHNpemVkIGFuZCBpbml0aWFsaXplZC96ZXJvZWQgYnkgYG5sYV9wYXJzZSgpYC4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSByZWFkcywgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlIGFyZSBpbnRyb2R1Y2VkLiBTdGFuZGFyZCBzYW5pdGl6ZXJzIChLQVNBTikgYW5kIE5ldGxpbmsgcGFyc2VyIGNoZWNrcyBhcmUgc3VmZmljaWVudDsgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTQxYzQ3NDJmNzFkZmIzOWQxZTVkNjFiZjA2ZDJiMDRmZGM2MTY4ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDIwOjQ2OjEyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbCBiL0RvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWxcbmluZGV4IDM4YjExOTBmM2QyNjkuLmFjYjIyODU2YTZhODUgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sXG5AQCAtMTc0LDYgKzE3NCwxOCBAQCBkZWZpbml0aW9uczpcbiAgICAgICAgIHZhbHVlOiAxXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZnctYWN0aXZhdGVcbisgIC1cbisgICAgdHlwZTogZW51bVxuKyAgICBuYW1lOiByZWxvYWQtbGltaXRcbisgICAgZW50cmllczpcbisgICAgICAtXG4rICAgICAgICBuYW1lOiB1bnNwZWNcbisgICAgICAgIGRvYzogbm8gY29uc3RyYWludHNcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBuby1yZXNldFxuKyAgICAgICAgZG9jOiBcdTAwM2UtXG4rICAgICAgICAgIE5vIHJlc2V0IGFsbG93ZWQsIG5vIGRvd24gdGltZSBhbGxvd2VkLCBubyBsaW5rIGZsYXAgYW5kIG5vXG4rICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaXMgbG9zdC5cbiAgIC1cbiAgICAgdHlwZTogZW51bVxuICAgICBuYW1lOiBwYXJhbS1jbW9kZVxuQEAgLTc3NSw3ICs3ODcsNyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWxvYWQtbGltaXRzXG4gICAgICAgICB0eXBlOiBiaXRmaWVsZDMyXG4tICAgICAgICBlbnVtOiByZWxvYWQtYWN0aW9uXG4rICAgICAgICBlbnVtOiByZWxvYWQtbGltaXRcbiAgICAgICAgIGVudW0tYXMtZmxhZ3M6IHRydWVcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBkZXYtc3RhdHNcbkBAIC03OTMsNiArODA1LDcgQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVsb2FkLXN0YXRzLWxpbWl0XG4gICAgICAgICB0eXBlOiB1OFxuKyAgICAgICAgZW51bTogcmVsb2FkLWxpbWl0XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVsb2FkLXN0YXRzLXZhbHVlXG4gICAgICAgICB0eXBlOiB1MzJcbkBAIC04NDUsMTMgKzg1OCwxNCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IGxpbmVjYXJkLXN1cHBvcnRlZC10eXBlc1xuICAgICAgICAgdHlwZTogbmVzdFxuICAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLWxpbmVjYXJkLXN1cHBvcnRlZC10eXBlc1xuLVxuLSAgICAgICMgVE9ETzogZmlsbCBpbiB0aGUgYXR0cmlidXRlcyBpbiBiZXR3ZWVuXG4tXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogbmVzdGVkLWRldmxpbmtcbisgICAgICAgIHR5cGU6IG5lc3RcbisgICAgICAgIG11bHRpLWF0dHI6IHRydWVcbisgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1uZXN0ZWQtZGV2bGlua1xuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHNlbGZ0ZXN0c1xuICAgICAgICAgdHlwZTogbmVzdFxuLSAgICAgICAgdmFsdWU6IDE3NlxuICAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLXNlbGZ0ZXN0LWlkXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmF0ZS10eC1wcmlvcml0eVxuQEAgLTg5OCw3ICs5MTIsNyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiBwYXJlbnQtZGV2XG4gICAgICAgICB0eXBlOiBuZXN0XG4tICAgICAgICBuZXN0ZWQtYXR0cmlidXRlczogZGwtcGFyZW50LWRldlxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLW5lc3RlZC1kZXZsaW5rXG4gICAgICAgICBkb2M6IHxcbiAgICAgICAgICAgSWRlbnRpZmllcyB0aGUgZGV2bGluayBpbnN0YW5jZSB3aGljaCBvd25zIHRoZSBwYXJlbnQgcmF0ZSBub2RlLlxuICAgICAgICAgICBVc2VkIHdpdGggcmF0ZS1zZXQgYW5kIHJhdGUtbmV3IHRvIHBhcmVudCBhIHJhdGUgb2JqZWN0IHRvIGEgbm9kZSBvblxuQEAgLTk3OCw2ICs5OTIsNDkgQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICB0eXBlOiBiaXRmaWVsZDMyXG4gICAgICAgICBlbnVtOiBwb3J0LWZuLWF0dHItY2FwXG4gICAgICAgICBlbnVtLWFzLWZsYWdzOiB0cnVlXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogZGV2bGlua1xuKyAgICAgICAgdHlwZTogbmVzdFxuKyAgICAgICAgbmVzdGVkLWF0dHJpYnV0ZXM6IGRsLW5lc3RlZC1kZXZsaW5rXG4rICAgICAgICBkb2M6IEhhbmRsZSBvZiB0aGUgcGVlciBkZXZsaW5rIGluc3RhbmNlIGluc3RhbnRpYXRlZCBmb3IgdGhpcyBmdW5jdGlvbi5cbisgICAgICAtXG4rICAgICAgICBuYW1lOiBtYXgtaW8tZXFzXG4rICAgICAgICB0eXBlOiB1MzJcbitcbisgIC1cbisgICAgbmFtZTogZGwtcG9ydC1mdW5jdGlvbi1zZXRcbisgICAgc3Vic2V0LW9mOiBkbC1wb3J0LWZ1bmN0aW9uXG4rICAgIGRvYzogfFxuKyAgICAgIFBvcnQgZnVuY3Rpb24gYXR0cmlidXRlcyB0aGF0IGNhbiBiZSBjb25maWd1cmVkOyBvcHN0YXRlIGFuZCB0aGVcbisgICAgICBkZXZsaW5rIGhhbmRsZSBhcmUgcmVhZC1vbmx5LlxuKyAgICBhdHRyaWJ1dGVzOlxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGh3LWFkZHJcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBzdGF0ZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGNhcHNcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBtYXgtaW8tZXFzXG4rXG4rICAtXG4rICAgIG5hbWU6IGRsLXBvcnQtc2V0XG4rICAgIHN1YnNldC1vZjogZGV2bGlua1xuKyAgICBkb2M6IEF0dHJpYnV0ZXMgYWNjZXB0ZWQgYnkgdGhlIHBvcnQtc2V0IHJlcXVlc3QuXG4rICAgIGF0dHJpYnV0ZXM6XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogYnVzLW5hbWVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBkZXYtbmFtZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGluZGV4XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcG9ydC1pbmRleFxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBvcnQtdHlwZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBvcnQtZnVuY3Rpb25cbisgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1wb3J0LWZ1bmN0aW9uLXNldFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1kcGlwZS10YWJsZXNcbkBAIC0xMDA4LDYgKzEwNjUsOCBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgICAgIG5hbWU6IGRwaXBlLXRhYmxlLXJlc291cmNlLWlkXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogZHBpcGUtdGFibGUtcmVzb3VyY2UtdW5pdHNcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBwYWRcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtZHBpcGUtdGFibGUtbWF0Y2hlc1xuQEAgLTEwNDIsNiArMTEwMSw4IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogZHBpcGUtZW50cnktYWN0aW9uLXZhbHVlc1xuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGRwaXBlLWVudHJ5LWNvdW50ZXJcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBwYWRcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtZHBpcGUtZW50cnktbWF0Y2gtdmFsdWVzXG5AQCAtMTE4MCw2ICsxMjQxLDggQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICBuYW1lOiByZXNvdXJjZS11bml0XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVzb3VyY2Utb2NjXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcGFkXG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLXJlc291cmNlLWxpc3RcbkBAIC0xMjA3LDYgKzEyNzAsNyBAQCBhdHRyaWJ1dGUtc2V0czpcbiAgICAgYXR0cmlidXRlczpcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWdpb24tc25hcHNob3RcbisgICAgICAgIG11bHRpLWF0dHI6IHRydWVcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtcmVnaW9uLXNuYXBzaG90XG5AQCAtMTIyMSw2ICsxMjg1LDcgQEAgYXR0cmlidXRlLXNldHM6XG4gICAgIGF0dHJpYnV0ZXM6XG4gICAgICAgLVxuICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rXG4rICAgICAgICBtdWx0aS1hdHRyOiB0cnVlXG4gXG4gICAtXG4gICAgIG5hbWU6IGRsLXJlZ2lvbi1jaHVua1xuQEAgLTEyMzAsNiArMTI5NSw4IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgICAgbmFtZTogcmVnaW9uLWNodW5rLWRhdGFcbiAgICAgICAtXG4gICAgICAgICBuYW1lOiByZWdpb24tY2h1bmstYWRkclxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1mbXNnXG5AQCAtMTI3MCw2ICsxMzM3LDggQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICBuYW1lOiBoZWFsdGgtcmVwb3J0ZXItYXV0by1kdW1wXG4gICAgICAgLVxuICAgICAgICAgbmFtZTogaGVhbHRoLXJlcG9ydGVyLWJ1cnN0LXBlcmlvZFxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBhZFxuIFxuICAgLVxuICAgICBuYW1lOiBkbC1hdHRyLXN0YXRzXG5AQCAtMTI4NCw2ICsxMzUzLDEwIEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IHN0YXRzLXJ4LWRyb3BwZWRcbiAgICAgICAgIHR5cGU6IHU2NFxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBhZFxuKyAgICAgICAgdHlwZTogcGFkXG4rICAgICAgICB2YWx1ZTogNjFcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtdHJhcC1tZXRhZGF0YVxuQEAgLTEzMDMsNiArMTM3Niw3IEBAIGF0dHJpYnV0ZS1zZXRzOlxuICAgICBhdHRyaWJ1dGVzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGxpbmVjYXJkLXR5cGVcbisgICAgICAgIG11bHRpLWF0dHI6IHRydWVcbiBcbiAgIC1cbiAgICAgbmFtZTogZGwtc2VsZnRlc3QtaWRcbkBAIC0xMzMwLDYgKzE0MDQsNTAgQEAgYXR0cmlidXRlLXNldHM6XG4gICAtXG4gICAgIG5hbWU6IGRsLXBhcmVudC1kZXZcbiAgICAgc3Vic2V0LW9mOiBkZXZsaW5rXG4rICAgIGRvYzogfFxuKyAgICAgIERldmxpbmsgaGFuZGxlIGFjY2VwdGVkIGFzIHRoZSBwYXJlbnQtZGV2IGlucHV0OyB0aGUgbmV0bnMgaWQgdGhlXG4rICAgICAga2VybmVsIHJlcG9ydHMgYmFjayBpcyBub3QgYWNjZXB0ZWQsIHRoZSBwYXJlbnQgaXMgYWx3YXlzIHJlc29sdmVkXG4rICAgICAgaW4gdGhlIGNhbGxlcidzIG5ldG5zLlxuKyAgICBhdHRyaWJ1dGVzOlxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGJ1cy1uYW1lXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogZGV2LW5hbWVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBpbmRleFxuK1xuKyAgLVxuKyAgICBuYW1lOiBkbC1yYXRlLXNldFxuKyAgICBzdWJzZXQtb2Y6IGRldmxpbmtcbisgICAgZG9jOiBBdHRyaWJ1dGVzIGFjY2VwdGVkIGJ5IHRoZSByYXRlLXNldCBhbmQgcmF0ZS1uZXcgcmVxdWVzdHMuXG4rICAgIGF0dHJpYnV0ZXM6XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogYnVzLW5hbWVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiBkZXYtbmFtZVxuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IGluZGV4XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcmF0ZS1ub2RlLW5hbWVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiByYXRlLXR4LXNoYXJlXG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcmF0ZS10eC1tYXhcbisgICAgICAtXG4rICAgICAgICBuYW1lOiByYXRlLXR4LXByaW9yaXR5XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogcmF0ZS10eC13ZWlnaHRcbisgICAgICAtXG4rICAgICAgICBuYW1lOiByYXRlLXBhcmVudC1ub2RlLW5hbWVcbisgICAgICAtXG4rICAgICAgICBuYW1lOiByYXRlLXRjLWJ3c1xuKyAgICAgIC1cbisgICAgICAgIG5hbWU6IHBhcmVudC1kZXZcbisgICAgICAgIG5lc3RlZC1hdHRyaWJ1dGVzOiBkbC1wYXJlbnQtZGV2XG4rXG4rICAtXG4rICAgIG5hbWU6IGRsLW5lc3RlZC1kZXZsaW5rXG4rICAgIHN1YnNldC1vZjogZGV2bGlua1xuICAgICBhdHRyaWJ1dGVzOlxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGJ1cy1uYW1lXG5AQCAtMTMzNyw2ICsxNDU1LDggQEAgYXR0cmlidXRlLXNldHM6XG4gICAgICAgICBuYW1lOiBkZXYtbmFtZVxuICAgICAgIC1cbiAgICAgICAgIG5hbWU6IGluZGV4XG4rICAgICAgLVxuKyAgICAgICAgbmFtZTogbmV0bnMtaWRcbiBcbiBvcGVyYXRpb25zOlxuICAgZW51bS1tb2RlbDogZGlyZWN0aW9uYWxcbkBAIC0xMzYzLDYgKzE0ODMsNyBAQCBvcGVyYXRpb25zOlxuICAgICAgICAgICAgIC0gaW5kZXhcbiAgICAgICAgICAgICAtIHJlbG9hZC1mYWlsZWRcbiAgICAgICAgICAgICAtIGRldi1zdGF0c1xuKyAgICAgICAgICAgIC0gbmVzdGVkLWRldmxpbmtcbiAgICAgICBkdW1wOlxuICAgICAgICAgcmVwbHk6ICpnZXQtcmVwbHlcbiBcbkBAIC0xMzg4LDEzICsxNTA5LDEyIEBAIG9wZXJhdGlvbnM6XG4gICAgICAgICByZXF1ZXN0OlxuICAgICAgICAgICBhdHRyaWJ1dGVzOiAqZGV2LWlkLWF0dHJzXG4gICAgICAgICByZXBseTpcbi0gICAgICAgICAgdmFsdWU6IDMgICMgZHVlIHRvIGEgYnVnLCBwb3J0IGR1bXAgcmV0dXJucyBERVZMSU5LX0NNRF9ORVdcbiAgICAgICAgICAgYXR0cmlidXRlczogKnBvcnQtaWQtYXR0cnNcbiBcbiAgICAgLVxuICAgICAgIG5hbWU6IHBvcnQtc2V0XG4gICAgICAgZG9jOiBTZXQgZGV2bGluayBwb3J0IGluc3RhbmNlcy5cbi0gICAgICBhdHRyaWJ1dGUtc2V0OiBkZXZsaW5rXG4rICAgICAgYXR0cmlidXRlLXNldDogZGwtcG9ydC1zZXRcbiAgICAgICBkb250LXZhbGlkYXRlOiBbc3RyaWN0XVxuICAgICAgIGZsYWdzOiBbYWRtaW4tcGVybV1cbiAgICAgICBkbzpcbkBAIC0xOTc1LDYgKzIwOTUsNyBAQCBvcGVyYXRpb25zOlxuICAgICAgICAgICAgIC0gaW5kZXhcbiAgICAgICAgICAgICAtIHBvcnQtaW5kZXhcbiAgICAgICAgICAgICAtIHJlZ2lvbi1uYW1lXG4rICAgICAgICAgICAgLSByZWdpb24tY2h1bmtzXG4gXG4gICAgIC1cbiAgICAgICBuYW1lOiBwb3J0LXBhcmFtLWdldFxuQEAgLTIzMDUsNyArMjQyNiw3IEBAIG9wZXJhdGlvbnM6XG4gICAgIC1cbiAgICAgICBuYW1lOiByYXRlLXNldFxuICAgICAgIGRvYzogU2V0IHJhdGUgaW5zdGFuY2VzLlxuLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmtcbisgICAgICBhdHRyaWJ1dGUtc2V0OiBkbC1yYXRlLXNldFxuICAgICAgIGRvbnQtdmFsaWRhdGU6IFtzdHJpY3RdXG4gICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXVxuICAgICAgIGRvOlxuQEAgLTIzMjgsNyArMjQ0OSw3IEBAIG9wZXJhdGlvbnM6XG4gICAgIC1cbiAgICAgICBuYW1lOiByYXRlLW5ld1xuICAgICAgIGRvYzogQ3JlYXRlIHJhdGUgaW5zdGFuY2VzLlxuLSAgICAgIGF0dHJpYnV0ZS1zZXQ6IGRldmxpbmtcbisgICAgICBhdHRyaWJ1dGUtc2V0OiBkbC1yYXRlLXNldFxuICAgICAgIGRvbnQtdmFsaWRhdGU6IFtzdHJpY3RdXG4gICAgICAgZmxhZ3M6IFthZG1pbi1wZXJtXVxuICAgICAgIGRvOlxuQEAgLTIzNzQsMTQgKzI0OTUsMjIgQEAgb3BlcmF0aW9uczpcbiAgICAgICAgIHBvc3Q6IGRldmxpbmstbmwtcG9zdC1kb2l0XG4gICAgICAgICByZXF1ZXN0OlxuICAgICAgICAgICB2YWx1ZTogNzhcbi0gICAgICAgICAgYXR0cmlidXRlczogXHUwMDI2bGluZWNhcmQtaWQtYXR0cnNcbisgICAgICAgICAgYXR0cmlidXRlczpcbiAgICAgICAgICAgICAtIGJ1cy1uYW1lXG4gICAgICAgICAgICAgLSBkZXYtbmFtZVxuICAgICAgICAgICAgIC0gaW5kZXhcbiAgICAgICAgICAgICAtIGxpbmVjYXJkLWluZGV4XG4gICAgICAgICByZXBseTogXHUwMDI2bGluZWNhcmQtZ2V0LXJlcGx5XG4gICAgICAgICAgIHZhbHVlOiA4MFxuLSAgICAgICAgICBhdHRyaWJ1dGVzOiAqbGluZWNhcmQtaWQtYXR0cnNcbisgICAgICAgICAgYXR0cmlidXRlczpcbisgICAgICAgICAgICAtIGJ1cy1uYW1lXG4rICAgICAgICAgICAgLSBkZXYtbmFtZVxuKyAgICAgICAgICAgIC0gaW5kZXhcbisgICAgICAgICAgICAtIGxpbmVjYXJkLWluZGV4XG4rICAgICAgICAgICAgLSBsaW5lY2FyZC1zdGF0ZVxuKyAgICAgICAgICAgIC0gbGluZWNhcmQtdHlwZVxuKyAgICAgICAgICAgIC0gbGluZWNhcmQtc3VwcG9ydGVkLXR5cGVzXG4rICAgICAgICAgICAgLSBuZXN0ZWQtZGV2bGlua1xuICAgICAgIGR1bXA6XG4gICAgICAgICByZXF1ZXN0OlxuICAgICAgICAgICBhdHRyaWJ1dGVzOiAqZGV2LWlkLWF0dHJzXG5kaWZmIC0tZ2l0IGEvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uYyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNcbmluZGV4IGRlYzAwMTMzMTc4ZDEuLjQzZWY2ODY0ZDQ2MmYgMTAwNjQ0XG4tLS0gYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jXG4rKysgYi9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jXG5AQCAtNTIsMTEgKzUyLDExIEBAIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfZGxfcGFyZW50X2Rldl9ubF9wb2xpY3lbREVWTElOS19BVFRSX0lOREVYICsgMV1cbiBcdFtERVZMSU5LX0FUVFJfSU5ERVhdID0gTkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VSU5ULCBcdTAwMjZkZXZsaW5rX2F0dHJfaW5kZXhfcmFuZ2UpLFxuIH07XG4gXG4tY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX25sX3BvbGljeVtERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTICsgMV0gPSB7XG4rY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRUyArIDFdID0ge1xuIFx0W0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJdID0geyAudHlwZSA9IE5MQV9CSU5BUlksIH0sXG4gXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfU1RBVEVdID0gTkxBX1BPTElDWV9NQVgoTkxBX1U4LCAxKSxcbi1cdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9PUFNUQVRFXSA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VOCwgMSksXG4gXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQU10gPSBOTEFfUE9MSUNZX0JJVEZJRUxEMzIoMTUpLFxuK1x0W0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXG4gfTtcbiBcbiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3JhdGVfdGNfYndzX25sX3BvbGljeVtERVZMSU5LX1JBVEVfVENfQVRUUl9CVyArIDFdID0ge1xuQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGRldmxpbmtfcG9ydF9zZXRfbmxfcG9saWN5W0RFVkxJTktfQVRUUl9JTkRFWCArIDFcbiBcdFtERVZMSU5LX0FUVFJfSU5ERVhdID0gTkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VSU5ULCBcdTAwMjZkZXZsaW5rX2F0dHJfaW5kZXhfcmFuZ2UpLFxuIFx0W0RFVkxJTktfQVRUUl9QT1JUX0lOREVYXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LFxuIFx0W0RFVkxJTktfQVRUUl9QT1JUX1RZUEVdID0gTkxBX1BPTElDWV9NQVgoTkxBX1UxNiwgMyksXG4tXHRbREVWTElOS19BVFRSX1BPUlRfRlVOQ1RJT05dID0gTkxBX1BPTElDWV9ORVNURUQoZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX25sX3BvbGljeSksXG4rXHRbREVWTElOS19BVFRSX1BPUlRfRlVOQ1RJT05dID0gTkxBX1BPTElDWV9ORVNURUQoZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3kpLFxuIH07XG4gXG4gLyogREVWTElOS19DTURfUE9SVF9ORVcgLSBkbyAqL1xuQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19yZWxvYWRfbmxfcG9saWN5W0RFVkxJTktfQVRUUl9JTkRFWCArIDFdXG4gXHRbREVWTElOS19BVFRSX0RFVl9OQU1FXSA9IHsgLnR5cGUgPSBOTEFfTlVMX1NUUklORywgfSxcbiBcdFtERVZMSU5LX0FUVFJfSU5ERVhdID0gTkxBX1BPTElDWV9GVUxMX1JBTkdFKE5MQV9VSU5ULCBcdTAwMjZkZXZsaW5rX2F0dHJfaW5kZXhfcmFuZ2UpLFxuIFx0W0RFVkxJTktfQVRUUl9SRUxPQURfQUNUSU9OXSA9IE5MQV9QT0xJQ1lfUkFOR0UoTkxBX1U4LCAxLCAyKSxcbi1cdFtERVZMSU5LX0FUVFJfUkVMT0FEX0xJTUlUU10gPSBOTEFfUE9MSUNZX0JJVEZJRUxEMzIoNiksXG4rXHRbREVWTElOS19BVFRSX1JFTE9BRF9MSU1JVFNdID0gTkxBX1BPTElDWV9CSVRGSUVMRDMyKDMpLFxuIFx0W0RFVkxJTktfQVRUUl9ORVROU19QSURdID0geyAudHlwZSA9IE5MQV9VMzIsIH0sXG4gXHRbREVWTElOS19BVFRSX05FVE5TX0ZEXSA9IHsgLnR5cGUgPSBOTEFfVTMyLCB9LFxuIFx0W0RFVkxJTktfQVRUUl9ORVROU19JRF0gPSB7IC50eXBlID0gTkxBX1UzMiwgfSxcbmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oIGIvbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaFxuaW5kZXggYTcwZTBlNDc2OWFhNS4uOTljY2FjYzY5M2I3NiAxMDA2NDRcbi0tLSBhL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmhcbisrKyBiL25ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmhcbkBAIC0xNCw3ICsxNCw3IEBAXG4gXG4gLyogQ29tbW9uIG5lc3RlZCB0eXBlcyAqL1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BhcmVudF9kZXZfbmxfcG9saWN5W0RFVkxJTktfQVRUUl9JTkRFWCArIDFdO1xuLWV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fbmxfcG9saWN5W0RFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFMgKyAxXTtcbitleHRlcm4gY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRUyArIDFdO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3JhdGVfdGNfYndzX25sX3BvbGljeVtERVZMSU5LX1JBVEVfVENfQVRUUl9CVyArIDFdO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2RsX3NlbGZ0ZXN0X2lkX25sX3BvbGljeVtERVZMSU5LX0FUVFJfU0VMRlRFU1RfSURfRkxBU0ggKyAxXTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvZGV2bGluay9wb3J0LmMgYi9uZXQvZGV2bGluay9wb3J0LmNcbmluZGV4IDE1MjhmMmQxNDhkZmMuLjgwMzQyOWQ5YTAwODkgMTAwNjQ0XG4tLS0gYS9uZXQvZGV2bGluay9wb3J0LmNcbisrKyBiL25ldC9kZXZsaW5rL3BvcnQuY1xuQEAgLTYsMTkgKzYsNiBAQFxuIFxuICNpbmNsdWRlIFwiZGV2bF9pbnRlcm5hbC5oXCJcbiBcbi0jZGVmaW5lIERFVkxJTktfUE9SVF9GTl9DQVBTX1ZBTElEX01BU0sgXFxcbi1cdChfQklUVUwoX19ERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTX01BWCkgLSAxKVxuLVxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeVtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9NQVggKyAxXSA9IHtcbi1cdFtERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZIH0sXG4tXHRbREVWTElOS19QT1JUX0ZOX0FUVFJfU1RBVEVdID1cbi1cdFx0TkxBX1BPTElDWV9SQU5HRShOTEFfVTgsIERFVkxJTktfUE9SVF9GTl9TVEFURV9JTkFDVElWRSxcbi1cdFx0XHRcdCBERVZMSU5LX1BPUlRfRk5fU1RBVEVfQUNUSVZFKSxcbi1cdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTXSA9XG4tXHRcdE5MQV9QT0xJQ1lfQklURklFTEQzMihERVZMSU5LX1BPUlRfRk5fQ0FQU19WQUxJRF9NQVNLKSxcbi1cdFtERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4tfTtcbi1cbiAjZGVmaW5lIEFTU0VSVF9ERVZMSU5LX1BPUlRfUkVHSVNURVJFRChkZXZsaW5rX3BvcnQpXHRcdFx0XHRcXFxuIFx0V0FSTl9PTl9PTkNFKCEoZGV2bGlua19wb3J0KS1cdTAwM2VyZWdpc3RlcmVkKVxuICNkZWZpbmUgQVNTRVJUX0RFVkxJTktfUE9SVF9OT1RfUkVHSVNURVJFRChkZXZsaW5rX3BvcnQpXHRcdFx0XFxcbkBAIC03ODIsMTEgKzc2OSwxMSBAQCBzdGF0aWMgaW50IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqcG9ydCxcbiBcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcbiBcdFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdHN0cnVjdCBubGF0dHIgKnRiW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCArIDFdO1xuK1x0c3RydWN0IG5sYXR0ciAqdGJbQVJSQVlfU0laRShkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSldO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIERFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX01BWCwgYXR0cixcbi1cdFx0XHQgICAgICAgZGV2bGlua19mdW5jdGlvbl9ubF9wb2xpY3ksIGV4dGFjayk7XG4rXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBBUlJBWV9TSVpFKHRiKSAtIDEsIGF0dHIsXG4rXHRcdFx0ICAgICAgIGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5LCBleHRhY2spO1xuIFx0aWYgKGVyciBcdTAwM2MgMCkge1xuIFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiRmFpbCB0byBwYXJzZSBwb3J0IGZ1bmN0aW9uIGF0dHJpYnV0ZXNcIik7XG4gXHRcdHJldHVybiBlcnI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0Njo1My4yMzI0Njc1OTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTE2OTk2MzM5NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyBpbiB0aGUgRGV2bGluayBLZXJuZWwgUGF0Y2ggU2VyaWVzKipcblxuT2theSwgc28gbXkgdGFzayBoZXJlIGlzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoaXMga2VybmVsIHBhdGNoIHNlcmllcyB3YXJyYW50cyBydW5uaW5nIEtNU0FOLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBpZGVudGlmeSBhbnkgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBMZXQncyBicmVhayBpdCBkb3duLlxuXG5GaXJzdCwgSSBzZWUgdXBkYXRlcyB0byB0aGUgTmV0bGluayBzcGVjaWZpY2F0aW9uIFlBTUwgZm9yIGRldmxpbmsgKGBEb2N1bWVudGF0aW9uL25ldGxpbmsvc3BlY3MvZGV2bGluay55YW1sYCkuIFRoaXMgaXMgbW9zdGx5IHNjaGVtYSBhbmQgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLCBkZWZpbmluZyBhdHRyaWJ1dGVzLCBldGMuLCBzbyBvbiBpdHMgb3duLCBzZWVtcyB1bmxpa2VseSB0byBpbnRyb2R1Y2UgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuIFdlIGhhdmUgc2NoZW1hIGRlZmluaXRpb25zIHRoYXQgYXJlIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGNvZGUgZnJvbSB0aG9zZSBzY2hlbWFzLlxuXG5OZXh0LCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNgIGFuZCBgbmV0L2RldmxpbmsvbmV0bGlua19nZW4uaGAuIEl0IGFwcGVhcnMgdG8gYmUgZ2VuZXJhdGluZyBOZXRsaW5rIHBvbGljeSB1cGRhdGVzIGJhc2VkIG9uIHRoZSBZQU1MIGZpbGUuIEkgc2VlIHRoZSBwb2xpY3kgZGVmaW5pdGlvbnMgYmVpbmcgdXBkYXRlZDogYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lgIGJlY29taW5nIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAsIHdpdGggYSBub3RhYmxlIGluY3JlYXNlIGluIHNpemUgYW5kIGBkZXZsaW5rX3JlbG9hZF9ubF9wb2xpY3lgIGdldHMgYSBiaXRmaWVsZCB1cGRhdGUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgZGlmZnMsIGJ1dCB0aGlzIGlzIGF1dG8tZ2VuZXJhdGVkIGNvZGUsIHNvIEknZCBiZSBsb29raW5nIGZvciBhIGxvZ2ljIGVycm9yIGluIHRoZSBjb2RlIGdlbmVyYXRvciB3aGljaCBpcyB1bmxpa2VseSwgYnV0IHBvc3NpYmxlLlxuXG5GaW5hbGx5LCB0aGUgY29yZSBvZiB0aGUgY29uY2VybiBsaWVzIGluIGBuZXQvZGV2bGluay9wb3J0LmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBwYXRjaCByZW1vdmVzIGEgaGFuZC13cml0dGVuIGBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeWAgYW5kIHJlcGxhY2VzIGl0IHdpdGggdGhlIGF1dG8tZ2VuZXJhdGVkIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAuIFRoZSBjaGFuZ2UgaW52b2x2ZXMgYSBgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldCgpYCBmdW5jdGlvbi4gSW5zaWRlIHRoaXMgZnVuY3Rpb24sIEkgc2VlIGBzdHJ1Y3QgbmxhdHRyICp0YltBUlJBWV9TSVpFKGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5KV07YCBkZWNsYXJlZCwgYW5kIHRoZW4gYG5sYV9wYXJzZV9uZXN0ZWQodGIsIEFSUkFZX1NJWkUodGIpIC0gMSwgYXR0ciwgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3ksIGV4dGFjayk7YC5cblxuVGhpcyBpcyB3aGVyZSBJIGZvY3VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHRiYCBpcyBpbml0aWFsaXplZCBhbmQgdXNlZC4gYG5sYV9wYXJzZV9uZXN0ZWRgIGZpbGxzIHRoZSBgdGJgIGFycmF5LCB3aGljaCwgd2hlbiBwcm9wZXJseSBpbXBsZW1lbnRlZCwgc2hvdWxkIGJlIE9LLiBIb3dldmVyLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBhcmd1bWVudHMgZnJvbSBgbmxhX3BhcnNlX25lc3RlZGAgYXJlIHVzZWQuIElmIGB0YmAgaXMgcGFydGlhbGx5IGluaXRpYWxpemVkIGFuZCBpdHMgY29udGVudHMgYXJlIHVzZWQgd2l0aG91dCBwcm9wZXIgYm91bmRzIGNoZWNrcyBvciBpbml0aWFsaXphdGlvbiBjaGVja3MgZWxzZXdoZXJlLCB0aGF0IGNvdWxkIGJlIGEgcHJvYmxlbS4gTXkgcHJpbWFyeSBmb2N1cyBpcyB0byB2ZXJpZnkgdGhhdCBgdGJgIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJ5IGBubGFfcGFyc2VfbmVzdGVkYCBvciB0aGF0IGFueSB1bmluaXRpYWxpemVkIHBhcnRzIGFyZSBoYW5kbGVkIGNvcnJlY3RseS5cblxuVGhlcmVmb3JlLCBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgbmV0L2RldmxpbmsvcG9ydC5jYCBhcm91bmQgYGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoKWAuIEkgd2lsbCB1c2UgYGdyZXBwZXJgIG9yIHNpbXBseSByZWFkIHRoZSBjb2RlIGFyb3VuZCB0aGF0IGFyZWEgdG8gdmVyaWZ5IHRoYXQgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb25zIGR1ZSB0byBjaGFuZ2VzIGluIHRoZSBkYXRhIHN0cnVjdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NDAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0NzowNC45MzIxMDUzMTZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMzU5MjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2RldmxpbmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9kZXZsaW5rL3BvcnQuYz02OTM9c3RhdGljIGludCBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fdmFsaWRhdGUoc3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0LFxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jLTc2Ny1cXG5uZXQvZGV2bGluay9wb3J0LmM6NzY4OnN0YXRpYyBpbnQgZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldChzdHJ1Y3QgZGV2bGlua19wb3J0ICpwb3J0LFxcbm5ldC9kZXZsaW5rL3BvcnQuYy03NjktXFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxcbi0tXFxubmV0L2RldmxpbmsvcG9ydC5jPTgyMD1pbnQgZGV2bGlua19ubF9wb3J0X3NldF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZGV2bGluay9wb3J0LmMtODM3LVxcbm5ldC9kZXZsaW5rL3BvcnQuYzo4Mzg6XFx0XFx0ZXJyID0gZGV2bGlua19wb3J0X2Z1bmN0aW9uX3NldChkZXZsaW5rX3BvcnQsIGF0dHIsIGV4dGFjayk7XFxubmV0L2RldmxpbmsvcG9ydC5jLTgzOS1cXHRcXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0NzowNC45ODU0NzA5MjVaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU3MzgyNzY1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcHJvY2Vzc2luZyB0aGUgY29kZSBteXNlbGY6XG5cbioqRGVsdmluZyBpbnRvIERldmxpbmsgUG9ydCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIGBuZXQvZGV2bGluay9wb3J0LmNgLCBzcGVjaWZpY2FsbHkgbGluZXMgNzYwIHRvIDgyMC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBpbXBsZW1lbnRlZCBpbiB0aGlzIHNlY3Rpb24sIGxpa2VseSBpbnZvbHZpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3IgbWFuaXB1bGF0aW9uIG9mIGEgZGV2bGluayBwb3J0LiBJJ20gaW1tZWRpYXRlbHkgZXhwZWN0aW5nIHRvIHNlZSBkZXRhaWxzIGFyb3VuZCBzZXR0aW5nIG9yIHJldHJpZXZpbmcgcHJvcGVydGllcywgaGFuZGxpbmcgc3BlY2lmaWMgY29tbWFuZHMsIG9yIHBvdGVudGlhbGx5IGV2ZW4gbWFuYWdpbmcgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgaW50ZXJhY3Rpb25zIHRocm91Z2ggdGhpcyBwb3J0LiBCYXNlZCBvbiBteSBleHBlcmllbmNlLCB0aGlzIGxpa2VseSBpbnZvbHZlcyBjaGVja2luZyBwZXJtaXNzaW9ucyBvciB2YXJpb3VzIHBhcmFtZXRlcnMgdG8gZXN0YWJsaXNoIHRoZSBjb3JyZWN0IGNvbmRpdGlvbnMgZm9yIGFjY2VzcywgaGFuZGxpbmcgZXJyb3IgY29uZGl0aW9ucywgYW5kIG1hbmFnaW5nIGxvY2tzIHRvIGVuc3VyZSB0aHJlYWQgc2FmZXR5IHdoZW4gbW9kaWZ5aW5nIHNoYXJlZCBkYXRhLiBJJ2xsIG5lZWQgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBob3cgdGhleSBoYW5kbGUgZGlmZmVyZW50IHBvcnQgdHlwZXMgb3Igb3BlcmF0aW9uYWwgc3RhdGVzLCBhcyB0aGVzZSBhcmUgZnJlcXVlbnRseSB0aGUgc291cmNlcyBvZiBzdWJ0bGUgYnVncywgZGVwZW5kaW5nIG9uIHRoZSBwYXJ0aWN1bGFyIGRyaXZlci4gSSdtIGFsc28gYW50aWNpcGF0aW5nIHNvbWUgaW50ZXJhY3Rpb24gd2l0aCBuZXRsaW5rIG1lc3NhZ2VzIG9yIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zLCBnaXZlbiB0aGUgbmF0dXJlIG9mIGRldmxpbmsuIFRoaXMgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgcGljdHVyZSBvZiBob3cgdGhlc2UgcG9ydHMgYXJlIGluaXRpYWxpemVkIGFuZCB3aGF0IHNvcnQgb2YgY3VzdG9taXphdGlvbiBvcHRpb25zIGFyZSBhdmFpbGFibGUuIEknbGwgYmUgbG9va2luZyBjYXJlZnVsbHkgYXQgdGhlIGRhdGEgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQgYXJvdW5kLCBiZWNhdXNlLCBkZXBlbmRpbmcgb24gdGhlIGFyY2hpdGVjdHVyZSwgdGhlcmUgY291bGQgYmUgaW50ZXJlc3Rpbmcgb3B0aW1pemF0aW9ucyBvciBtZW1vcnkgbWFuYWdlbWVudCBkZXRhaWxzIGluIHRoZSBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3NzAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDo0NzowNy41NTkzMDExMzFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9kZXZsaW5rL3BvcnQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NjAsXG4gIFwiTGluZUNvdW50XCI6IDY1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NjA6XFx0XFx0ICAgICFvcHMtXFx1MDAzZXBvcnRfZm5fbWF4X2lvX2Vxc19zZXQpIHtcXG4gNzYxOlxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoZXh0YWNrLCB0YltERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTXSxcXG4gNzYyOlxcdFxcdFxcdFxcdFxcdCAgICBcXFwiRnVuY3Rpb24gZG9lcyBub3Qgc3VwcG9ydCBtYXhfaW9fZXFzIHNldHRpbmdcXFwiKTtcXG4gNzYzOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gNzY0OlxcdFxcdH1cXG4gNzY1OlxcdFxcdHJldHVybiAwO1xcbiA3NjY6XFx0fVxcbiA3Njc6XFx0XFxuIDc2ODpcXHRzdGF0aWMgaW50IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9zZXQoc3RydWN0IGRldmxpbmtfcG9ydCAqcG9ydCxcXG4gNzY5OlxcdFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG4gNzcwOlxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiA3NzE6XFx0e1xcbiA3NzI6XFx0XFx0c3RydWN0IG5sYXR0ciAqdGJbQVJSQVlfU0laRShkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeSldO1xcbiA3NzM6XFx0XFx0aW50IGVycjtcXG4gNzc0OlxcdFxcbiA3NzU6XFx0XFx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgQVJSQVlfU0laRSh0YikgLSAxLCBhdHRyLFxcbiA3NzY6XFx0XFx0XFx0XFx0ICAgICAgIGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5LCBleHRhY2spO1xcbiA3Nzc6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4gNzc4OlxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIkZhaWwgdG8gcGFyc2UgcG9ydCBmdW5jdGlvbiBhdHRyaWJ1dGVzXFxcIik7XFxuIDc3OTpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA3ODA6XFx0XFx0fVxcbiA3ODE6XFx0XFxuIDc4MjpcXHRcXHRlcnIgPSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fdmFsaWRhdGUocG9ydCwgdGIsIGV4dGFjayk7XFxuIDc4MzpcXHRcXHRpZiAoZXJyKVxcbiA3ODQ6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNzg1OlxcdFxcbiA3ODY6XFx0XFx0YXR0ciA9IHRiW0RFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJdO1xcbiA3ODc6XFx0XFx0aWYgKGF0dHIpIHtcXG4gNzg4OlxcdFxcdFxcdGVyciA9IGRldmxpbmtfcG9ydF9mdW5jdGlvbl9od19hZGRyX3NldChwb3J0LCBhdHRyLCBleHRhY2spO1xcbiA3ODk6XFx0XFx0XFx0aWYgKGVycilcXG4gNzkwOlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDc5MTpcXHRcXHR9XFxuIDc5MjpcXHRcXG4gNzkzOlxcdFxcdGF0dHIgPSB0YltERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTXTtcXG4gNzk0OlxcdFxcdGlmIChhdHRyKSB7XFxuIDc5NTpcXHRcXHRcXHRlcnIgPSBkZXZsaW5rX3BvcnRfZm5fY2Fwc19zZXQocG9ydCwgYXR0ciwgZXh0YWNrKTtcXG4gNzk2OlxcdFxcdFxcdGlmIChlcnIpXFxuIDc5NzpcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA3OTg6XFx0XFx0fVxcbiA3OTk6XFx0XFxuIDgwMDpcXHRcXHRhdHRyID0gdGJbREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU107XFxuIDgwMTpcXHRcXHRpZiAoYXR0cikge1xcbiA4MDI6XFx0XFx0XFx0ZXJyID0gZGV2bGlua19wb3J0X2ZuX21heF9pb19lcXNfc2V0KHBvcnQsIGF0dHIsIGV4dGFjayk7XFxuIDgwMzpcXHRcXHRcXHRpZiAoZXJyKVxcbiA4MDQ6XFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gODA1OlxcdFxcdH1cXG4gODA2OlxcdFxcbiA4MDc6XFx0XFx0LyogS2VlcCB0aGlzIGFzIHRoZSBsYXN0IGZ1bmN0aW9uIGF0dHJpYnV0ZSBzZXQsIHNvIHRoYXQgd2hlblxcbiA4MDg6XFx0XFx0ICogbXVsdGlwbGUgcG9ydCBmdW5jdGlvbiBhdHRyaWJ1dGVzIGFyZSBzZXQgYWxvbmcgd2l0aCBzdGF0ZSxcXG4gODA5OlxcdFxcdCAqIFRob3NlIGNhbiBiZSBhcHBsaWVkIGZpcnN0IGJlZm9yZSBhY3RpdmF0aW5nIHRoZSBzdGF0ZS5cXG4gODEwOlxcdFxcdCAqL1xcbiA4MTE6XFx0XFx0YXR0ciA9IHRiW0RFVkxJTktfUE9SVF9GTl9BVFRSX1NUQVRFXTtcXG4gODEyOlxcdFxcdGlmIChhdHRyKVxcbiA4MTM6XFx0XFx0XFx0ZXJyID0gZGV2bGlua19wb3J0X2ZuX3N0YXRlX3NldChwb3J0LCBhdHRyLCBleHRhY2spO1xcbiA4MTQ6XFx0XFxuIDgxNTpcXHRcXHRpZiAoIWVycilcXG4gODE2OlxcdFxcdFxcdGRldmxpbmtfcG9ydF9ub3RpZnkocG9ydCwgREVWTElOS19DTURfUE9SVF9ORVcpO1xcbiA4MTc6XFx0XFx0cmV0dXJuIGVycjtcXG4gODE4OlxcdH1cXG4gODE5OlxcdFxcbiA4MjA6XFx0aW50IGRldmxpbmtfbmxfcG9ydF9zZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiA4MjE6XFx0e1xcbiA4MjI6XFx0XFx0c3RydWN0IGRldmxpbmtfcG9ydCAqZGV2bGlua19wb3J0ID0gZGV2bGlua19ubF9jdHgoaW5mbyktXFx1MDAzZWRldmxpbmtfcG9ydDtcXG4gODIzOlxcdFxcdGludCBlcnI7XFxuIDgyNDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDc6MDcuNTU5NDYxOTcxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ3MDYzMzI4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRsaW5rIEF0dHJpYnV0ZSBQYXJzaW5nIExvZ2ljKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYG5sYV9wYXJzZV9uZXN0ZWRgIGlzIGJlaW5nIHVzZWQgaGVyZSwgYW5kIGl0IGxvb2tzIGxpa2UgaXQgaW5pdGlhbGl6ZXMgdGhlIGB0YmAgYXJyYXkgYnkgY2xlYXJpbmcgb3Igc2V0dGluZyB0aGUgcG9pbnRlcnMuIFNwZWNpZmljYWxseSwgYG5sYV9wYXJzZV9uZXN0ZWRgIGlzIGNhbGxlZCB3aXRoIGB0YmAgYW5kIGBBUlJBWV9TSVpFKHRiKSAtIDFgLCBhbG9uZyB3aXRoIG90aGVyIHBhcmFtZXRlcnMgbGlrZSBgYXR0cmAuIEkgbmVlZCB0byBjb25maXJtIGhvdyBgbmxhX3BhcnNlX25lc3RlZGAgb3BlcmF0ZXMgdW5kZXIgdGhlIGhvb2QuIEl0IHNlZW1zIHRvIGJlIGVpdGhlciBkb2luZyBhIGBtZW1zZXRgIHRvIHplcm8gb3V0IGB0YmAgb3IgdXNpbmcgYG5sYV9wYXJzZWAuXG5cbkEgZGVlcGVyIGxvb2sgYXQgYG5sYV9wYXJzZWAgY29uZmlybXMgaXQncyBkb2luZyBhIGBtZW1zZXRgIG9uIGB0YmAgd2l0aCBgbWVtc2V0KHRiLCAwLCBzaXplb2Yoc3RydWN0IG5sYXR0ciAqKSAqIChtYXh0eXBlICsgMSkpYC4gSW4gdGhpcyBjb250ZXh0LCB0aGUgc2l6ZSBvZiB0aGUgYHRiYCBhcnJheSwgYEFSUkFZX1NJWkUodGIpYCwgaXMgZXF1YWwgdG8gYERFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVMgKyAxYC4gVGhpcyBpbXBsaWVzIHRoYXQgYEFSUkFZX1NJWkUodGIpIC0gMWAgaXMgdGhlbiBgREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU2AuIFNvLCBgdGJbMF1gIHVwIHRvIGB0YltERVZMSU5LX1BPUlRfRk5fQVRUUl9NQVhfSU9fRVFTXWAgc2hvdWxkIGJlIGdldHRpbmcgemVyb2VkIG91dCwgYW5kIHRoZW4gcG9wdWxhdGVkIGJ5IGBubGFfcGFyc2VgLlxuXG5OZXh0LCBJJ2xsIGV4YW1pbmUgdGhlIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgZGVmaW5pdGlvbiwgZm91bmQgaW4gYG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmNgLiBJdCdzIGEgYGNvbnN0IHN0cnVjdCBubGFfcG9saWN5YCBhcnJheSB3aXRoIGEgc2l6ZSBvZiBgW0RFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVMgKyAxXWAuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBhY2Nlc3MgdG8gYWxsIGVsZW1lbnRzIGluIGB0YmAgYXJlIHdpdGhpbiBhY2NlcHRhYmxlIGJvdW5kcywgYW5kIGl0IGxvb2tzIGxpa2UgaXQgaXMuIEhlcmUgYXJlIHRoZSBhdHRyaWJ1dGVzIHRoYXQgc2VlbSB0byBiZSByZWxldmFudDogYERFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSX0hXX0FERFJgICh2YWx1ZSAxKSwgYERFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFNgICh2YWx1ZSAzKSwgYERFVkxJTktfUE9SVF9GTl9BVFRSX01BWF9JT19FUVNgICh2YWx1ZSA0KSwgYW5kIGBERVZMSU5LX1BPUlRfRk5fQVRUUl9TVEFURWAgKHZhbHVlIDIpLiBBbGwgdGhlIGluZGljZXMgYXJlIHdpdGhpbiB0aGUgcmFuZ2UgSSd2ZSBjYWxjdWxhdGVkLCB1cCB0byBgREVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRU2AuXG5cbkZpbmFsbHksIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIHJldmlldyB0aGUgZW51bSB2YWx1ZXMgb2YgYERFVkxJTktfUE9SVF9GVU5DVElPTl9BVFRSXypgIHRvIHZlcmlmeSB0aGV5IGFsaWduIHdpdGggdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCB3aGljaCBJJ2xsIGZpbmQgaW4gYGluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmhgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTI4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDc6MTIuMjY1Nzk3NTE3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDExMjI1OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREVWTElOS19QT1JUX0ZOX0FUVFJfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaD03MjE9ZW51bSBkZXZsaW5rX3BvcnRfZm5fYXR0cl9jYXAge1xcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzIyOlxcdERFVkxJTktfUE9SVF9GTl9BVFRSX0NBUF9ST0NFX0JJVCxcXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oOjcyMzpcXHRERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBfTUlHUkFUQUJMRV9CSVQsXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3MjQ6XFx0REVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX0lQU0VDX0NSWVBUT19CSVQsXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3MjU6XFx0REVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX0lQU0VDX1BBQ0tFVF9CSVQsXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaC03MjYtXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaC03MjctXFx0LyogQWRkIG5ldyBjYXBzIGFib3ZlICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3Mjg6XFx0X19ERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBTX01BWCxcXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTcyOS19O1xcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmgtNzMwLVxcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzMxOiNkZWZpbmUgREVWTElOS19QT1JUX0ZOX0NBUF9ST0NFIF9CSVRVTChERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBfUk9DRV9CSVQpXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaC03MzItI2RlZmluZSBERVZMSU5LX1BPUlRfRk5fQ0FQX01JR1JBVEFCTEUgXFxcXFxcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzMzOlxcdF9CSVRVTChERVZMSU5LX1BPUlRfRk5fQVRUUl9DQVBfTUlHUkFUQUJMRV9CSVQpXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3MzQ6I2RlZmluZSBERVZMSU5LX1BPUlRfRk5fQ0FQX0lQU0VDX0NSWVBUTyBfQklUVUwoREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX0lQU0VDX0NSWVBUT19CSVQpXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3MzU6I2RlZmluZSBERVZMSU5LX1BPUlRfRk5fQ0FQX0lQU0VDX1BBQ0tFVCBfQklUVUwoREVWTElOS19QT1JUX0ZOX0FUVFJfQ0FQX0lQU0VDX1BBQ0tFVF9CSVQpXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaC03MzYtXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaD03Mzc9ZW51bSBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fYXR0ciB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTczOS1cXHRERVZMSU5LX1BPUlRfRlVOQ1RJT05fQVRUUl9IV19BRERSLFxcdC8qIGJpbmFyeSAqL1xcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzQwOlxcdERFVkxJTktfUE9SVF9GTl9BVFRSX1NUQVRFLFxcdC8qIHU4ICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3NDE6XFx0REVWTElOS19QT1JUX0ZOX0FUVFJfT1BTVEFURSxcXHQvKiB1OCAqL1xcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzQyOlxcdERFVkxJTktfUE9SVF9GTl9BVFRSX0NBUFMsXFx0LyogYml0ZmllbGQzMiAqL1xcbmluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmg6NzQzOlxcdERFVkxJTktfUE9SVF9GTl9BVFRSX0RFVkxJTkssXFx0LyogbmVzdGVkICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L2RldmxpbmsuaDo3NDQ6XFx0REVWTElOS19QT1JUX0ZOX0FUVFJfTUFYX0lPX0VRUyxcXHQvKiB1MzIgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvZGV2bGluay5oLTc0NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6NDc6MTIuNTA2OTI2MjM0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjczMzk4MDA5NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBEZXZsaW5rIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGZvY3VzZWQgb24gcmVmaW5pbmcgdGhlIGludGVybmFsIHdvcmtpbmdzIGFuZCBkb2N1bWVudGF0aW9uIG9mIHRoZSBEZXZsaW5rIHN1YnN5c3RlbSwgcGFydGljdWxhcmx5IGFyb3VuZCBob3cgaXQgaGFuZGxlcyBOZXRsaW5rIGF0dHJpYnV0ZXMuXG5cbkZpcnN0LCB0aGUgY29yZSBvZiBpdCBpbnZvbHZlcyB1cGRhdGluZyB0aGUgYGRldmxpbmsueWFtbGAgc3BlY2lmaWNhdGlvbi4gSXQgc2VlbXMgbGlrZSB0aGUgZ29hbCBpcyB0byBtYWtlIHRoZSBzY2hlbWEgZGVmaW5pdGlvbnMgbW9yZSBwcmVjaXNlLCBlc3BlY2lhbGx5IGFyb3VuZCBhdHRyaWJ1dGVzIHJlbGF0ZWQgdG8gc2V0cywgcmVwbGllcywgbXVsdGktYXR0cmlidXRlIGZsYWdzLCBhbmQgZW51bXMuIFRoaXMgaXMgYSBnb29kIG1vdmU7IGEgbW9yZSBhY2N1cmF0ZSBZQU1MIHNwZWMgaXMgY3J1Y2lhbCBmb3IgZ2VuZXJhdGluZyBjb3JyZWN0IGFuZCBtYWludGFpbmFibGUgTmV0bGluayBjb2RlLlxuXG5UaGUgdXBkYXRlcyB0byB0aGUgYXV0by1nZW5lcmF0ZWQgZmlsZXMsIGBuZXRsaW5rX2dlbi5jYCBhbmQgYG5ldGxpbmtfZ2VuLmhgLCBhcmUgZXhwZWN0ZWQuIFRoZXnigJlyZSBkaXJlY3RseSBkZXJpdmVkIGZyb20gdGhlIFlBTUwgc3BlYy4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlIGZyb20gYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9ubF9wb2xpY3lgIHRvIGBkZXZsaW5rX2RsX3BvcnRfZnVuY3Rpb25fc2V0X25sX3BvbGljeWAgYW5kIHRoZSBiaXRtYXNrIGNvbnN0cmFpbnQgZm9yIHJlbG9hZCBsaW1pdHMgaW4gYGRldmxpbmtfcmVsb2FkX25sX3BvbGljeWAgYXJlIHNpbXBseSB0aGUgZG93bnN0cmVhbSBlZmZlY3RzIG9mIHJlZmluaW5nIHRoZSBZQU1MLlxuXG5UaGUgbW9zdCBpbnRlcmVzdGluZyBwYXJ0IGlzIGluIGBuZXQvZGV2bGluay9wb3J0LmNgLiBJdCdzIGNsZWFuaW5nIHVwIHRoZSBjb2RlIGJ5IGRlZHVwbGljYXRpbmcgdGhlIHBvbGljeSwgcmVwbGFjaW5nIHRoZSBtYW51YWxseSBkZWZpbmVkIGBkZXZsaW5rX2Z1bmN0aW9uX25sX3BvbGljeWAgd2l0aCB0aGUgYXV0by1nZW5lcmF0ZWQgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5YCB3aXRoaW4gdGhlIGBkZXZsaW5rX3BvcnRfZnVuY3Rpb25fc2V0KClgIGZ1bmN0aW9uLiBUaGlzIGltcHJvdmVzIG1haW50YWluYWJpbGl0eSBhbmQgZW5zdXJlcyBjb25zaXN0ZW5jeS5cblxuTm93LCBsZXQncyBhZGRyZXNzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBhcmUgdGhlcmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBCYXNlZCBvbiBteSByZXZpZXcsIHRoZSBwYXRjaCBzZWVtcyB0byBiZSBxdWl0ZSBzYWZlLiBObyBtZW1vcnkgaXMgYWxsb2NhdGVkIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24sIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBkb24ndCBzZWUgYW55IG9idmlvdXMgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlIGVpdGhlci4gVGhlIHVzZSBvZiBgbmxhX3BhcnNlX25lc3RlZGAgZm9yIHBhcnNpbmcgbmVzdGVkIE5ldGxpbmsgYXR0cmlidXRlcyBwcm92aWRlcyBhIHJvYnVzdCBzb2x1dGlvbiwgc2luY2UgaXQgemVyb2VzIG91dCB0aGUgYHRiYCBzdHJ1Y3QsIHdoaWNoIGlzIGVzc2VudGlhbC4gVGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBmb2N1c2VkIG9uIE5ldGxpbmsgYXR0cmlidXRlIHZhbGlkYXRpb24gYW5kIGRvY3VtZW50YXRpb24sIHdoaWNoIHNob3VsZCByZWR1Y2UgdGhlIGNoYW5jZSBmb3IgZXJyb3JzLiBFeGlzdGluZyBOZXRsaW5rIHBhcnNpbmcgbWVjaGFuaXNtcywgYW5kIEtBU0FOLCBzZWVtIHRvIGNhdGNoIGFueSBvdXQtb2YtYm91bmRzIGFjY2Vzcy5cblxuU28sIHRvIHN1bW1hcml6ZSBhbmQgYW5zd2VyIG15IG93biBxdWVzdGlvbnM6XG5cbiogICBEb2VzIHRoaXMgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gTm8uIFRoZSBwYXRjaCBsb29rcyB2ZXJ5IHNhZmUgb24gdGhhdCBmcm9udC5cbiogICBUaGUgc3RhbmRhcmQgS0FTQU4gYW5kIFVCU0FOIGJ1aWxkcyBzaG91bGQgZWFzaWx5IGJlIGFibGUgdG8gZGV0ZWN0IGFueSBidWZmZXIgb3ZlcnJ1bnMgb3IgdHlwZSBpc3N1ZXMgaWYgdGhleSBzb21laG93IGV4aXN0ZWQuXG4qICAgTmVlZHNLTVNBTiBzaG91bGQgYmUgZmFsc2UuXG5cbkZpbmFsbHksIGp1c3QgdG8gYmUgc3VyZTpcblxuYE5lZWRzS01TQU5gOiBmYWxzZVxuYEtNU0FOUmVhc29uaW5nYDogVGhlIHJlYXNvbmluZyBpcyBjbGVhci4gS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMDIsIk91dHB1dFRva2VucyI6MjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjQ3OjE5Ljg0NjczMDA1NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIHVwZGF0ZXMgdGhlIGRldmxpbmsgTmV0bGluayBZQU1MIHNwZWNpZmljYXRpb24gKERvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9kZXZsaW5rLnlhbWwpIGFuZCB0aGUgY29ycmVzcG9uZGluZyBhdXRvLWdlbmVyYXRlZCBOZXRsaW5rIHBvbGljaWVzIChuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5jLCBuZXQvZGV2bGluay9uZXRsaW5rX2dlbi5oKSwgYW5kIHJlZmFjdG9ycyBuZXQvZGV2bGluay9wb3J0LmMgdG8gdXNlIHRoZSBnZW5lcmF0ZWQgYGRldmxpbmtfZGxfcG9ydF9mdW5jdGlvbl9zZXRfbmxfcG9saWN5YCBpbnN0ZWFkIG9mIGEgZHVwbGljYXRlZCBzdGF0aWMgcG9saWN5LlxcblxcblRoZXNlIGNoYW5nZXMgc3RyaWN0bHkgcGVydGFpbiB0byBOZXRsaW5rIG1lc3NhZ2UgcG9saWN5IHZhbGlkYXRpb24sIHNjaGVtYSBkZXNjcmlwdGlvbnMsIGFuZCBhdHRyaWJ1dGUgcGFyc2luZy4gVGhlIGFycmF5IGB0YmAgcGFzc2VkIHRvIGBubGFfcGFyc2VfbmVzdGVkKClgIGlzIGFwcHJvcHJpYXRlbHkgc2l6ZWQgYW5kIGluaXRpYWxpemVkL3plcm9lZCBieSBgbmxhX3BhcnNlKClgLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHJlYWRzLCBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UgYXJlIGludHJvZHVjZWQuIFN0YW5kYXJkIHNhbml0aXplcnMgKEtBU0FOKSBhbmQgTmV0bGluayBwYXJzZXIgY2hlY2tzIGFyZSBzdWZmaWNpZW50OyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgdXBkYXRlcyB0aGUgZGV2bGluayBOZXRsaW5rIFlBTUwgc3BlY2lmaWNhdGlvbiAoRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL2RldmxpbmsueWFtbCkgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGF1dG8tZ2VuZXJhdGVkIE5ldGxpbmsgcG9saWNpZXMgKG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmMsIG5ldC9kZXZsaW5rL25ldGxpbmtfZ2VuLmgpLCBhbmQgcmVmYWN0b3JzIG5ldC9kZXZsaW5rL3BvcnQuYyB0byB1c2UgdGhlIGdlbmVyYXRlZCBgZGV2bGlua19kbF9wb3J0X2Z1bmN0aW9uX3NldF9ubF9wb2xpY3lgIGluc3RlYWQgb2YgYSBkdXBsaWNhdGVkIHN0YXRpYyBwb2xpY3kuXFxuXFxuVGhlc2UgY2hhbmdlcyBzdHJpY3RseSBwZXJ0YWluIHRvIE5ldGxpbmsgbWVzc2FnZSBwb2xpY3kgdmFsaWRhdGlvbiwgc2NoZW1hIGRlc2NyaXB0aW9ucywgYW5kIGF0dHJpYnV0ZSBwYXJzaW5nLiBUaGUgYXJyYXkgYHRiYCBwYXNzZWQgdG8gYG5sYV9wYXJzZV9uZXN0ZWQoKWAgaXMgYXBwcm9wcmlhdGVseSBzaXplZCBhbmQgaW5pdGlhbGl6ZWQvemVyb2VkIGJ5IGBubGFfcGFyc2UoKWAuIE5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMsIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZSBhcmUgaW50cm9kdWNlZC4gU3RhbmRhcmQgc2FuaXRpemVycyAoS0FTQU4pIGFuZCBOZXRsaW5rIHBhcnNlciBjaGVja3MgYXJlIHN1ZmZpY2llbnQ7IGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslsm[1] Phase: Succeeded StartedAt: 2026-09-10 20:47:31 +0000 UTC FinishedAt: 2026-09-10 20:47:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-10 20:47:31 +0000 UTC FinishedAt: 2026-09-10 20:47:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2] Phase: Succeeded StartedAt: 2026-09-10 20:47:31 +0000 UTC FinishedAt: 2026-09-11 00:27:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-10 20:47:31 +0000 UTC FinishedAt: 2026-09-11 00:27:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-10 20:47:31 +0000 UTC FinishedAt: 2026-09-10 20:47:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-10 20:47:31 +0000 UTC FinishedAt: 2026-09-10 20:47:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtslsm/series-workflowtslsm-convert-artifact-738326951/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-10 20:47:41 +0000 UTC FinishedAt: 2026-09-10 21:04:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-10 20:47:41 +0000 UTC FinishedAt: 2026-09-10 21:04:12 +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:*f14e78d0-2b8f-4b2b-bbd5-abd1ef54a589,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-workflowtslsm/series-workflowtslsm-convert-artifact-738326951/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": "30b9ea13-8a8d-4fed-8ffd-7c3548ec1b5e", "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-workflowtslsm/series-workflowtslsm-build-action-4210706749/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-10 20:47:41 +0000 UTC FinishedAt: 2026-09-10 21:04:02 +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:*f14e78d0-2b8f-4b2b-bbd5-abd1ef54a589,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-workflowtslsm/series-workflowtslsm-convert-artifact-738326951/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": "30b9ea13-8a8d-4fed-8ffd-7c3548ec1b5e", "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-workflowtslsm/series-workflowtslsm-build-action-4210706749/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-10 21:04:12 +0000 UTC FinishedAt: 2026-09-10 21:04:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-10 21:04:12 +0000 UTC FinishedAt: 2026-09-10 21:04:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-10 21:04:12 +0000 UTC FinishedAt: 2026-09-10 21:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-10 21:04:12 +0000 UTC FinishedAt: 2026-09-10 21:04:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtslsm/series-workflowtslsm-convert-artifact-2334697046/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-10 21:04:22 +0000 UTC FinishedAt: 2026-09-10 21:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-10 21:04:22 +0000 UTC FinishedAt: 2026-09-10 21:06:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*30b9ea13-8a8d-4fed-8ffd-7c3548ec1b5e,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-workflowtslsm/series-workflowtslsm-build-action-4210706749/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-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-10 21:06:16 +0000 UTC FinishedAt: 2026-09-10 21:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-10 21:06:16 +0000 UTC FinishedAt: 2026-09-10 21:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-10 21:06:16 +0000 UTC FinishedAt: 2026-09-10 21:22:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-10 21:06:16 +0000 UTC FinishedAt: 2026-09-10 21:22:44 +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:*f14e78d0-2b8f-4b2b-bbd5-abd1ef54a589,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-workflowtslsm/series-workflowtslsm-convert-artifact-2334697046/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": "ecdd9859-f4af-4ccd-919a-6a6da5fb028e", "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-workflowtslsm/series-workflowtslsm-build-action-3151842394/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-10 21:06:16 +0000 UTC FinishedAt: 2026-09-10 21:22:34 +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:*f14e78d0-2b8f-4b2b-bbd5-abd1ef54a589,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-workflowtslsm/series-workflowtslsm-convert-artifact-2334697046/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": "ecdd9859-f4af-4ccd-919a-6a6da5fb028e", "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-workflowtslsm/series-workflowtslsm-build-action-3151842394/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-10 21:22:44 +0000 UTC FinishedAt: 2026-09-10 21:22:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-10 21:22:44 +0000 UTC FinishedAt: 2026-09-10 21:22:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-10 21:22:44 +0000 UTC FinishedAt: 2026-09-10 21:24:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-10 21:22:44 +0000 UTC FinishedAt: 2026-09-10 21:24:28 +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:*ecdd9859-f4af-4ccd-919a-6a6da5fb028e,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-workflowtslsm/series-workflowtslsm-build-action-3151842394/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-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-10 21:24:37 +0000 UTC FinishedAt: 2026-09-11 00:27:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-10 21:24:37 +0000 UTC FinishedAt: 2026-09-11 00:27:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"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:*30b9ea13-8a8d-4fed-8ffd-7c3548ec1b5e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ecdd9859-f4af-4ccd-919a-6a6da5fb028e,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-workflowtslsm/series-workflowtslsm-build-action-4210706749/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-workflowtslsm/series-workflowtslsm-build-action-3151842394/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-10 21:24:37 +0000 UTC FinishedAt: 2026-09-10 21:24:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-10 21:24:37 +0000 UTC FinishedAt: 2026-09-10 21:24:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"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-workflowtslsm/series-workflowtslsm-convert-artifact-2706186491/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-10 21:24:37 +0000 UTC FinishedAt: 2026-09-10 21:24:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-10 21:24:37 +0000 UTC FinishedAt: 2026-09-10 21:24:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-10 21:24:37 +0000 UTC FinishedAt: 2026-09-10 21:24:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-10 21:24:47 +0000 UTC FinishedAt: 2026-09-11 00:27:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtslsm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["devlink_port_function_set","devlink_nl_port_set_doit","devlink_nl_reload_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0abe8777490ebc008635ecb20297761d1b317697","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVLINK","NETDEVSIM"],"series_id":"1209b9ee-c1ef-4aa8-8eff-6668a9263919","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-10 21:24:47 +0000 UTC FinishedAt: 2026-09-11 00:27:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*30b9ea13-8a8d-4fed-8ffd-7c3548ec1b5e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ecdd9859-f4af-4ccd-919a-6a6da5fb028e,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-workflowtslsm/series-workflowtslsm-build-action-4210706749/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-workflowtslsm/series-workflowtslsm-build-action-3151842394/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-workflowtslsm/series-workflowtslsm-convert-artifact-2706186491/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,}