Name: series-workflown7rfn Phase: Failed StartedAt: 2026-09-09 10:04:38 +0000 UTC FinishedAt: 2026-09-09 10:50:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflown7rfn[0] Phase: Succeeded StartedAt: 2026-09-09 10:04:38 +0000 UTC FinishedAt: 2026-09-09 10:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflown7rfn[0].run-triage Phase: Succeeded StartedAt: 2026-09-09 10:04:38 +0000 UTC FinishedAt: 2026-09-09 10:50:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgZGVidWcvZXJyb3IgbG9nIG1lc3NhZ2UgKGJwaHlfZXJyKSByZXBvcnRpbmcgY29ubmVjdGlvbiBmYWlsdXJlIGRldGFpbHMuIEl0IGludHJvZHVjZXMgcHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93LCBzdGF0ZSBtYW5hZ2VtZW50LCBvciBkYXRhIHN0cnVjdHVyZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2NlODkyZDQ5OGEwNDJiY2QwZDllMmRkODU5MmFlNzIxZDQyOGJiZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMTA6NDk6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuaW5kZXggODcyYzQ4ODA2ZDA5MS4uNGY0OGRiNmQ4NjdlYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuQEAgLTY1MjIsNiAmIzQzOzY1MjIsOCBAQCBicmNtZl9ic3NfY29ubmVjdF9kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRcdFx0Y2xlYXJfYml0KEJSQ01GX1ZJRl9TVEFUVVNfQVNTT0NfU1VDQ0VTUyxcbiBcdFx0XHRcdCAgXHUwMDI2aWZwLVx1MDAzZXZpZi1cdTAwM2VzbWVfc3RhdGUpO1xuIFx0XHRcdGNvbm5fcGFyYW1zLnN0YXR1cyA9IFdMQU5fU1RBVFVTX0FVVEhfVElNRU9VVDtcbiYjNDM7XHRcdFx0YnBoeV9lcnIoaWZwLVx1MDAzZWRydnIsIFwmIzM0O2Nvbm5lY3QgZmFpbGVkOiBldmVudCAldSBzdGF0dXMgJXUgcmVhc29uICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCBlLVx1MDAzZWV2ZW50X2NvZGUsIGUtXHUwMDNlc3RhdHVzLCBlLVx1MDAzZXJlYXNvbik7XG4gXHRcdH1cbiBcdFx0Y29ubl9wYXJhbXMubGlua3NbMF0uYnNzaWQgPSBwcm9maWxlLVx1MDAzZWJzc2lkO1xuIFx0XHRjb25uX3BhcmFtcy5yZXFfaWUgPSBjb25uX2luZm8tXHUwMDNlcmVxX2llO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIGRlYnVnL2Vycm9yIGxvZyBtZXNzYWdlIChicGh5X2VycikgcmVwb3J0aW5nIGNvbm5lY3Rpb24gZmFpbHVyZSBkZXRhaWxzLiBJdCBpbnRyb2R1Y2VzIHB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdywgc3RhdGUgbWFuYWdlbWVudCwgb3IgZGF0YSBzdHJ1Y3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNjZTg5MmQ0OThhMDQyYmNkMGQ5ZTJkZDg1OTJhZTcyMWQ0MjhiYmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDEwOjQ5OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwppbmRleCA4NzJjNDg4MDZkMDkxLi40ZjQ4ZGI2ZDg2N2ViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwpAQCAtNjUyMiw2ICYjNDM7NjUyMiw4IEBAIGJyY21mX2Jzc19jb25uZWN0X2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZywKIAkJCWNsZWFyX2JpdChCUkNNRl9WSUZfU1RBVFVTX0FTU09DX1NVQ0NFU1MsCiAJCQkJICAmYW1wO2lmcC0mZ3Q7dmlmLSZndDtzbWVfc3RhdGUpOwogCQkJY29ubl9wYXJhbXMuc3RhdHVzID0gV0xBTl9TVEFUVVNfQVVUSF9USU1FT1VUOwomIzQzOwkJCWJwaHlfZXJyKGlmcC0mZ3Q7ZHJ2ciwgJiMzNDtjb25uZWN0IGZhaWxlZDogZXZlbnQgJXUgc3RhdHVzICV1IHJlYXNvbiAldVxuJiMzNDssCiYjNDM7CQkJCSBlLSZndDtldmVudF9jb2RlLCBlLSZndDtzdGF0dXMsIGUtJmd0O3JlYXNvbik7CiAJCX0KIAkJY29ubl9wYXJhbXMubGlua3NbMF0uYnNzaWQgPSBwcm9maWxlLSZndDtic3NpZDsKIAkJY29ubl9wYXJhbXMucmVxX2llID0gY29ubl9pbmZvLSZndDtyZXFfaWU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTUKCQkJCQkJCW91dHB1dDogNTkKCQkJCQkJCXRob3VnaHRzOiA0NTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQnJvYWRjb20gV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFuYWx5emUgdGhlIGNoYW5nZXMgbWFkZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNgLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBlaXRoZXIgcmVhZGluZyB0aGUgZmlsZSBkaXJlY3RseSBvciB1c2luZyBgZ3JlcHBlcmAgdG8gcXVpY2tseSBnZXQgYW4gb3ZlcnZpZXcgb2Ygd2hhdCBjaGFuZ2VkLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgYWN0dWFsIGRpZmYuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhcm91bmQgbGluZSA2NTIyLiBGcm9tIGEgY3Vyc29yeSBnbGFuY2UsIGl0IGxvb2tzIGxpa2UgYSBuZXcgZXJyb3IgbWVzc2FnZSBpcyBiZWluZyBhZGRlZCB3aXRoaW4gdGhlIGBicmNtZl9ic3NfY29ubmVjdF9kb25lYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIGEgY29ubmVjdGlvbiBmYWlsdXJlIGlzIGJlaW5nIHJlcG9ydGVkIHdpdGggdGhlIGFkZGl0aW9uIG9mIGEgbmV3IGBicGh5X2VycmAgc3RhdGVtZW50LiBUaGUgbG9nZ2luZyBpcyBjYXB0dXJpbmcgdGhlIGV2ZW50IGNvZGUsIHN0YXR1cywgYW5kIHJlYXNvbiBpbiB0aGUgZXZlbnQgb2YgYSB0aW1lb3V0LiBUaGlzIGlzIGxpa2VseSB2YWx1YWJsZSBmb3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gaXNzdWVzLgoKSSYjMzk7bGwgcXVpY2tseSBjaGVjayB3aGF0IHRoZSBgYnBoeV9lcnJgIG1hY3JvIGlzIGFjdHVhbGx5IGRvaW5nLiBJJiMzOTtsbCByZWFkIGFyb3VuZCBsaW5lIDY1MjIgb2YgdGhlIHNvdXJjZS4gVGhpcyB0eXBlIG9mIGFkZGVkIGxvZ2dpbmcgaXMgY3JpdGljYWwgZm9yIGRpYWdub3N0aWNzLiBJdCYjMzk7cyBvZnRlbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgZnJ1c3RyYXRpbmcgYnVnIGFuZCBhIHNvbHZhYmxlIHByb2JsZW0uIEl0JiMzOTtzIGEgc29saWQgYWRkaXRpb24gaWYgaXQgaW5jcmVhc2VzIHRoZSBncmFudWxhcml0eSBvZiB0aGUgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTA6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY1MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NjUxMDpcdFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChCUkNNRl9WSUZfU1RBVFVTX0NPTk5FQ1RJTkcsXG42NTExOlx0XHRcdFx0ICAgICAgIFx1MDAyNmlmcC1cdTAwM2V2aWYtXHUwMDNlc21lX3N0YXRlKSkge1xuNjUxMjpcdFx0XHRtZW1zZXQoXHUwMDI2Y29ubl9wYXJhbXMsIDAsIHNpemVvZihjb25uX3BhcmFtcykpO1xuNjUxMzpcdFx0XHRpZiAoY29tcGxldGVkKSB7XG42NTE0Olx0XHRcdFx0YnJjbWZfZ2V0X2Fzc29jX2llcyhjZmcsIGlmcCk7XG42NTE1Olx0XHRcdFx0YnJjbWZfdXBkYXRlX2Jzc19pbmZvKGNmZywgaWZwKTtcbjY1MTY6XHRcdFx0XHRzZXRfYml0KEJSQ01GX1ZJRl9TVEFUVVNfQ09OTkVDVEVELFxuNjUxNzpcdFx0XHRcdFx0XHUwMDI2aWZwLVx1MDAzZXZpZi1cdTAwM2VzbWVfc3RhdGUpO1xuNjUxODpcdFx0XHRcdGNvbm5fcGFyYW1zLnN0YXR1cyA9IFdMQU5fU1RBVFVTX1NVQ0NFU1M7XG42NTE5Olx0XHRcdH0gZWxzZSB7XG42NTIwOlx0XHRcdFx0Y2xlYXJfYml0KEJSQ01GX1ZJRl9TVEFUVVNfRUFQX1NVQ0NFU1MsXG42NTIxOlx0XHRcdFx0XHQgIFx1MDAyNmlmcC1cdTAwM2V2aWYtXHUwMDNlc21lX3N0YXRlKTtcbjY1MjI6XHRcdFx0XHRjbGVhcl9iaXQoQlJDTUZfVklGX1NUQVRVU19BU1NPQ19TVUNDRVNTLFxuNjUyMzpcdFx0XHRcdFx0ICBcdTAwMjZpZnAtXHUwMDNldmlmLVx1MDAzZXNtZV9zdGF0ZSk7XG42NTI0Olx0XHRcdFx0Y29ubl9wYXJhbXMuc3RhdHVzID0gV0xBTl9TVEFUVVNfQVVUSF9USU1FT1VUO1xuNjUyNTpcdFx0XHRcdGJwaHlfZXJyKGlmcC1cdTAwM2VkcnZyLCBcJiMzNDtjb25uZWN0IGZhaWxlZDogZXZlbnQgJXUgc3RhdHVzICV1IHJlYXNvbiAldVxcblwmIzM0OyxcbjY1MjY6XHRcdFx0XHRcdCBlLVx1MDAzZWV2ZW50X2NvZGUsIGUtXHUwMDNlc3RhdHVzLCBlLVx1MDAzZXJlYXNvbik7XG42NTI3Olx0XHRcdH1cbjY1Mjg6XHRcdFx0Y29ubl9wYXJhbXMubGlua3NbMF0uYnNzaWQgPSBwcm9maWxlLVx1MDAzZWJzc2lkO1xuNjUyOTpcdFx0XHRjb25uX3BhcmFtcy5yZXFfaWUgPSBjb25uX2luZm8tXHUwMDNlcmVxX2llO1xuNjUzMDpcdFx0XHRjb25uX3BhcmFtcy5yZXFfaWVfbGVuID0gY29ubl9pbmZvLVx1MDAzZXJlcV9pZV9sZW47XG42NTMxOlx0XHRcdGNvbm5fcGFyYW1zLnJlc3BfaWUgPSBjb25uX2luZm8tXHUwMDNlcmVzcF9pZTtcbjY1MzI6XHRcdFx0Y29ubl9wYXJhbXMucmVzcF9pZV9sZW4gPSBjb25uX2luZm8tXHUwMDNlcmVzcF9pZV9sZW47XG42NTMzOlx0XHRcdGNmZzgwMjExX2Nvbm5lY3RfZG9uZShuZGV2LCBcdTAwMjZjb25uX3BhcmFtcywgR0ZQX0tFUk5FTCk7XG42NTM0Olx0XHRcdGJyY21mX2RiZyhDT05OLCBcJiMzNDtSZXBvcnQgY29ubmVjdCByZXN1bHQgLSBjb25uZWN0aW9uICVzXFxuXCYjMzQ7LFxuNjUzNTpcdFx0XHRcdCAgY29tcGxldGVkID8gXCYjMzQ7c3VjY2VlZGVkXCYjMzQ7IDogXCYjMzQ7ZmFpbGVkXCYjMzQ7KTtcbjY1MzY6XHRcdH1cbjY1Mzc6XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7RXhpdFxcblwmIzM0Oyk7XG42NTM4Olx0XHRyZXR1cm4gMDtcbjY1Mzk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTA6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQzNgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgYnBoeV9lcnJgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgYnBoeV9lcnJgIHZhcmlhYmxlIGJldHRlci4gSXQmIzM5O3MgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBzeXN0ZW0mIzM5O3MgYmVoYXZpb3IgYW5kIHBvdGVudGlhbCBmYWlsdXJlIG1vZGVzLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmVmZXJlbmNlIGl0cyBkZWZpbml0aW9uLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgSSBrbm93IHdoYXQgaXQgcmVmZXJlbmNlcywgdGhlIGRvbWFpbiBvZiB2YWx1ZXMsIGFuZCB3aGF0IHRoZSBwb3NzaWJsZSByYW1pZmljYXRpb25zIG9mIHZhcmlvdXMgc3RhdGVzIG1heSBiZS4gTXkgcGFzdCBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgdGhlc2UgdHlwZXMgb2YgbmFtZXMgYXJlIG9mdGVuIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUsIGludGVycnVwdHMsIG9yIGxvdy1sZXZlbCBpbnRlcmZhY2VzLCBzbyBhIHF1aWNrIGNoZWNrIG9mIGl0cyBkZWZpbml0aW9uIHNob3VsZCBwcm92aWRlIGNyaXRpY2FsIGNvbnRleHQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLi4uIEkgc2hvdWxkIGJlIGFibGUgdG8gdHJhY2sgZG93biBpdHMgcHVycG9zZSBhbmQgdXNlIGNhc2Ugd2l0aG91dCBtdWNoIHRyb3VibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTA6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBicGh5X2VyciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZGVidWcuaD00MD12b2lkIF9fYnJjbWZfZXJyKHN0cnVjdCBicmNtZl9idXMgKmJ1cywgY29uc3QgY2hhciAqZnVuYywgY29uc3QgY2hhciAqZm10LCAuLi4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9kZWJ1Zy5oLTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2RlYnVnLmg6NTQ6I2RlZmluZSBicGh5X2VycihkcnZyLCBmbXQsIC4uLilcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9kZWJ1Zy5oLTU1LVx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MjIKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSB3ZSBnby4uLgoKKipEaXZpbmcgaW50byB0aGUgYnJjbWZtYWMgRGVidWcgSGVhZGVyKioKCkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2RlYnVnLmhgLiBJJiMzOTttIGd1ZXNzaW5nIHRoaXMgZmlsZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZpbmVyIHBvaW50cyBvZiBkZWJ1Z2dpbmcgdGhlIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgYnJjbWZtYWMgaW50ZXJmYWNlLiBDb25zaWRlcmluZyBteSBleHBlcnRpc2UsIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgaGVhZGVyIHRvIGNvbnRhaW4gYSB0cmVhc3VyZSB0cm92ZSBvZiBtYWNyb3MsIGRlZmluaXRpb25zLCBhbmQgcGVyaGFwcyBldmVuIHNvbWUgZnVuY3Rpb24gcHJvdG90eXBlcyByZWxhdGVkIHRvIGxvZ2dpbmcsIHRyYWNpbmcsIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZToKCiogICAqKkxvZyBsZXZlbHM6KiogSG93IGdyYW51bGFyIGNhbiBJIGdldCB3aXRoIHRoZSBkZWJ1ZyBvdXRwdXQ/IElzIHRoZXJlIHN1cHBvcnQgZm9yIGxldmVscyBsaWtlIERFQlVHLCBJTkZPLCBXQVJOLCBFUlJPUiwgYW5kIG1heWJlIGV2ZW4gbW9yZSBzcGVjaWFsaXplZCBvbmVzPwoqICAgKipDb25kaXRpb25hbCBjb21waWxhdGlvbjoqKiBBcmUgdGhlcmUgYCNpZmRlZmAgYmxvY2tzIGNvbnRyb2xsZWQgYnkga2VybmVsIGNvbmZpZyBvcHRpb25zIG9yIGRlYnVnIGZsYWdzIHRoYXQgc2VsZWN0aXZlbHkgaW5jbHVkZSBvciBleGNsdWRlIGRlYnVnIGNvZGU/IFRoaXMgaXMgdXN1YWxseSBjcnVjaWFsIGZvciBwZXJmb3JtYW5jZSBvbiBwcm9kdWN0aW9uIHN5c3RlbXMuCiogICAqKlRyYWNlcG9pbnRzL0luc3RydW1lbnRhdGlvbjoqKiBJcyB0aGVyZSBhbnkgZXZpZGVuY2Ugb2YgdHJhY2Vwb2ludHMgb3Igb3RoZXIgaW5zdHJ1bWVudGF0aW9uIHRlY2huaXF1ZXMgZGVzaWduZWQgdG8gY2FwdHVyZSBwZXJmb3JtYW5jZSBkYXRhIG9yIGNyaXRpY2FsIGV2ZW50cyB3aXRoaW4gdGhlIGRyaXZlcj8KKiAgICoqRGF0YSBzdHJ1Y3R1cmVzIGZvciBsb2dnaW5nOioqIFdoYXQga2luZCBvZiBzdHJ1Y3R1cmVzIGFyZSB1c2VkIHRvIGVuY2Fwc3VsYXRlIGRlYnVnIG1lc3NhZ2VzPyBBcmUgdGhleSBlZmZpY2llbnQ/IERvIHRoZXkgc3VwcG9ydCB0aW1lc3RhbXBzLCB0aHJlYWQgSURzLCBhbmQgb3RoZXIgdXNlZnVsIG1ldGFkYXRhPwoqICAgKipFcnJvciBjb2RlIGRlZmluaXRpb25zOioqIEFyZSB0aGVyZSBkZXRhaWxlZCBlcnJvciBjb2RlcyB0byBoZWxwIGRpYWdub3NlIHdpcmVsZXNzIGNvbm5lY3Rpb24gZmFpbHVyZXM/CiogICAqKlNwZWNpYWxpemVkIGRlYnVnIGZ1bmN0aW9uczoqKiBBcmUgdGhlcmUgZnVuY3Rpb25zIGRlc2lnbmVkIGZvciBkdW1waW5nIHNwZWNpZmljIGRyaXZlciBvciBoYXJkd2FyZSBzdGF0ZSwgbGlrZSByZWdpc3RlciBjb250ZW50cyBvciBmaXJtd2FyZSB2YXJpYWJsZXM/CgpFc3NlbnRpYWxseSwgSSBleHBlY3QgdGhpcyBoZWFkZXIgdG8gbGF5IHRoZSBncm91bmR3b3JrIGZvciBob3cgdGhlIGRyaXZlciYjMzk7cyBpbnRlcm5hbHMgY2FuIGJlIGV4YW1pbmVkIGFuZCB0cm91Ymxlc2hvb3RlZC4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O3Mgd2VsbC1vcmdhbml6ZWQsIHdlbGwtY29tbWVudGVkLCBhbmQgcHJvdmlkZXMgYSBjbGVhciBmcmFtZXdvcmsgZm9yIGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgZGVidWdnaW5nIGZlYXR1cmVzLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNvbXByZWhlbnNpdmUgcGljdHVyZSBvZiB3aGF0IGRlYnVnZ2luZyB0b29scyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSYjMzk7cmUgaW50ZW5kZWQgdG8gYmUgdXNlZC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9kZWJ1Zy5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0MDpcdHZvaWQgX19icmNtZl9lcnIoc3RydWN0IGJyY21mX2J1cyAqYnVzLCBjb25zdCBjaGFyICpmdW5jLCBjb25zdCBjaGFyICpmbXQsIC4uLik7XG4gIDQxOlx0LyogTWFjcm8gZm9yIGVycm9yIG1lc3NhZ2VzLiBXaGVuIGRlYnVnZ2luZyAvIHRyYWNpbmcgdGhlIGRyaXZlciBhbGwgZXJyb3JcbiAgNDI6XHQgKiBtZXNzYWdlcyBhcmUgaW1wb3J0YW50IHRvIHVzLlxuICA0MzpcdCAqL1xuICA0NDpcdCNpZm5kZWYgYnJjbWZfZXJyXG4gIDQ1Olx0I2RlZmluZSBicmNtZl9lcnIoZm10LCAuLi4pXHRcdFx0XHRcdFx0XFxcbiAgNDY6XHRcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XFxcbiAgNDc6XHRcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0JSQ01EQkcpIHx8XHRcdFx0XFxcbiAgNDg6XHRcdFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0JSQ01fVFJBQ0lORykgfHxcdFx0XHRcXFxuICA0OTpcdFx0XHQgICAgbmV0X3JhdGVsaW1pdCgpKVx0XHRcdFx0XHRcXFxuICA1MDpcdFx0XHRcdF9fYnJjbWZfZXJyKE5VTEwsIF9fZnVuY19fLCBmbXQsICMjX19WQV9BUkdTX18pO1xcXG4gIDUxOlx0XHR9IHdoaWxlICgwKVxuICA1MjpcdCNlbmRpZlxuICA1MzpcdFxuICA1NDpcdCNkZWZpbmUgYnBoeV9lcnIoZHJ2ciwgZm10LCAuLi4pXHRcdFx0XHRcdFxcXG4gIDU1Olx0XHRkbyB7XHRcdFx0XHRcdFx0XHRcdFxcXG4gIDU2Olx0XHRcdGlmIChJU19FTkFCTEVEKENPTkZJR19CUkNNREJHKSB8fFx0XHRcdFxcXG4gIDU3Olx0XHRcdCAgICBJU19FTkFCTEVEKENPTkZJR19CUkNNX1RSQUNJTkcpIHx8XHRcdFx0XFxcbiAgNTg6XHRcdFx0ICAgIG5ldF9yYXRlbGltaXQoKSlcdFx0XHRcdFx0XFxcbiAgNTk6XHRcdFx0XHR3aXBoeV9lcnIoKGRydnIpLVx1MDAzZXdpcGh5LCBcJiMzNDslczogXCYjMzQ7IGZtdCwgX19mdW5jX18sXHRcXFxuICA2MDpcdFx0XHRcdFx0ICAjI19fVkFfQVJHU19fKTtcdFx0XHRcXFxuICA2MTpcdFx0fSB3aGlsZSAoMClcbiAgNjI6XHRcbiAgNjM6XHQjZGVmaW5lIGJwaHlfaW5mb19vbmNlKGRydnIsIGZtdCwgLi4uKVx0XHRcdFx0XHRcXFxuICA2NDpcdFx0d2lwaHlfaW5mb19vbmNlKChkcnZyKS1cdTAwM2V3aXBoeSwgXCYjMzQ7JXM6IFwmIzM0OyBmbXQsIF9fZnVuY19fLFx0XHRcXFxuICA2NTpcdFx0XHRcdCMjX19WQV9BUkdTX18pXG4gIDY2Olx0XG4gIDY3Olx0I2lmIGRlZmluZWQoREVCVUcpIHx8IGRlZmluZWQoQ09ORklHX0JSQ01fVFJBQ0lORylcbiAgNjg6XHRcbiAgNjk6XHQvKiBGb3IgZGVidWcvdHJhY2luZyBwdXJwb3NlcyB0cmVhdCBpbmZvIG1lc3NhZ2VzIGFzIGVycm9ycyAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MjYKCQkJCQkJCW91dHB1dDogMTYKCQkJCQkJCXRob3VnaHRzOiAzMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIERlY2lzaW9uKioKCk9rYXksIHRpbWUgdG8gbWFrZSBhIGNhbGwuIExldCYjMzk7cyBydW4gZG93biB0aGUgY2hlY2tsaXN0IGZvciByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAg4oCTIHRob3NlIG5lZ2F0aXZlIGNyaXRlcmlhLiBUaGUgY29yZSBpczogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzJiMzNDsuIEdvdCBpdC4KCkxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgYWxsIGl0IGFkZHMgaXMgdGhpczoKCmBgYGMKJiM0MzsJCQlicGh5X2VycihpZnAtJmd0O2RydnIsICYjMzQ7Y29ubmVjdCBmYWlsZWQ6IGV2ZW50ICV1IHN0YXR1cyAldSByZWFzb24gJXVcbiYjMzQ7LAomIzQzOwkJCQkgZS0mZ3Q7ZXZlbnRfY29kZSwgZS0mZ3Q7c3RhdHVzLCBlLSZndDtyZWFzb24pOwpgYGAKClJpZ2h0LCBgYnBoeV9lcnJgLiBJIGtub3cgdGhhdCBmdW5jdGlvbi4gSXQgY2FsbHMgYHdpcGh5X2VycmAsIHdoaWNoIGluIHR1cm4gZm9ybWF0cyBhIG1lc3NhZ2UgYW5kIHByaW50cyBpdCB1c2luZyBgZGV2X2VycmAgb24gYHdpcGh5LSZndDtkZXZgLiBJdCYjMzk7cyBkZWZpbml0ZWx5IGp1c3QgYSBsb2dnaW5nIHN0YXRlbWVudC4gSXQmIzM5O3Mgbm90IG1lc3Npbmcgd2l0aCBhbnkgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4gU28sIHVuZGVyIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBsaXN0LCB0aGF0IGZhbGxzICpzcXVhcmVseSogaW50byAmIzM0O1B1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuJiMzNDsKCkJ1dCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgc29tZXRoaW5nLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb21taXQgZm9yIGFueSAqb3RoZXIqIGNoYW5nZXMsIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIGNvbmZpcm0gdGhpcyBpcyAqYWxsKiB0aGUgcGF0Y2ggY29udGFpbnMuIEdvdHRhIGJlIGNlcnRhaW4gYmVmb3JlIEkgc2VuZCB0aGlzIGJhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Nvbm5lY3QgZmFpbGVkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvc3BhcmMva2VybmVsL3Zpb2hzLmM9NzY1PXZvaWQgdmlvX3BvcnRfdXAoc3RydWN0IHZpb19kcml2ZXJfc3RhdGUgKnZpbylcbi0tXG5hcmNoL3NwYXJjL2tlcm5lbC92aW9ocy5jLTc4OS1cdFx0aWYgKGVycilcbmFyY2gvc3BhcmMva2VybmVsL3Zpb2hzLmM6NzkwOlx0XHRcdHByaW50ayhLRVJOX1dBUk5JTkcgXCYjMzQ7JXM6IFBvcnQgJWx1IGNvbm5lY3QgZmFpbGVkLCBcJiMzNDtcbmFyY2gvc3BhcmMva2VybmVsL3Zpb2hzLmMtNzkxLVx0XHRcdCAgICAgICBcJiMzNDtlcnI9JWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYz0xNDI2PXN0YXRpYyB2b2lkIHNlbmRfZGlzY29ubmVjdHMoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0NDQtXHRcdFx0ZGV2X2VycihkaXNrX3RvX2RldihuYmQtXHUwMDNlZGlzayksXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE0NDU6XHRcdFx0XHRcJiMzNDtTZW5kIGRpc2Nvbm5lY3QgZmFpbGVkICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9ibG9jay9uYmQuYy0xNDQ2LVx0XHRtdXRleF91bmxvY2soXHUwMDI2bnNvY2stXHUwMDNldHhfbG9jayk7XG4tLVxuZHJpdmVycy9pbnB1dC9zZXJpby9zZXJpby5jPTU3Mj1zdGF0aWMgdm9pZCBzZXJpb19yZWNvbm5lY3Rfc3VidHJlZShzdHJ1Y3Qgc2VyaW8gKnJvb3QpXG4tLVxuZHJpdmVycy9pbnB1dC9zZXJpby9zZXJpby5jLTU5MS1cdFx0LypcbmRyaXZlcnMvaW5wdXQvc2VyaW8vc2VyaW8uYzo1OTI6XHRcdCAqIEVpdGhlciBpdCB3YXMgYSBsZWFmIG5vZGUgb3IgcmVjb25uZWN0IGZhaWxlZCBhbmQgaXRcbmRyaXZlcnMvaW5wdXQvc2VyaW8vc2VyaW8uYy01OTMtXHRcdCAqIGJlY2FtZSBhIGxlYWYgbm9kZS4gQ29udGludWUgcmVjb25uZWN0aW5nIHN0YXJ0aW5nIHdpdGhcbi0tXG5kcml2ZXJzL2lucHV0L3NlcmlvL3NlcmlvLmM9OTA1PXN0YXRpYyBpbnQgc2VyaW9fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2lucHV0L3NlcmlvL3NlcmlvLmMtOTEzLVx0XHRcdGlmIChlcnJvciBcdTAwMjZcdTAwMjYgZXJyb3IgIT0gLUVOT0VOVClcbmRyaXZlcnMvaW5wdXQvc2VyaW8vc2VyaW8uYzo5MTQ6XHRcdFx0XHRkZXZfd2FybihkZXYsIFwmIzM0O2Zhc3QgcmVjb25uZWN0IGZhaWxlZCB3aXRoIGVycm9yICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9pbnB1dC9zZXJpby9zZXJpby5jLTkxNS1cdFx0XHRcdFx0IGVycm9yKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYz0yMTY9c3RhdGljIGludCBtcGM1Mnh4X2ZlY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmMtMjI1LVx0XHRpZiAoIXBoeWRldikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM6MjI2Olx0XHRcdGRldl9lcnIoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCYjMzQ7b2ZfcGh5X2Nvbm5lY3QgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jLTIyNy1cdFx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pd2FycC5jPTMwMTk9cWVkX2l3YXJwX2Nvbm5lY3RfY29tcGxldGUoc3RydWN0IHFlZF9od2ZuICpwX2h3Zm4sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfaXdhcnAuYy0zMDI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfaXdhcnAuYzozMDMwOlx0XHQvKiBJZiBjb25uZWN0IGZhaWxlZCAtIHVwcGVyIGxheWVyIGRvZXNuJiMzOTt0IGtub3cgYWJvdXQgaXQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2l3YXJwLmMtMzAzMS1cdFx0aWYgKGZ3X3JldHVybl9jb2RlID09IFJETUFfUkVUVVJOX09LKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYz0xNjU2PXN0YXRpYyBpbnQgZW1hY191cChzdHJ1Y3QgZW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYy0xNjY1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jOjE2NjY6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O2VtYWNfcGh5X2Nvbm5lY3QgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYy0xNjY3LVx0XHRnb3RvIGVycl9wbV9wdXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NjQ5OT1icmNtZl9ic3NfY29ubmVjdF9kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjUyNC1cdFx0XHRjb25uX3BhcmFtcy5zdGF0dXMgPSBXTEFOX1NUQVRVU19BVVRIX1RJTUVPVVQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2NTI1Olx0XHRcdGJwaHlfZXJyKGlmcC1cdTAwM2VkcnZyLCBcJiMzNDtjb25uZWN0IGZhaWxlZDogZXZlbnQgJXUgc3RhdHVzICV1IHJlYXNvbiAldVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTY1MjYtXHRcdFx0XHQgZS1cdTAwM2VldmVudF9jb2RlLCBlLVx1MDAzZXN0YXR1cywgZS1cdTAwM2VyZWFzb24pO1xuLS1cbmRyaXZlcnMvcGxhdGZvcm0vcmFzcGJlcnJ5cGkvdmNoaXEtaW50ZXJmYWNlL3ZjaGlxX2FybS5jPTk0Mj12Y2hpcV9rZWVwYWxpdmVfdGhyZWFkX2Z1bmModm9pZCAqdilcbi0tXG5kcml2ZXJzL3BsYXRmb3JtL3Jhc3BiZXJyeXBpL3ZjaGlxLWludGVyZmFjZS92Y2hpcV9hcm0uYy05NjQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL3BsYXRmb3JtL3Jhc3BiZXJyeXBpL3ZjaGlxLWludGVyZmFjZS92Y2hpcV9hcm0uYzo5NjU6XHRcdGRldl9lcnIoc3RhdGUtXHUwMDNlZGV2LCBcJiMzNDtzdXNwZW5kOiAlczogdmNoaXFfY29ubmVjdCBmYWlsZWQgJWRcXG5cJiMzNDssIF9fZnVuY19fLCByZXQpO1xuZHJpdmVycy9wbGF0Zm9ybS9yYXNwYmVycnlwaS92Y2hpcS1pbnRlcmZhY2UvdmNoaXFfYXJtLmMtOTY2LVx0XHRnb3RvIHNodXRkb3duO1xuLS1cbmRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL2lzaHRwX2VjbGl0ZS5jPTQ0OD1zdGF0aWMgaW50IGVjbF9pc2h0cF9jbF9pbml0KHN0cnVjdCBpc2h0cF9jbCAqZWNsX2lzaHRwX2NsKVxuLS1cbmRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL2lzaHRwX2VjbGl0ZS5jLTQ4MC1cdGlmIChydikge1xuZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvaXNodHBfZWNsaXRlLmM6NDgxOlx0XHRkZXZfZXJyKGNsX2RhdGFfdG9fZGV2KG9wcl9kZXYpLCBcJiMzNDtjbGllbnQgY29ubmVjdCBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvaXNodHBfZWNsaXRlLmMtNDgyLVxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9pc2NzaS5jPTMwMzI9c3RhdGljIGludCBpc2NzaV9pZl9lcF9jb25uZWN0KHN0cnVjdCBpc2NzaV90cmFuc3BvcnQgKnRyYW5zcG9ydCxcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYy0zMDQ1LVx0XHRpZiAoIXNob3N0KSB7XG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYzozMDQ2Olx0XHRcdHByaW50ayhLRVJOX0VSUiBcJiMzNDtlcCBjb25uZWN0IGZhaWxlZC4gQ291bGQgbm90IGZpbmQgXCYjMzQ7XG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYy0zMDQ3LVx0XHRcdCAgICAgICBcJiMzNDtob3N0IG5vICV1XFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvc2xpbWJ1cy9xY29tLW5nZC1jdHJsLmM9NDQ3PXN0YXRpYyBpbnQgcWNvbV9zbGltX3FtaV9pbml0KHN0cnVjdCBxY29tX3NsaW1fbmdkX2N0cmwgKmN0cmwsXG4tLVxuZHJpdmVycy9zbGltYnVzL3Fjb20tbmdkLWN0cmwuYy00NjgtXHRpZiAocmMgXHUwMDNjIDApIHtcbmRyaXZlcnMvc2xpbWJ1cy9xY29tLW5nZC1jdHJsLmM6NDY5Olx0XHRkZXZfZXJyKGN0cmwtXHUwMDNlZGV2LCBcJiMzNDtSZW1vdGUgU2VydmljZSBjb25uZWN0IGZhaWxlZDogJWRcXG5cJiMzNDssIHJjKTtcbmRyaXZlcnMvc2xpbWJ1cy9xY29tLW5nZC1jdHJsLmMtNDcwLVx0XHRnb3RvIHFtaV9jb25uZWN0X3RvX3NlcnZpY2VfZmFpbGVkO1xuLS1cbmRyaXZlcnMvdHR5L2h2Yy9odmNzLmM9MTA1OD1zdGF0aWMgaW50IGh2Y3NfaW5zdGFsbChzdHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyLCBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KVxuLS1cbmRyaXZlcnMvdHR5L2h2Yy9odmNzLmMtMTA4Mi1cdFx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmh2Y3NkLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvdHR5L2h2Yy9odmNzLmM6MTA4MzpcdFx0XHRwcmludGsoS0VSTl9XQVJOSU5HIFwmIzM0O0hWQ1M6IHBhcnRuZXIgY29ubmVjdCBmYWlsZWQuXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdHR5L2h2Yy9odmNzLmMtMTA4NC1cdFx0XHRnb3RvIGVycl9wdXQ7XG4tLVxuZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYz0zMTM9c3RhdGljIGludCBjaV9oZHJjX2lteF9ub3RpZnlfZXZlbnQoc3RydWN0IGNpX2hkcmMgKmNpLCB1bnNpZ25lZCBpbnQgZXZlbnQpXG4tLVxuZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYy0zMzQtXHRcdFx0ZGV2X2VycihkZXYsXG5kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jOjMzNTpcdFx0XHRcdFwmIzM0O2hzaWNfc2V0X2Nvbm5lY3QgZmFpbGVkLCBlcnI9JWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jLTMzNi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmM9NDAzPXV2Y19mdW5jdGlvbl9jb25uZWN0KHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmMtNDA3LVx0aWYgKChyZXQgPSB1c2JfZnVuY3Rpb25fYWN0aXZhdGUoXHUwMDI2dXZjLVx1MDAzZWZ1bmMpKSBcdTAwM2MgMClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3V2Yy5jOjQwODpcdFx0dXZjZ19pbmZvKFx1MDAyNnV2Yy1cdTAwM2VmdW5jLCBcJiMzNDtVVkMgY29ubmVjdCBmYWlsZWQgd2l0aCAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3V2Yy5jLTQwOS19XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmM9NDEyPXV2Y19mdW5jdGlvbl9kaXNjb25uZWN0KHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmMtNDIyLVx0aWYgKChyZXQgPSB1c2JfZnVuY3Rpb25fZGVhY3RpdmF0ZShcdTAwMjZ1dmMtXHUwMDNlZnVuYykpIFx1MDAzYyAwKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmM6NDIzOlx0XHR1dmNnX2luZm8oXHUwMDI2dXZjLVx1MDAzZWZ1bmMsIFwmIzM0O1VWQyBkaXNjb25uZWN0IGZhaWxlZCB3aXRoICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmMtNDI0LX1cbi0tXG5kcml2ZXJzL3VzYi9taXNjL2NoYW9za2V5LmM9MjIxPXN0YXRpYyB2b2lkIGNoYW9za2V5X2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2NoYW9za2V5LmMtMjI3LVx0aWYgKCFkZXYpIHtcbmRyaXZlcnMvdXNiL21pc2MvY2hhb3NrZXkuYzoyMjg6XHRcdHVzYl9kYmcoaW50ZXJmYWNlLCBcJiMzNDtkaXNjb25uZWN0IGZhaWxlZCAtIG5vIGRldlwmIzM0Oyk7XG5kcml2ZXJzL3VzYi9taXNjL2NoYW9za2V5LmMtMjI5LVx0XHRyZXR1cm47XG4tLVxuZnMvY2VwaC9tZHNfY2xpZW50LmM9NTg0Mz1zdGF0aWMgdm9pZCBjaGVja19uZXdfbWFwKHN0cnVjdCBjZXBoX21kc19jbGllbnQgKm1kc2MsXG4tLVxuZnMvY2VwaC9tZHNfY2xpZW50LmMtNTkyMy1cdFx0XHRcdHByX3dhcm5fY2xpZW50KGNsLFxuZnMvY2VwaC9tZHNfY2xpZW50LmM6NTkyNDpcdFx0XHRcdFx0ICAgICAgIFwmIzM0O21kcyVkIHJlY29ubmVjdCBmYWlsZWQ6ICVkXFxuXCYjMzQ7LFxuZnMvY2VwaC9tZHNfY2xpZW50LmMtNTkyNS1cdFx0XHRcdFx0ICAgICAgIGksIHJjKTtcbi0tXG5mcy9jZXBoL21kc19jbGllbnQuYy01OTk0LVx0XHRcdHByX3dhcm5fY2xpZW50KGNsLFxuZnMvY2VwaC9tZHNfY2xpZW50LmM6NTk5NTpcdFx0XHRcdCAgICAgICBcJiMzNDttZHMlZCBleHBvcnQgdGFyZ2V0IHJlY29ubmVjdCBmYWlsZWQ6ICVkXFxuXCYjMzQ7LFxuZnMvY2VwaC9tZHNfY2xpZW50LmMtNTk5Ni1cdFx0XHRcdCAgICAgICBpLCBlcnIpO1xuLS1cbmZzL2NlcGgvbWRzX2NsaWVudC5jPTcxMDI9c3RhdGljIHZvaWQgbWRzX3BlZXJfcmVzZXQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxuLS1cbmZzL2NlcGgvbWRzX2NsaWVudC5jLTcxMjQtXHRcdFx0cHJfd2Fybl9jbGllbnQobWRzYy1cdTAwM2Vmc2MtXHUwMDNlY2xpZW50LFxuZnMvY2VwaC9tZHNfY2xpZW50LmM6NzEyNTpcdFx0XHRcdCAgICAgICBcJiMzNDttZHMlZCByZWNvbm5lY3QgZmFpbGVkOiAlZFxcblwmIzM0OyxcbmZzL2NlcGgvbWRzX2NsaWVudC5jLTcxMjYtXHRcdFx0XHQgICAgICAgcy1cdTAwM2VzX21kcywgcmMpO1xuLS1cbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jPTY4ND1DSUZTU01CVERpcyhjb25zdCB1bnNpZ25lZCBpbnQgeGlkLCBzdHJ1Y3QgY2lmc190Y29uICp0Y29uKVxuLS1cbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jLTcxNy1cdGlmIChyYylcbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jOjcxODpcdFx0Y2lmc19kYmcoRllJLCBcJiMzNDtUcmVlIGRpc2Nvbm5lY3QgZmFpbGVkICVkXFxuXCYjMzQ7LCByYyk7XG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy03MTktXG4tLVxuZnMvc21iL2NsaWVudC9jb25uZWN0LmM9ODI3PWlzX3NtYl9yZXNwb25zZShzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIsIHVuc2lnbmVkIGNoYXIgdHlwZSlcbi0tXG5mcy9zbWIvY2xpZW50L2Nvbm5lY3QuYy04OTktXHRcdFx0ICogSWYgcmVjb25uZWN0IHdhcyBzdWNjZXNzZnVsIHRoZW4gaW5kaWNhdGUgLUVBR0FJTlxuZnMvc21iL2NsaWVudC9jb25uZWN0LmM6OTAwOlx0XHRcdCAqIHRvIG1pZCYjMzk7cyBjYWxsZXIuIElmIHJlY29ubmVjdCBmYWlsZWQgd2l0aCAtRUFHQUlOXG5mcy9zbWIvY2xpZW50L2Nvbm5lY3QuYy05MDEtXHRcdFx0ICogdGhlbiBtYXNrIGl0IGFzIC1FSE9TVERPV04sIHNvIG1pZCYjMzk7cyBjYWxsZXIgd291bGRcbi0tXG5mcy9zbWIvY2xpZW50L2Nvbm5lY3QuYy05MjUtXHRcdFx0LypcbmZzL3NtYi9jbGllbnQvY29ubmVjdC5jOjkyNjpcdFx0XHQgKiBJZiByZWNvbm5lY3QgZmFpbGVkIHRoZW4gd2FpdCB0d28gc2Vjb25kcy4gSW4gbW9zdFxuZnMvc21iL2NsaWVudC9jb25uZWN0LmMtOTI3LVx0XHRcdCAqIGNhc2VzIHdlIHdlcmUgYmVlbiBjYWxsZWQgZnJvbSB0aGUgbW91bnQgY29udGV4dCBhbmRcbi0tXG5mcy9zbWIvY2xpZW50L2Nvbm5lY3QuYz0yMzQxPWNpZnNfZ2V0X3NtYl9zZXMoc3RydWN0IFRDUF9TZXJ2ZXJfSW5mbyAqc2VydmVyLCBzdHJ1Y3Qgc21iM19mc19jb250ZXh0ICpjdHgpXG4tLVxuZnMvc21iL2NsaWVudC9jb25uZWN0LmMtMjM4MS1cdFx0XHRcdFx0cmV0cmllcyYjNDM7JiM0Mzs7XG5mcy9zbWIvY2xpZW50L2Nvbm5lY3QuYzoyMzgyOlx0XHRcdFx0XHRjaWZzX2RiZyhGWUksIFwmIzM0O1Nlc3Npb24gcmVjb25uZWN0IGZhaWxlZCwgcmV0cnlpbmcgd2l0aCBhbHRlcm5hdGUgcGFzc3dvcmRcXG5cJiMzNDspO1xuZnMvc21iL2NsaWVudC9jb25uZWN0LmMtMjM4My1cdFx0XHRcdFx0c3dhcChzZXMtXHUwMDNlcGFzc3dvcmQsIHNlcy1cdTAwM2VwYXNzd29yZDIpO1xuLS1cbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmM9MjQyND1pbnQgc21iMl9jaGVja19kdXJhYmxlX29wbG9jayhzdHJ1Y3Qga3NtYmRfY29ubiAqY29ubixcbi0tXG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTI0MzctXHRpZiAoa3NtYmRfaGFzX290aGVyX2FjdGl2ZV9mZChmcCkpIHtcbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmM6MjQzODpcdFx0a3NtYmRfZGVidWcoU01CLCBcJiMzNDtEdXJhYmxlIGhhbmRsZSByZWNvbm5lY3QgZmFpbGVkOiBjb21wZXRpbmcgb3BlblxcblwmIzM0Oyk7XG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTI0MzktXHRcdHJldCA9IC1FQkFERjtcbi0tXG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTI0NDMtXHRpZiAoa3NtYmRfdmZzX2NvbXBhcmVfZHVyYWJsZV9vd25lcihmcCwgdXNlcikgPT0gZmFsc2UpIHtcbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmM6MjQ0NDpcdFx0a3NtYmRfZGVidWcoU01CLCBcJiMzNDtEdXJhYmxlIGhhbmRsZSByZWNvbm5lY3QgZmFpbGVkOiBvd25lciBtaXNtYXRjaFxcblwmIzM0Oyk7XG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTI0NDUtXHRcdHJldCA9IC1FQkFERjtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0yNDI5PXN0YXRpYyBpbnQgcHJvY2Vzc19hdXRoX3NpZ25hdHVyZShzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24sXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMjQ2Mi1cdFx0aWYgKHJldCkge1xubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MjQ2MzpcdFx0XHRwcl9lcnIoXCYjMzQ7cHJlcGFyZV9zZXNzaW9uX3JlY29ubmVjdCBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCByZXQpO1xubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMjQ2NC1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMzNTk9aW50IGNlcGhfY29uX3YyX3RyeV93cml0ZShzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzM5NS1cdFx0aWYgKHJldCkge1xubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzM5NjpcdFx0XHRwcl9lcnIoXCYjMzQ7Y2VwaF90Y3BfY29ubmVjdCBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCByZXQpO1xubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzM5Ny1cdFx0XHRjb24tXHUwMDNlZXJyb3JfbXNnID0gXCYjMzQ7Y29ubmVjdCBlcnJvclwmIzM0Oztcbi0tXG5uZXQvcmRzL3RocmVhZHMuYz0xNjI9dm9pZCByZHNfY29ubmVjdF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9yZHMvdGhyZWFkcy5jLTE4NS1cdFx0XHRlbHNlXG5uZXQvcmRzL3RocmVhZHMuYzoxODY6XHRcdFx0XHRyZHNfY29ubl9wYXRoX2Vycm9yKGNwLCBcJiMzNDtjb25uZWN0IGZhaWxlZFxcblwmIzM0Oyk7XG5uZXQvcmRzL3RocmVhZHMuYy0xODctXHRcdH1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jb3JlZHVtcC9jb3JlZHVtcF9zb2NrZXRfdGVzdC5jPTIwOT1URVNUX0YoY29yZWR1bXAsIHNvY2tldF9kZXRlY3RfdXNlcnNwYWNlX2NsaWVudClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jb3JlZHVtcC9jb3JlZHVtcF9zb2NrZXRfdGVzdC5jLTMxMC1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY29yZWR1bXAvY29yZWR1bXBfc29ja2V0X3Rlc3QuYzozMTE6XHRcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O3NvY2tldF9kZXRlY3RfdXNlcnNwYWNlX2NsaWVudCAoY2xpZW50KTogY29ubmVjdCBmYWlsZWQ6ICVtXFxuXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NvcmVkdW1wL2NvcmVkdW1wX3NvY2tldF90ZXN0LmMtMzEyLVx0XHRcdF9leGl0KEVYSVRfRkFJTFVSRSk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldHRlc3QuYz0xNjY4PXN0YXRpYyBpbnQgd2FpdF9mb3JfY29ubmVjdChpbnQgc2QpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldHRlc3QuYy0xNjk1LVx0aWYgKHZhbCAhPSAwKSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0dGVzdC5jOjE2OTY6XHRcdGxvZ19lcnJvcihcJiMzNDtjb25uZWN0IGZhaWxlZDogJWQ6ICVzXFxuXCYjMzQ7LCB2YWwsIHN0cmVycm9yKHZhbCkpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldHRlc3QuYy0xNjk3LVx0XHRyZXR1cm4gLTE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjQzCgkJCQkJCQlvdXRwdXQ6IDcxCgkJCQkJCQl0aG91Z2h0czogNDg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdmVyaWZ5IHRoYXQgdGhpcyBpcyBpbmRlZWQgYSBjb250YWluZWQgY2hhbmdlLiBUaGUgZGlmZiBjb25maXJtcyBpdDsgaXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgYWRkaXRpb24gb2YgYW4gZXJyb3IgbG9nIG1lc3NhZ2Ugd2l0aGluIHRoZSBgYnJjbWZfYnNzX2Nvbm5lY3RfZG9uZWAgZnVuY3Rpb24gaW4gYGNmZzgwMjExLmNgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyBgYnBoeV9lcnJgIGxvZ2dpbmcgdXBvbiBhIGNvbm5lY3Rpb24gZmFpbHVyZSB3aGVyZSB0aGUgYXNzb2NpYXRpb24gaGFzIHRpbWVkIG91dC4KCkdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSwgdGhpcyBsb29rcyBsaWtlIHB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcuIEl0JiMzOTtzIHVzaW5nIGBicGh5X2VycmAsIGFuZCBJIGtub3cgdGhhdCB0aGlzIGRvZXNuJiMzOTt0IGltcGFjdCBjb250cm9sIGZsb3cgb3IgYWx0ZXIgYW55IGNyaXRpY2FsIGRhdGEgc3RydWN0dXJlcy4gVGhpcyBhbGlnbnMgZGlyZWN0bHkgd2l0aCB0aGUgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBjcml0ZXJpYSBvdXRsaW5lZCBpbiBzZWN0aW9uIDIuCgpUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAuIFNpbmNlIHRoaXMgaXMgYSBsb2dnaW5nIGFkZGl0aW9uIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGFyZWFzIHRoYXQgd291bGQgYmUgaW50ZXJlc3RpbmcgdG8gZnV6eiwgdGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZSBlbXB0eS4gSSYjMzk7bGwgcHJvdmlkZSBhIGNvbmNpc2UgcmVhc29uaW5nOiAmIzM0O1RoaXMgcGF0Y2ggYWRkcyBwdXJlbHkgZGVjb3JhdGl2ZSBlcnJvciBsb2dnaW5nLCBtYWtpbmcgaXQgbm90IHdvcnRoIGZ1enppbmcuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBkZWJ1Zy9lcnJvciBsb2cgbWVzc2FnZSAoYnBoeV9lcnIpIHJlcG9ydGluZyBjb25uZWN0aW9uIGZhaWx1cmUgZGV0YWlscy4gSXQgaW50cm9kdWNlcyBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3csIHN0YXRlIG1hbmFnZW1lbnQsIG9yIGRhdGEgc3RydWN0dXJlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIGRlYnVnL2Vycm9yIGxvZyBtZXNzYWdlIChicGh5X2VycikgcmVwb3J0aW5nIGNvbm5lY3Rpb24gZmFpbHVyZSBkZXRhaWxzLiBJdCBpbnRyb2R1Y2VzIHB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdywgc3RhdGUgbWFuYWdlbWVudCwgb3IgZGF0YSBzdHJ1Y3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTA6NTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEwOjQ5OjQyLjQzNjk5ODM1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1OTM4NjQ4OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBkZWJ1Zy9lcnJvciBsb2cgbWVzc2FnZSAoYnBoeV9lcnIpIHJlcG9ydGluZyBjb25uZWN0aW9uIGZhaWx1cmUgZGV0YWlscy4gSXQgaW50cm9kdWNlcyBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3csIHN0YXRlIG1hbmFnZW1lbnQsIG9yIGRhdGEgc3RydWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEwOjQ5OjQyLjQzNzAwMjQ2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzYwMDQyMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2NlODkyZDQ5OGEwNDJiY2QwZDllMmRkODU5MmFlNzIxZDQyOGJiZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCA5IDEwOjQ5OjQwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG5pbmRleCA4NzJjNDg4MDZkMDkxLi40ZjQ4ZGI2ZDg2N2ViIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG5AQCAtNjUyMiw2ICs2NTIyLDggQEAgYnJjbWZfYnNzX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbiBcXHRcXHRcXHRjbGVhcl9iaXQoQlJDTUZfVklGX1NUQVRVU19BU1NPQ19TVUNDRVNTLFxcbiBcXHRcXHRcXHRcXHQgIFxcdTAwMjZpZnAtXFx1MDAzZXZpZi1cXHUwMDNlc21lX3N0YXRlKTtcXG4gXFx0XFx0XFx0Y29ubl9wYXJhbXMuc3RhdHVzID0gV0xBTl9TVEFUVVNfQVVUSF9USU1FT1VUO1xcbitcXHRcXHRcXHRicGh5X2VycihpZnAtXFx1MDAzZWRydnIsIFxcXCJjb25uZWN0IGZhaWxlZDogZXZlbnQgJXUgc3RhdHVzICV1IHJlYXNvbiAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IGUtXFx1MDAzZWV2ZW50X2NvZGUsIGUtXFx1MDAzZXN0YXR1cywgZS1cXHUwMDNlcmVhc29uKTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRjb25uX3BhcmFtcy5saW5rc1swXS5ic3NpZCA9IHByb2ZpbGUtXFx1MDAzZWJzc2lkO1xcbiBcXHRcXHRjb25uX3BhcmFtcy5yZXFfaWUgPSBjb25uX2luZm8tXFx1MDAzZXJlcV9pZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTA6NDk6NDMuNzk3NzUzMTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI3MjMzMDk2NzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBkZWJ1Zy9lcnJvciBsb2cgbWVzc2FnZSAoYnBoeV9lcnIpIHJlcG9ydGluZyBjb25uZWN0aW9uIGZhaWx1cmUgZGV0YWlscy4gSXQgaW50cm9kdWNlcyBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3csIHN0YXRlIG1hbmFnZW1lbnQsIG9yIGRhdGEgc3RydWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2NlODkyZDQ5OGEwNDJiY2QwZDllMmRkODU5MmFlNzIxZDQyOGJiZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMTA6NDk6NDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA4NzJjNDg4MDZkMDkxLi40ZjQ4ZGI2ZDg2N2ViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5AQCAtNjUyMiw2ICs2NTIyLDggQEAgYnJjbWZfYnNzX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxuIFx0XHRcdGNsZWFyX2JpdChCUkNNRl9WSUZfU1RBVFVTX0FTU09DX1NVQ0NFU1MsXG4gXHRcdFx0XHQgIFx1MDAyNmlmcC1cdTAwM2V2aWYtXHUwMDNlc21lX3N0YXRlKTtcbiBcdFx0XHRjb25uX3BhcmFtcy5zdGF0dXMgPSBXTEFOX1NUQVRVU19BVVRIX1RJTUVPVVQ7XG4rXHRcdFx0YnBoeV9lcnIoaWZwLVx1MDAzZWRydnIsIFwiY29ubmVjdCBmYWlsZWQ6IGV2ZW50ICV1IHN0YXR1cyAldSByZWFzb24gJXVcXG5cIixcbitcdFx0XHRcdCBlLVx1MDAzZWV2ZW50X2NvZGUsIGUtXHUwMDNlc3RhdHVzLCBlLVx1MDAzZXJlYXNvbik7XG4gXHRcdH1cbiBcdFx0Y29ubl9wYXJhbXMubGlua3NbMF0uYnNzaWQgPSBwcm9maWxlLVx1MDAzZWJzc2lkO1xuIFx0XHRjb25uX3BhcmFtcy5yZXFfaWUgPSBjb25uX2luZm8tXHUwMDNlcmVxX2llO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTA6NDk6NDMuNzk3NzU0NDlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDE1Nzc3OTMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCcm9hZGNvbSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFuYWx5emUgdGhlIGNoYW5nZXMgbWFkZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNgLiBJJ2xsIHByb2JhYmx5IHN0YXJ0IGJ5IGVpdGhlciByZWFkaW5nIHRoZSBmaWxlIGRpcmVjdGx5IG9yIHVzaW5nIGBncmVwcGVyYCB0byBxdWlja2x5IGdldCBhbiBvdmVydmlldyBvZiB3aGF0IGNoYW5nZWQuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgYWN0dWFsIGRpZmYuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhcm91bmQgbGluZSA2NTIyLiBGcm9tIGEgY3Vyc29yeSBnbGFuY2UsIGl0IGxvb2tzIGxpa2UgYSBuZXcgZXJyb3IgbWVzc2FnZSBpcyBiZWluZyBhZGRlZCB3aXRoaW4gdGhlIGBicmNtZl9ic3NfY29ubmVjdF9kb25lYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIGEgY29ubmVjdGlvbiBmYWlsdXJlIGlzIGJlaW5nIHJlcG9ydGVkIHdpdGggdGhlIGFkZGl0aW9uIG9mIGEgbmV3IGBicGh5X2VycmAgc3RhdGVtZW50LiBUaGUgbG9nZ2luZyBpcyBjYXB0dXJpbmcgdGhlIGV2ZW50IGNvZGUsIHN0YXR1cywgYW5kIHJlYXNvbiBpbiB0aGUgZXZlbnQgb2YgYSB0aW1lb3V0LiBUaGlzIGlzIGxpa2VseSB2YWx1YWJsZSBmb3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gaXNzdWVzLlxuXG5JJ2xsIHF1aWNrbHkgY2hlY2sgd2hhdCB0aGUgYGJwaHlfZXJyYCBtYWNybyBpcyBhY3R1YWxseSBkb2luZy4gSSdsbCByZWFkIGFyb3VuZCBsaW5lIDY1MjIgb2YgdGhlIHNvdXJjZS4gVGhpcyB0eXBlIG9mIGFkZGVkIGxvZ2dpbmcgaXMgY3JpdGljYWwgZm9yIGRpYWdub3N0aWNzLiBJdCdzIG9mdGVuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBmcnVzdHJhdGluZyBidWcgYW5kIGEgc29sdmFibGUgcHJvYmxlbS4gSXQncyBhIHNvbGlkIGFkZGl0aW9uIGlmIGl0IGluY3JlYXNlcyB0aGUgZ3JhbnVsYXJpdHkgb2YgdGhlIGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDE1LCJPdXRwdXRUb2tlbnMiOjU5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDU5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTA6NDk6NTMuOTU1NTM2NzcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxNzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY1MTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjY1MTA6XFx0XFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChCUkNNRl9WSUZfU1RBVFVTX0NPTk5FQ1RJTkcsXFxuNjUxMTpcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmlmcC1cXHUwMDNldmlmLVxcdTAwM2VzbWVfc3RhdGUpKSB7XFxuNjUxMjpcXHRcXHRcXHRtZW1zZXQoXFx1MDAyNmNvbm5fcGFyYW1zLCAwLCBzaXplb2YoY29ubl9wYXJhbXMpKTtcXG42NTEzOlxcdFxcdFxcdGlmIChjb21wbGV0ZWQpIHtcXG42NTE0OlxcdFxcdFxcdFxcdGJyY21mX2dldF9hc3NvY19pZXMoY2ZnLCBpZnApO1xcbjY1MTU6XFx0XFx0XFx0XFx0YnJjbWZfdXBkYXRlX2Jzc19pbmZvKGNmZywgaWZwKTtcXG42NTE2OlxcdFxcdFxcdFxcdHNldF9iaXQoQlJDTUZfVklGX1NUQVRVU19DT05ORUNURUQsXFxuNjUxNzpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2aWZwLVxcdTAwM2V2aWYtXFx1MDAzZXNtZV9zdGF0ZSk7XFxuNjUxODpcXHRcXHRcXHRcXHRjb25uX3BhcmFtcy5zdGF0dXMgPSBXTEFOX1NUQVRVU19TVUNDRVNTO1xcbjY1MTk6XFx0XFx0XFx0fSBlbHNlIHtcXG42NTIwOlxcdFxcdFxcdFxcdGNsZWFyX2JpdChCUkNNRl9WSUZfU1RBVFVTX0VBUF9TVUNDRVNTLFxcbjY1MjE6XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2aWZwLVxcdTAwM2V2aWYtXFx1MDAzZXNtZV9zdGF0ZSk7XFxuNjUyMjpcXHRcXHRcXHRcXHRjbGVhcl9iaXQoQlJDTUZfVklGX1NUQVRVU19BU1NPQ19TVUNDRVNTLFxcbjY1MjM6XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2aWZwLVxcdTAwM2V2aWYtXFx1MDAzZXNtZV9zdGF0ZSk7XFxuNjUyNDpcXHRcXHRcXHRcXHRjb25uX3BhcmFtcy5zdGF0dXMgPSBXTEFOX1NUQVRVU19BVVRIX1RJTUVPVVQ7XFxuNjUyNTpcXHRcXHRcXHRcXHRicGh5X2VycihpZnAtXFx1MDAzZWRydnIsIFxcXCJjb25uZWN0IGZhaWxlZDogZXZlbnQgJXUgc3RhdHVzICV1IHJlYXNvbiAldVxcXFxuXFxcIixcXG42NTI2OlxcdFxcdFxcdFxcdFxcdCBlLVxcdTAwM2VldmVudF9jb2RlLCBlLVxcdTAwM2VzdGF0dXMsIGUtXFx1MDAzZXJlYXNvbik7XFxuNjUyNzpcXHRcXHRcXHR9XFxuNjUyODpcXHRcXHRcXHRjb25uX3BhcmFtcy5saW5rc1swXS5ic3NpZCA9IHByb2ZpbGUtXFx1MDAzZWJzc2lkO1xcbjY1Mjk6XFx0XFx0XFx0Y29ubl9wYXJhbXMucmVxX2llID0gY29ubl9pbmZvLVxcdTAwM2VyZXFfaWU7XFxuNjUzMDpcXHRcXHRcXHRjb25uX3BhcmFtcy5yZXFfaWVfbGVuID0gY29ubl9pbmZvLVxcdTAwM2VyZXFfaWVfbGVuO1xcbjY1MzE6XFx0XFx0XFx0Y29ubl9wYXJhbXMucmVzcF9pZSA9IGNvbm5faW5mby1cXHUwMDNlcmVzcF9pZTtcXG42NTMyOlxcdFxcdFxcdGNvbm5fcGFyYW1zLnJlc3BfaWVfbGVuID0gY29ubl9pbmZvLVxcdTAwM2VyZXNwX2llX2xlbjtcXG42NTMzOlxcdFxcdFxcdGNmZzgwMjExX2Nvbm5lY3RfZG9uZShuZGV2LCBcXHUwMDI2Y29ubl9wYXJhbXMsIEdGUF9LRVJORUwpO1xcbjY1MzQ6XFx0XFx0XFx0YnJjbWZfZGJnKENPTk4sIFxcXCJSZXBvcnQgY29ubmVjdCByZXN1bHQgLSBjb25uZWN0aW9uICVzXFxcXG5cXFwiLFxcbjY1MzU6XFx0XFx0XFx0XFx0ICBjb21wbGV0ZWQgPyBcXFwic3VjY2VlZGVkXFxcIiA6IFxcXCJmYWlsZWRcXFwiKTtcXG42NTM2OlxcdFxcdH1cXG42NTM3OlxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIkV4aXRcXFxcblxcXCIpO1xcbjY1Mzg6XFx0XFx0cmV0dXJuIDA7XFxuNjUzOTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEwOjQ5OjUzLjk1NTgxMDUyMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyNDIxNzQ5NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgYnBoeV9lcnJgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYGJwaHlfZXJyYCB2YXJpYWJsZSBiZXR0ZXIuIEl0J3MgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBzeXN0ZW0ncyBiZWhhdmlvciBhbmQgcG90ZW50aWFsIGZhaWx1cmUgbW9kZXMuIEknbSBnb2luZyB0byBxdWlja2x5IHJlZmVyZW5jZSBpdHMgZGVmaW5pdGlvbi4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IEkga25vdyB3aGF0IGl0IHJlZmVyZW5jZXMsIHRoZSBkb21haW4gb2YgdmFsdWVzLCBhbmQgd2hhdCB0aGUgcG9zc2libGUgcmFtaWZpY2F0aW9ucyBvZiB2YXJpb3VzIHN0YXRlcyBtYXkgYmUuIE15IHBhc3QgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoZXNlIHR5cGVzIG9mIG5hbWVzIGFyZSBvZnRlbiB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlLCBpbnRlcnJ1cHRzLCBvciBsb3ctbGV2ZWwgaW50ZXJmYWNlcywgc28gYSBxdWljayBjaGVjayBvZiBpdHMgZGVmaW5pdGlvbiBzaG91bGQgcHJvdmlkZSBjcml0aWNhbCBjb250ZXh0LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4uLiBJIHNob3VsZCBiZSBhYmxlIHRvIHRyYWNrIGRvd24gaXRzIHB1cnBvc2UgYW5kIHVzZSBjYXNlIHdpdGhvdXQgbXVjaCB0cm91YmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDM2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMDo0OTo1Ny4xOTc5ODcwNThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMTYzMTIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIGJwaHlfZXJyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9kZWJ1Zy5oPTQwPXZvaWQgX19icmNtZl9lcnIoc3RydWN0IGJyY21mX2J1cyAqYnVzLCBjb25zdCBjaGFyICpmdW5jLCBjb25zdCBjaGFyICpmbXQsIC4uLik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZGVidWcuaC01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZGVidWcuaDo1NDojZGVmaW5lIGJwaHlfZXJyKGRydnIsIGZtdCwgLi4uKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZGVidWcuaC01NS1cXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMDo0OTo1OC45Mjk2MjUyOThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTQxMzA4MjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlIHdlIGdvLi4uXG5cbioqRGl2aW5nIGludG8gdGhlIGJyY21mbWFjIERlYnVnIEhlYWRlcioqXG5cbkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2RlYnVnLmhgLiBJJ20gZ3Vlc3NpbmcgdGhpcyBmaWxlIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZmluZXIgcG9pbnRzIG9mIGRlYnVnZ2luZyB0aGUgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBicmNtZm1hYyBpbnRlcmZhY2UuIENvbnNpZGVyaW5nIG15IGV4cGVydGlzZSwgSSdtIGV4cGVjdGluZyB0aGlzIGhlYWRlciB0byBjb250YWluIGEgdHJlYXN1cmUgdHJvdmUgb2YgbWFjcm9zLCBkZWZpbml0aW9ucywgYW5kIHBlcmhhcHMgZXZlbiBzb21lIGZ1bmN0aW9uIHByb3RvdHlwZXMgcmVsYXRlZCB0byBsb2dnaW5nLCB0cmFjaW5nLCBhbmQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqTG9nIGxldmVsczoqKiBIb3cgZ3JhbnVsYXIgY2FuIEkgZ2V0IHdpdGggdGhlIGRlYnVnIG91dHB1dD8gSXMgdGhlcmUgc3VwcG9ydCBmb3IgbGV2ZWxzIGxpa2UgREVCVUcsIElORk8sIFdBUk4sIEVSUk9SLCBhbmQgbWF5YmUgZXZlbiBtb3JlIHNwZWNpYWxpemVkIG9uZXM/XG4qICAgKipDb25kaXRpb25hbCBjb21waWxhdGlvbjoqKiBBcmUgdGhlcmUgYCNpZmRlZmAgYmxvY2tzIGNvbnRyb2xsZWQgYnkga2VybmVsIGNvbmZpZyBvcHRpb25zIG9yIGRlYnVnIGZsYWdzIHRoYXQgc2VsZWN0aXZlbHkgaW5jbHVkZSBvciBleGNsdWRlIGRlYnVnIGNvZGU/IFRoaXMgaXMgdXN1YWxseSBjcnVjaWFsIGZvciBwZXJmb3JtYW5jZSBvbiBwcm9kdWN0aW9uIHN5c3RlbXMuXG4qICAgKipUcmFjZXBvaW50cy9JbnN0cnVtZW50YXRpb246KiogSXMgdGhlcmUgYW55IGV2aWRlbmNlIG9mIHRyYWNlcG9pbnRzIG9yIG90aGVyIGluc3RydW1lbnRhdGlvbiB0ZWNobmlxdWVzIGRlc2lnbmVkIHRvIGNhcHR1cmUgcGVyZm9ybWFuY2UgZGF0YSBvciBjcml0aWNhbCBldmVudHMgd2l0aGluIHRoZSBkcml2ZXI/XG4qICAgKipEYXRhIHN0cnVjdHVyZXMgZm9yIGxvZ2dpbmc6KiogV2hhdCBraW5kIG9mIHN0cnVjdHVyZXMgYXJlIHVzZWQgdG8gZW5jYXBzdWxhdGUgZGVidWcgbWVzc2FnZXM/IEFyZSB0aGV5IGVmZmljaWVudD8gRG8gdGhleSBzdXBwb3J0IHRpbWVzdGFtcHMsIHRocmVhZCBJRHMsIGFuZCBvdGhlciB1c2VmdWwgbWV0YWRhdGE/XG4qICAgKipFcnJvciBjb2RlIGRlZmluaXRpb25zOioqIEFyZSB0aGVyZSBkZXRhaWxlZCBlcnJvciBjb2RlcyB0byBoZWxwIGRpYWdub3NlIHdpcmVsZXNzIGNvbm5lY3Rpb24gZmFpbHVyZXM/XG4qICAgKipTcGVjaWFsaXplZCBkZWJ1ZyBmdW5jdGlvbnM6KiogQXJlIHRoZXJlIGZ1bmN0aW9ucyBkZXNpZ25lZCBmb3IgZHVtcGluZyBzcGVjaWZpYyBkcml2ZXIgb3IgaGFyZHdhcmUgc3RhdGUsIGxpa2UgcmVnaXN0ZXIgY29udGVudHMgb3IgZmlybXdhcmUgdmFyaWFibGVzP1xuXG5Fc3NlbnRpYWxseSwgSSBleHBlY3QgdGhpcyBoZWFkZXIgdG8gbGF5IHRoZSBncm91bmR3b3JrIGZvciBob3cgdGhlIGRyaXZlcidzIGludGVybmFscyBjYW4gYmUgZXhhbWluZWQgYW5kIHRyb3VibGVzaG9vdGVkLiBJJ20gaG9waW5nIGl0J3Mgd2VsbC1vcmdhbml6ZWQsIHdlbGwtY29tbWVudGVkLCBhbmQgcHJvdmlkZXMgYSBjbGVhciBmcmFtZXdvcmsgZm9yIGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgZGVidWdnaW5nIGZlYXR1cmVzLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNvbXByZWhlbnNpdmUgcGljdHVyZSBvZiB3aGF0IGRlYnVnZ2luZyB0b29scyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSdyZSBpbnRlbmRlZCB0byBiZSB1c2VkLiBMZXQncyBzZWUgd2hhdCdzIGluc2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgyMiwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEwOjUwOjAyLjA3MDkzNTc5MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9kZWJ1Zy5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDQwOlxcdHZvaWQgX19icmNtZl9lcnIoc3RydWN0IGJyY21mX2J1cyAqYnVzLCBjb25zdCBjaGFyICpmdW5jLCBjb25zdCBjaGFyICpmbXQsIC4uLik7XFxuICA0MTpcXHQvKiBNYWNybyBmb3IgZXJyb3IgbWVzc2FnZXMuIFdoZW4gZGVidWdnaW5nIC8gdHJhY2luZyB0aGUgZHJpdmVyIGFsbCBlcnJvclxcbiAgNDI6XFx0ICogbWVzc2FnZXMgYXJlIGltcG9ydGFudCB0byB1cy5cXG4gIDQzOlxcdCAqL1xcbiAgNDQ6XFx0I2lmbmRlZiBicmNtZl9lcnJcXG4gIDQ1OlxcdCNkZWZpbmUgYnJjbWZfZXJyKGZtdCwgLi4uKVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gIDQ2OlxcdFxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuICA0NzpcXHRcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQlJDTURCRykgfHxcXHRcXHRcXHRcXFxcXFxuICA0ODpcXHRcXHRcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfQlJDTV9UUkFDSU5HKSB8fFxcdFxcdFxcdFxcXFxcXG4gIDQ5OlxcdFxcdFxcdCAgICBuZXRfcmF0ZWxpbWl0KCkpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbiAgNTA6XFx0XFx0XFx0XFx0X19icmNtZl9lcnIoTlVMTCwgX19mdW5jX18sIGZtdCwgIyNfX1ZBX0FSR1NfXyk7XFxcXFxcbiAgNTE6XFx0XFx0fSB3aGlsZSAoMClcXG4gIDUyOlxcdCNlbmRpZlxcbiAgNTM6XFx0XFxuICA1NDpcXHQjZGVmaW5lIGJwaHlfZXJyKGRydnIsIGZtdCwgLi4uKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gIDU1OlxcdFxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuICA1NjpcXHRcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQlJDTURCRykgfHxcXHRcXHRcXHRcXFxcXFxuICA1NzpcXHRcXHRcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfQlJDTV9UUkFDSU5HKSB8fFxcdFxcdFxcdFxcXFxcXG4gIDU4OlxcdFxcdFxcdCAgICBuZXRfcmF0ZWxpbWl0KCkpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbiAgNTk6XFx0XFx0XFx0XFx0d2lwaHlfZXJyKChkcnZyKS1cXHUwMDNld2lwaHksIFxcXCIlczogXFxcIiBmbXQsIF9fZnVuY19fLFxcdFxcXFxcXG4gIDYwOlxcdFxcdFxcdFxcdFxcdCAgIyNfX1ZBX0FSR1NfXyk7XFx0XFx0XFx0XFxcXFxcbiAgNjE6XFx0XFx0fSB3aGlsZSAoMClcXG4gIDYyOlxcdFxcbiAgNjM6XFx0I2RlZmluZSBicGh5X2luZm9fb25jZShkcnZyLCBmbXQsIC4uLilcXHRcXHRcXHRcXHRcXHRcXFxcXFxuICA2NDpcXHRcXHR3aXBoeV9pbmZvX29uY2UoKGRydnIpLVxcdTAwM2V3aXBoeSwgXFxcIiVzOiBcXFwiIGZtdCwgX19mdW5jX18sXFx0XFx0XFxcXFxcbiAgNjU6XFx0XFx0XFx0XFx0IyNfX1ZBX0FSR1NfXylcXG4gIDY2OlxcdFxcbiAgNjc6XFx0I2lmIGRlZmluZWQoREVCVUcpIHx8IGRlZmluZWQoQ09ORklHX0JSQ01fVFJBQ0lORylcXG4gIDY4OlxcdFxcbiAgNjk6XFx0LyogRm9yIGRlYnVnL3RyYWNpbmcgcHVycG9zZXMgdHJlYXQgaW5mbyBtZXNzYWdlcyBhcyBlcnJvcnMgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTA6NTA6MDIuMDcxMDExNTExWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzIyMTIyNDQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIG1ha2UgYSBjYWxsLiBMZXQncyBydW4gZG93biB0aGUgY2hlY2tsaXN0IGZvciByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAg4oCTIHRob3NlIG5lZ2F0aXZlIGNyaXRlcmlhLiBUaGUgY29yZSBpczogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzXCIuIEdvdCBpdC5cblxuTG9va2luZyBhdCB0aGlzIHBhdGNoLCBhbGwgaXQgYWRkcyBpcyB0aGlzOlxuXG5gYGBjXG4rXHRcdFx0YnBoeV9lcnIoaWZwLVx1MDAzZWRydnIsIFwiY29ubmVjdCBmYWlsZWQ6IGV2ZW50ICV1IHN0YXR1cyAldSByZWFzb24gJXVcXG5cIixcbitcdFx0XHRcdCBlLVx1MDAzZWV2ZW50X2NvZGUsIGUtXHUwMDNlc3RhdHVzLCBlLVx1MDAzZXJlYXNvbik7XG5gYGBcblxuUmlnaHQsIGBicGh5X2VycmAuIEkga25vdyB0aGF0IGZ1bmN0aW9uLiBJdCBjYWxscyBgd2lwaHlfZXJyYCwgd2hpY2ggaW4gdHVybiBmb3JtYXRzIGEgbWVzc2FnZSBhbmQgcHJpbnRzIGl0IHVzaW5nIGBkZXZfZXJyYCBvbiBgd2lwaHktXHUwMDNlZGV2YC4gSXQncyBkZWZpbml0ZWx5IGp1c3QgYSBsb2dnaW5nIHN0YXRlbWVudC4gSXQncyBub3QgbWVzc2luZyB3aXRoIGFueSBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLiBTbywgdW5kZXIgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhIGxpc3QsIHRoYXQgZmFsbHMgKnNxdWFyZWx5KiBpbnRvIFwiUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cIlxuXG5CdXQsIGxldCdzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbid0IG1pc3NlZCBzb21ldGhpbmcuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGNvbW1pdCBmb3IgYW55ICpvdGhlciogY2hhbmdlcywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgY29uZmlybSB0aGlzIGlzICphbGwqIHRoZSBwYXRjaCBjb250YWlucy4gR290dGEgYmUgY2VydGFpbiBiZWZvcmUgSSBzZW5kIHRoaXMgYmFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgyNiwiT3V0cHV0VG9rZW5zIjoxNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEwOjUwOjA1LjI5MjIzODgzMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxNzkxNzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25uZWN0IGZhaWxlZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3NwYXJjL2tlcm5lbC92aW9ocy5jPTc2NT12b2lkIHZpb19wb3J0X3VwKHN0cnVjdCB2aW9fZHJpdmVyX3N0YXRlICp2aW8pXFxuLS1cXG5hcmNoL3NwYXJjL2tlcm5lbC92aW9ocy5jLTc4OS1cXHRcXHRpZiAoZXJyKVxcbmFyY2gvc3BhcmMva2VybmVsL3Zpb2hzLmM6NzkwOlxcdFxcdFxcdHByaW50ayhLRVJOX1dBUk5JTkcgXFxcIiVzOiBQb3J0ICVsdSBjb25uZWN0IGZhaWxlZCwgXFxcIlxcbmFyY2gvc3BhcmMva2VybmVsL3Zpb2hzLmMtNzkxLVxcdFxcdFxcdCAgICAgICBcXFwiZXJyPSVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xNDI2PXN0YXRpYyB2b2lkIHNlbmRfZGlzY29ubmVjdHMoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ0NC1cXHRcXHRcXHRkZXZfZXJyKGRpc2tfdG9fZGV2KG5iZC1cXHUwMDNlZGlzayksXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNDQ1OlxcdFxcdFxcdFxcdFxcXCJTZW5kIGRpc2Nvbm5lY3QgZmFpbGVkICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ0Ni1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm5zb2NrLVxcdTAwM2V0eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvaW5wdXQvc2VyaW8vc2VyaW8uYz01NzI9c3RhdGljIHZvaWQgc2VyaW9fcmVjb25uZWN0X3N1YnRyZWUoc3RydWN0IHNlcmlvICpyb290KVxcbi0tXFxuZHJpdmVycy9pbnB1dC9zZXJpby9zZXJpby5jLTU5MS1cXHRcXHQvKlxcbmRyaXZlcnMvaW5wdXQvc2VyaW8vc2VyaW8uYzo1OTI6XFx0XFx0ICogRWl0aGVyIGl0IHdhcyBhIGxlYWYgbm9kZSBvciByZWNvbm5lY3QgZmFpbGVkIGFuZCBpdFxcbmRyaXZlcnMvaW5wdXQvc2VyaW8vc2VyaW8uYy01OTMtXFx0XFx0ICogYmVjYW1lIGEgbGVhZiBub2RlLiBDb250aW51ZSByZWNvbm5lY3Rpbmcgc3RhcnRpbmcgd2l0aFxcbi0tXFxuZHJpdmVycy9pbnB1dC9zZXJpby9zZXJpby5jPTkwNT1zdGF0aWMgaW50IHNlcmlvX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2lucHV0L3NlcmlvL3NlcmlvLmMtOTEzLVxcdFxcdFxcdGlmIChlcnJvciBcXHUwMDI2XFx1MDAyNiBlcnJvciAhPSAtRU5PRU5UKVxcbmRyaXZlcnMvaW5wdXQvc2VyaW8vc2VyaW8uYzo5MTQ6XFx0XFx0XFx0XFx0ZGV2X3dhcm4oZGV2LCBcXFwiZmFzdCByZWNvbm5lY3QgZmFpbGVkIHdpdGggZXJyb3IgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9pbnB1dC9zZXJpby9zZXJpby5jLTkxNS1cXHRcXHRcXHRcXHRcXHQgZXJyb3IpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM9MjE2PXN0YXRpYyBpbnQgbXBjNTJ4eF9mZWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmMtMjI1LVxcdFxcdGlmICghcGh5ZGV2KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM6MjI2OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNmRldi1cXHUwMDNlZGV2LCBcXFwib2ZfcGh5X2Nvbm5lY3QgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYy0yMjctXFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pd2FycC5jPTMwMTk9cWVkX2l3YXJwX2Nvbm5lY3RfY29tcGxldGUoc3RydWN0IHFlZF9od2ZuICpwX2h3Zm4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pd2FycC5jLTMwMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfaXdhcnAuYzozMDMwOlxcdFxcdC8qIElmIGNvbm5lY3QgZmFpbGVkIC0gdXBwZXIgbGF5ZXIgZG9lc24ndCBrbm93IGFib3V0IGl0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfaXdhcnAuYy0zMDMxLVxcdFxcdGlmIChmd19yZXR1cm5fY29kZSA9PSBSRE1BX1JFVFVSTl9PSylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYz0xNjU2PXN0YXRpYyBpbnQgZW1hY191cChzdHJ1Y3QgZW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jLTE2NjUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYzoxNjY2OlxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcImVtYWNfcGh5X2Nvbm5lY3QgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmMtMTY2Ny1cXHRcXHRnb3RvIGVycl9wbV9wdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz02NDk5PWJyY21mX2Jzc19jb25uZWN0X2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTY1MjQtXFx0XFx0XFx0Y29ubl9wYXJhbXMuc3RhdHVzID0gV0xBTl9TVEFUVVNfQVVUSF9USU1FT1VUO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjY1MjU6XFx0XFx0XFx0YnBoeV9lcnIoaWZwLVxcdTAwM2VkcnZyLCBcXFwiY29ubmVjdCBmYWlsZWQ6IGV2ZW50ICV1IHN0YXR1cyAldSByZWFzb24gJXVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjUyNi1cXHRcXHRcXHRcXHQgZS1cXHUwMDNlZXZlbnRfY29kZSwgZS1cXHUwMDNlc3RhdHVzLCBlLVxcdTAwM2VyZWFzb24pO1xcbi0tXFxuZHJpdmVycy9wbGF0Zm9ybS9yYXNwYmVycnlwaS92Y2hpcS1pbnRlcmZhY2UvdmNoaXFfYXJtLmM9OTQyPXZjaGlxX2tlZXBhbGl2ZV90aHJlYWRfZnVuYyh2b2lkICp2KVxcbi0tXFxuZHJpdmVycy9wbGF0Zm9ybS9yYXNwYmVycnlwaS92Y2hpcS1pbnRlcmZhY2UvdmNoaXFfYXJtLmMtOTY0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL3BsYXRmb3JtL3Jhc3BiZXJyeXBpL3ZjaGlxLWludGVyZmFjZS92Y2hpcV9hcm0uYzo5NjU6XFx0XFx0ZGV2X2VycihzdGF0ZS1cXHUwMDNlZGV2LCBcXFwic3VzcGVuZDogJXM6IHZjaGlxX2Nvbm5lY3QgZmFpbGVkICVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgcmV0KTtcXG5kcml2ZXJzL3BsYXRmb3JtL3Jhc3BiZXJyeXBpL3ZjaGlxLWludGVyZmFjZS92Y2hpcV9hcm0uYy05NjYtXFx0XFx0Z290byBzaHV0ZG93bjtcXG4tLVxcbmRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL2lzaHRwX2VjbGl0ZS5jPTQ0OD1zdGF0aWMgaW50IGVjbF9pc2h0cF9jbF9pbml0KHN0cnVjdCBpc2h0cF9jbCAqZWNsX2lzaHRwX2NsKVxcbi0tXFxuZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvaXNodHBfZWNsaXRlLmMtNDgwLVxcdGlmIChydikge1xcbmRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL2lzaHRwX2VjbGl0ZS5jOjQ4MTpcXHRcXHRkZXZfZXJyKGNsX2RhdGFfdG9fZGV2KG9wcl9kZXYpLCBcXFwiY2xpZW50IGNvbm5lY3QgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9pc2h0cF9lY2xpdGUuYy00ODItXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYz0zMDMyPXN0YXRpYyBpbnQgaXNjc2lfaWZfZXBfY29ubmVjdChzdHJ1Y3QgaXNjc2lfdHJhbnNwb3J0ICp0cmFuc3BvcnQsXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYy0zMDQ1LVxcdFxcdGlmICghc2hvc3QpIHtcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYzozMDQ2OlxcdFxcdFxcdHByaW50ayhLRVJOX0VSUiBcXFwiZXAgY29ubmVjdCBmYWlsZWQuIENvdWxkIG5vdCBmaW5kIFxcXCJcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYy0zMDQ3LVxcdFxcdFxcdCAgICAgICBcXFwiaG9zdCBubyAldVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvc2xpbWJ1cy9xY29tLW5nZC1jdHJsLmM9NDQ3PXN0YXRpYyBpbnQgcWNvbV9zbGltX3FtaV9pbml0KHN0cnVjdCBxY29tX3NsaW1fbmdkX2N0cmwgKmN0cmwsXFxuLS1cXG5kcml2ZXJzL3NsaW1idXMvcWNvbS1uZ2QtY3RybC5jLTQ2OC1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9zbGltYnVzL3Fjb20tbmdkLWN0cmwuYzo0Njk6XFx0XFx0ZGV2X2VycihjdHJsLVxcdTAwM2VkZXYsIFxcXCJSZW1vdGUgU2VydmljZSBjb25uZWN0IGZhaWxlZDogJWRcXFxcblxcXCIsIHJjKTtcXG5kcml2ZXJzL3NsaW1idXMvcWNvbS1uZ2QtY3RybC5jLTQ3MC1cXHRcXHRnb3RvIHFtaV9jb25uZWN0X3RvX3NlcnZpY2VfZmFpbGVkO1xcbi0tXFxuZHJpdmVycy90dHkvaHZjL2h2Y3MuYz0xMDU4PXN0YXRpYyBpbnQgaHZjc19pbnN0YWxsKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsIHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpXFxuLS1cXG5kcml2ZXJzL3R0eS9odmMvaHZjcy5jLTEwODItXFx0XFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aHZjc2QtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL3R0eS9odmMvaHZjcy5jOjEwODM6XFx0XFx0XFx0cHJpbnRrKEtFUk5fV0FSTklORyBcXFwiSFZDUzogcGFydG5lciBjb25uZWN0IGZhaWxlZC5cXFxcblxcXCIpO1xcbmRyaXZlcnMvdHR5L2h2Yy9odmNzLmMtMTA4NC1cXHRcXHRcXHRnb3RvIGVycl9wdXQ7XFxuLS1cXG5kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jPTMxMz1zdGF0aWMgaW50IGNpX2hkcmNfaW14X25vdGlmeV9ldmVudChzdHJ1Y3QgY2lfaGRyYyAqY2ksIHVuc2lnbmVkIGludCBldmVudClcXG4tLVxcbmRyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMtMzM0LVxcdFxcdFxcdGRldl9lcnIoZGV2LFxcbmRyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmM6MzM1OlxcdFxcdFxcdFxcdFxcXCJoc2ljX3NldF9jb25uZWN0IGZhaWxlZCwgZXJyPSVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMtMzM2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmM9NDAzPXV2Y19mdW5jdGlvbl9jb25uZWN0KHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYy00MDctXFx0aWYgKChyZXQgPSB1c2JfZnVuY3Rpb25fYWN0aXZhdGUoXFx1MDAyNnV2Yy1cXHUwMDNlZnVuYykpIFxcdTAwM2MgMClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYzo0MDg6XFx0XFx0dXZjZ19pbmZvKFxcdTAwMjZ1dmMtXFx1MDAzZWZ1bmMsIFxcXCJVVkMgY29ubmVjdCBmYWlsZWQgd2l0aCAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYy00MDktfVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmM9NDEyPXV2Y19mdW5jdGlvbl9kaXNjb25uZWN0KHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYy00MjItXFx0aWYgKChyZXQgPSB1c2JfZnVuY3Rpb25fZGVhY3RpdmF0ZShcXHUwMDI2dXZjLVxcdTAwM2VmdW5jKSkgXFx1MDAzYyAwKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3V2Yy5jOjQyMzpcXHRcXHR1dmNnX2luZm8oXFx1MDAyNnV2Yy1cXHUwMDNlZnVuYywgXFxcIlVWQyBkaXNjb25uZWN0IGZhaWxlZCB3aXRoICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3V2Yy5jLTQyNC19XFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2NoYW9za2V5LmM9MjIxPXN0YXRpYyB2b2lkIGNoYW9za2V5X2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvY2hhb3NrZXkuYy0yMjctXFx0aWYgKCFkZXYpIHtcXG5kcml2ZXJzL3VzYi9taXNjL2NoYW9za2V5LmM6MjI4OlxcdFxcdHVzYl9kYmcoaW50ZXJmYWNlLCBcXFwiZGlzY29ubmVjdCBmYWlsZWQgLSBubyBkZXZcXFwiKTtcXG5kcml2ZXJzL3VzYi9taXNjL2NoYW9za2V5LmMtMjI5LVxcdFxcdHJldHVybjtcXG4tLVxcbmZzL2NlcGgvbWRzX2NsaWVudC5jPTU4NDM9c3RhdGljIHZvaWQgY2hlY2tfbmV3X21hcChzdHJ1Y3QgY2VwaF9tZHNfY2xpZW50ICptZHNjLFxcbi0tXFxuZnMvY2VwaC9tZHNfY2xpZW50LmMtNTkyMy1cXHRcXHRcXHRcXHRwcl93YXJuX2NsaWVudChjbCxcXG5mcy9jZXBoL21kc19jbGllbnQuYzo1OTI0OlxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFwibWRzJWQgcmVjb25uZWN0IGZhaWxlZDogJWRcXFxcblxcXCIsXFxuZnMvY2VwaC9tZHNfY2xpZW50LmMtNTkyNS1cXHRcXHRcXHRcXHRcXHQgICAgICAgaSwgcmMpO1xcbi0tXFxuZnMvY2VwaC9tZHNfY2xpZW50LmMtNTk5NC1cXHRcXHRcXHRwcl93YXJuX2NsaWVudChjbCxcXG5mcy9jZXBoL21kc19jbGllbnQuYzo1OTk1OlxcdFxcdFxcdFxcdCAgICAgICBcXFwibWRzJWQgZXhwb3J0IHRhcmdldCByZWNvbm5lY3QgZmFpbGVkOiAlZFxcXFxuXFxcIixcXG5mcy9jZXBoL21kc19jbGllbnQuYy01OTk2LVxcdFxcdFxcdFxcdCAgICAgICBpLCBlcnIpO1xcbi0tXFxuZnMvY2VwaC9tZHNfY2xpZW50LmM9NzEwMj1zdGF0aWMgdm9pZCBtZHNfcGVlcl9yZXNldChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuLS1cXG5mcy9jZXBoL21kc19jbGllbnQuYy03MTI0LVxcdFxcdFxcdHByX3dhcm5fY2xpZW50KG1kc2MtXFx1MDAzZWZzYy1cXHUwMDNlY2xpZW50LFxcbmZzL2NlcGgvbWRzX2NsaWVudC5jOjcxMjU6XFx0XFx0XFx0XFx0ICAgICAgIFxcXCJtZHMlZCByZWNvbm5lY3QgZmFpbGVkOiAlZFxcXFxuXFxcIixcXG5mcy9jZXBoL21kc19jbGllbnQuYy03MTI2LVxcdFxcdFxcdFxcdCAgICAgICBzLVxcdTAwM2VzX21kcywgcmMpO1xcbi0tXFxuZnMvc21iL2NsaWVudC9jaWZzc21iLmM9Njg0PUNJRlNTTUJURGlzKGNvbnN0IHVuc2lnbmVkIGludCB4aWQsIHN0cnVjdCBjaWZzX3Rjb24gKnRjb24pXFxuLS1cXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy03MTctXFx0aWYgKHJjKVxcbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jOjcxODpcXHRcXHRjaWZzX2RiZyhGWUksIFxcXCJUcmVlIGRpc2Nvbm5lY3QgZmFpbGVkICVkXFxcXG5cXFwiLCByYyk7XFxuZnMvc21iL2NsaWVudC9jaWZzc21iLmMtNzE5LVxcbi0tXFxuZnMvc21iL2NsaWVudC9jb25uZWN0LmM9ODI3PWlzX3NtYl9yZXNwb25zZShzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIsIHVuc2lnbmVkIGNoYXIgdHlwZSlcXG4tLVxcbmZzL3NtYi9jbGllbnQvY29ubmVjdC5jLTg5OS1cXHRcXHRcXHQgKiBJZiByZWNvbm5lY3Qgd2FzIHN1Y2Nlc3NmdWwgdGhlbiBpbmRpY2F0ZSAtRUFHQUlOXFxuZnMvc21iL2NsaWVudC9jb25uZWN0LmM6OTAwOlxcdFxcdFxcdCAqIHRvIG1pZCdzIGNhbGxlci4gSWYgcmVjb25uZWN0IGZhaWxlZCB3aXRoIC1FQUdBSU5cXG5mcy9zbWIvY2xpZW50L2Nvbm5lY3QuYy05MDEtXFx0XFx0XFx0ICogdGhlbiBtYXNrIGl0IGFzIC1FSE9TVERPV04sIHNvIG1pZCdzIGNhbGxlciB3b3VsZFxcbi0tXFxuZnMvc21iL2NsaWVudC9jb25uZWN0LmMtOTI1LVxcdFxcdFxcdC8qXFxuZnMvc21iL2NsaWVudC9jb25uZWN0LmM6OTI2OlxcdFxcdFxcdCAqIElmIHJlY29ubmVjdCBmYWlsZWQgdGhlbiB3YWl0IHR3byBzZWNvbmRzLiBJbiBtb3N0XFxuZnMvc21iL2NsaWVudC9jb25uZWN0LmMtOTI3LVxcdFxcdFxcdCAqIGNhc2VzIHdlIHdlcmUgYmVlbiBjYWxsZWQgZnJvbSB0aGUgbW91bnQgY29udGV4dCBhbmRcXG4tLVxcbmZzL3NtYi9jbGllbnQvY29ubmVjdC5jPTIzNDE9Y2lmc19nZXRfc21iX3NlcyhzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIsIHN0cnVjdCBzbWIzX2ZzX2NvbnRleHQgKmN0eClcXG4tLVxcbmZzL3NtYi9jbGllbnQvY29ubmVjdC5jLTIzODEtXFx0XFx0XFx0XFx0XFx0cmV0cmllcysrO1xcbmZzL3NtYi9jbGllbnQvY29ubmVjdC5jOjIzODI6XFx0XFx0XFx0XFx0XFx0Y2lmc19kYmcoRllJLCBcXFwiU2Vzc2lvbiByZWNvbm5lY3QgZmFpbGVkLCByZXRyeWluZyB3aXRoIGFsdGVybmF0ZSBwYXNzd29yZFxcXFxuXFxcIik7XFxuZnMvc21iL2NsaWVudC9jb25uZWN0LmMtMjM4My1cXHRcXHRcXHRcXHRcXHRzd2FwKHNlcy1cXHUwMDNlcGFzc3dvcmQsIHNlcy1cXHUwMDNlcGFzc3dvcmQyKTtcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmM9MjQyND1pbnQgc21iMl9jaGVja19kdXJhYmxlX29wbG9jayhzdHJ1Y3Qga3NtYmRfY29ubiAqY29ubixcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmMtMjQzNy1cXHRpZiAoa3NtYmRfaGFzX290aGVyX2FjdGl2ZV9mZChmcCkpIHtcXG5mcy9zbWIvc2VydmVyL29wbG9jay5jOjI0Mzg6XFx0XFx0a3NtYmRfZGVidWcoU01CLCBcXFwiRHVyYWJsZSBoYW5kbGUgcmVjb25uZWN0IGZhaWxlZDogY29tcGV0aW5nIG9wZW5cXFxcblxcXCIpO1xcbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmMtMjQzOS1cXHRcXHRyZXQgPSAtRUJBREY7XFxuLS1cXG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTI0NDMtXFx0aWYgKGtzbWJkX3Zmc19jb21wYXJlX2R1cmFibGVfb3duZXIoZnAsIHVzZXIpID09IGZhbHNlKSB7XFxuZnMvc21iL3NlcnZlci9vcGxvY2suYzoyNDQ0OlxcdFxcdGtzbWJkX2RlYnVnKFNNQiwgXFxcIkR1cmFibGUgaGFuZGxlIHJlY29ubmVjdCBmYWlsZWQ6IG93bmVyIG1pc21hdGNoXFxcXG5cXFwiKTtcXG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTI0NDUtXFx0XFx0cmV0ID0gLUVCQURGO1xcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MjQyOT1zdGF0aWMgaW50IHByb2Nlc3NfYXV0aF9zaWduYXR1cmUoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uLFxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMjQ2Mi1cXHRcXHRpZiAocmV0KSB7XFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MjQ2MzpcXHRcXHRcXHRwcl9lcnIoXFxcInByZXBhcmVfc2Vzc2lvbl9yZWNvbm5lY3QgZmFpbGVkOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yNDY0LVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMzU5PWludCBjZXBoX2Nvbl92Ml90cnlfd3JpdGUoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzM5NS1cXHRcXHRpZiAocmV0KSB7XFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzM5NjpcXHRcXHRcXHRwcl9lcnIoXFxcImNlcGhfdGNwX2Nvbm5lY3QgZmFpbGVkOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMzk3LVxcdFxcdFxcdGNvbi1cXHUwMDNlZXJyb3JfbXNnID0gXFxcImNvbm5lY3QgZXJyb3JcXFwiO1xcbi0tXFxubmV0L3Jkcy90aHJlYWRzLmM9MTYyPXZvaWQgcmRzX2Nvbm5lY3Rfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9yZHMvdGhyZWFkcy5jLTE4NS1cXHRcXHRcXHRlbHNlXFxubmV0L3Jkcy90aHJlYWRzLmM6MTg2OlxcdFxcdFxcdFxcdHJkc19jb25uX3BhdGhfZXJyb3IoY3AsIFxcXCJjb25uZWN0IGZhaWxlZFxcXFxuXFxcIik7XFxubmV0L3Jkcy90aHJlYWRzLmMtMTg3LVxcdFxcdH1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NvcmVkdW1wL2NvcmVkdW1wX3NvY2tldF90ZXN0LmM9MjA5PVRFU1RfRihjb3JlZHVtcCwgc29ja2V0X2RldGVjdF91c2Vyc3BhY2VfY2xpZW50KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY29yZWR1bXAvY29yZWR1bXBfc29ja2V0X3Rlc3QuYy0zMTAtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jb3JlZHVtcC9jb3JlZHVtcF9zb2NrZXRfdGVzdC5jOjMxMTpcXHRcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcInNvY2tldF9kZXRlY3RfdXNlcnNwYWNlX2NsaWVudCAoY2xpZW50KTogY29ubmVjdCBmYWlsZWQ6ICVtXFxcXG5cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jb3JlZHVtcC9jb3JlZHVtcF9zb2NrZXRfdGVzdC5jLTMxMi1cXHRcXHRcXHRfZXhpdChFWElUX0ZBSUxVUkUpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldHRlc3QuYz0xNjY4PXN0YXRpYyBpbnQgd2FpdF9mb3JfY29ubmVjdChpbnQgc2QpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0dGVzdC5jLTE2OTUtXFx0aWYgKHZhbCAhPSAwKSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldHRlc3QuYzoxNjk2OlxcdFxcdGxvZ19lcnJvcihcXFwiY29ubmVjdCBmYWlsZWQ6ICVkOiAlc1xcXFxuXFxcIiwgdmFsLCBzdHJlcnJvcih2YWwpKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0dGVzdC5jLTE2OTctXFx0XFx0cmV0dXJuIC0xO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMDo1MDowNi45MTAxNjM5NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MTIwNjYzMjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgaW5kZWVkIGEgY29udGFpbmVkIGNoYW5nZS4gVGhlIGRpZmYgY29uZmlybXMgaXQ7IGl0J3MgYSBzdHJhaWdodGZvcndhcmQgYWRkaXRpb24gb2YgYW4gZXJyb3IgbG9nIG1lc3NhZ2Ugd2l0aGluIHRoZSBgYnJjbWZfYnNzX2Nvbm5lY3RfZG9uZWAgZnVuY3Rpb24gaW4gYGNmZzgwMjExLmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGBicGh5X2VycmAgbG9nZ2luZyB1cG9uIGEgY29ubmVjdGlvbiBmYWlsdXJlIHdoZXJlIHRoZSBhc3NvY2lhdGlvbiBoYXMgdGltZWQgb3V0LlxuXG5HaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0sIHRoaXMgbG9va3MgbGlrZSBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nLiBJdCdzIHVzaW5nIGBicGh5X2VycmAsIGFuZCBJIGtub3cgdGhhdCB0aGlzIGRvZXNuJ3QgaW1wYWN0IGNvbnRyb2wgZmxvdyBvciBhbHRlciBhbnkgY3JpdGljYWwgZGF0YSBzdHJ1Y3R1cmVzLiBUaGlzIGFsaWducyBkaXJlY3RseSB3aXRoIHRoZSBcIldvcnRoRnV6emluZz1mYWxzZVwiIGNyaXRlcmlhIG91dGxpbmVkIGluIHNlY3Rpb24gMi5cblxuVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAuIFNpbmNlIHRoaXMgaXMgYSBsb2dnaW5nIGFkZGl0aW9uIGFuZCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgYXJlYXMgdGhhdCB3b3VsZCBiZSBpbnRlcmVzdGluZyB0byBmdXp6LCB0aGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCB3aWxsIGJlIGVtcHR5LiBJJ2xsIHByb3ZpZGUgYSBjb25jaXNlIHJlYXNvbmluZzogXCJUaGlzIHBhdGNoIGFkZHMgcHVyZWx5IGRlY29yYXRpdmUgZXJyb3IgbG9nZ2luZywgbWFraW5nIGl0IG5vdCB3b3J0aCBmdXp6aW5nLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjQzLCJPdXRwdXRUb2tlbnMiOjcxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEwOjUwOjExLjAzMDgyOTExNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIGRlYnVnL2Vycm9yIGxvZyBtZXNzYWdlIChicGh5X2VycikgcmVwb3J0aW5nIGNvbm5lY3Rpb24gZmFpbHVyZSBkZXRhaWxzLiBJdCBpbnRyb2R1Y2VzIHB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdywgc3RhdGUgbWFuYWdlbWVudCwgb3IgZGF0YSBzdHJ1Y3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgZGVidWcvZXJyb3IgbG9nIG1lc3NhZ2UgKGJwaHlfZXJyKSByZXBvcnRpbmcgY29ubmVjdGlvbiBmYWlsdXJlIGRldGFpbHMuIEl0IGludHJvZHVjZXMgcHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93LCBzdGF0ZSBtYW5hZ2VtZW50LCBvciBkYXRhIHN0cnVjdHVyZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMDo1MDoxMS4wMzA4NTE5NDVaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflown7rfn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-09 10:04:38 +0000 UTC FinishedAt: 2026-09-09 10:50:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgZGVidWcvZXJyb3IgbG9nIG1lc3NhZ2UgKGJwaHlfZXJyKSByZXBvcnRpbmcgY29ubmVjdGlvbiBmYWlsdXJlIGRldGFpbHMuIEl0IGludHJvZHVjZXMgcHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93LCBzdGF0ZSBtYW5hZ2VtZW50LCBvciBkYXRhIHN0cnVjdHVyZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2NlODkyZDQ5OGEwNDJiY2QwZDllMmRkODU5MmFlNzIxZDQyOGJiZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMTA6NDk6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuaW5kZXggODcyYzQ4ODA2ZDA5MS4uNGY0OGRiNmQ4NjdlYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuQEAgLTY1MjIsNiAmIzQzOzY1MjIsOCBAQCBicmNtZl9ic3NfY29ubmVjdF9kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRcdFx0Y2xlYXJfYml0KEJSQ01GX1ZJRl9TVEFUVVNfQVNTT0NfU1VDQ0VTUyxcbiBcdFx0XHRcdCAgXHUwMDI2aWZwLVx1MDAzZXZpZi1cdTAwM2VzbWVfc3RhdGUpO1xuIFx0XHRcdGNvbm5fcGFyYW1zLnN0YXR1cyA9IFdMQU5fU1RBVFVTX0FVVEhfVElNRU9VVDtcbiYjNDM7XHRcdFx0YnBoeV9lcnIoaWZwLVx1MDAzZWRydnIsIFwmIzM0O2Nvbm5lY3QgZmFpbGVkOiBldmVudCAldSBzdGF0dXMgJXUgcmVhc29uICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCBlLVx1MDAzZWV2ZW50X2NvZGUsIGUtXHUwMDNlc3RhdHVzLCBlLVx1MDAzZXJlYXNvbik7XG4gXHRcdH1cbiBcdFx0Y29ubl9wYXJhbXMubGlua3NbMF0uYnNzaWQgPSBwcm9maWxlLVx1MDAzZWJzc2lkO1xuIFx0XHRjb25uX3BhcmFtcy5yZXFfaWUgPSBjb25uX2luZm8tXHUwMDNlcmVxX2llO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIGRlYnVnL2Vycm9yIGxvZyBtZXNzYWdlIChicGh5X2VycikgcmVwb3J0aW5nIGNvbm5lY3Rpb24gZmFpbHVyZSBkZXRhaWxzLiBJdCBpbnRyb2R1Y2VzIHB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdywgc3RhdGUgbWFuYWdlbWVudCwgb3IgZGF0YSBzdHJ1Y3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNjZTg5MmQ0OThhMDQyYmNkMGQ5ZTJkZDg1OTJhZTcyMWQ0MjhiYmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDEwOjQ5OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwppbmRleCA4NzJjNDg4MDZkMDkxLi40ZjQ4ZGI2ZDg2N2ViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwpAQCAtNjUyMiw2ICYjNDM7NjUyMiw4IEBAIGJyY21mX2Jzc19jb25uZWN0X2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZywKIAkJCWNsZWFyX2JpdChCUkNNRl9WSUZfU1RBVFVTX0FTU09DX1NVQ0NFU1MsCiAJCQkJICAmYW1wO2lmcC0mZ3Q7dmlmLSZndDtzbWVfc3RhdGUpOwogCQkJY29ubl9wYXJhbXMuc3RhdHVzID0gV0xBTl9TVEFUVVNfQVVUSF9USU1FT1VUOwomIzQzOwkJCWJwaHlfZXJyKGlmcC0mZ3Q7ZHJ2ciwgJiMzNDtjb25uZWN0IGZhaWxlZDogZXZlbnQgJXUgc3RhdHVzICV1IHJlYXNvbiAldVxuJiMzNDssCiYjNDM7CQkJCSBlLSZndDtldmVudF9jb2RlLCBlLSZndDtzdGF0dXMsIGUtJmd0O3JlYXNvbik7CiAJCX0KIAkJY29ubl9wYXJhbXMubGlua3NbMF0uYnNzaWQgPSBwcm9maWxlLSZndDtic3NpZDsKIAkJY29ubl9wYXJhbXMucmVxX2llID0gY29ubl9pbmZvLSZndDtyZXFfaWU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTUKCQkJCQkJCW91dHB1dDogNTkKCQkJCQkJCXRob3VnaHRzOiA0NTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQnJvYWRjb20gV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFuYWx5emUgdGhlIGNoYW5nZXMgbWFkZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNgLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBlaXRoZXIgcmVhZGluZyB0aGUgZmlsZSBkaXJlY3RseSBvciB1c2luZyBgZ3JlcHBlcmAgdG8gcXVpY2tseSBnZXQgYW4gb3ZlcnZpZXcgb2Ygd2hhdCBjaGFuZ2VkLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgYWN0dWFsIGRpZmYuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhcm91bmQgbGluZSA2NTIyLiBGcm9tIGEgY3Vyc29yeSBnbGFuY2UsIGl0IGxvb2tzIGxpa2UgYSBuZXcgZXJyb3IgbWVzc2FnZSBpcyBiZWluZyBhZGRlZCB3aXRoaW4gdGhlIGBicmNtZl9ic3NfY29ubmVjdF9kb25lYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIGEgY29ubmVjdGlvbiBmYWlsdXJlIGlzIGJlaW5nIHJlcG9ydGVkIHdpdGggdGhlIGFkZGl0aW9uIG9mIGEgbmV3IGBicGh5X2VycmAgc3RhdGVtZW50LiBUaGUgbG9nZ2luZyBpcyBjYXB0dXJpbmcgdGhlIGV2ZW50IGNvZGUsIHN0YXR1cywgYW5kIHJlYXNvbiBpbiB0aGUgZXZlbnQgb2YgYSB0aW1lb3V0LiBUaGlzIGlzIGxpa2VseSB2YWx1YWJsZSBmb3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gaXNzdWVzLgoKSSYjMzk7bGwgcXVpY2tseSBjaGVjayB3aGF0IHRoZSBgYnBoeV9lcnJgIG1hY3JvIGlzIGFjdHVhbGx5IGRvaW5nLiBJJiMzOTtsbCByZWFkIGFyb3VuZCBsaW5lIDY1MjIgb2YgdGhlIHNvdXJjZS4gVGhpcyB0eXBlIG9mIGFkZGVkIGxvZ2dpbmcgaXMgY3JpdGljYWwgZm9yIGRpYWdub3N0aWNzLiBJdCYjMzk7cyBvZnRlbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgZnJ1c3RyYXRpbmcgYnVnIGFuZCBhIHNvbHZhYmxlIHByb2JsZW0uIEl0JiMzOTtzIGEgc29saWQgYWRkaXRpb24gaWYgaXQgaW5jcmVhc2VzIHRoZSBncmFudWxhcml0eSBvZiB0aGUgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTA6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY1MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NjUxMDpcdFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChCUkNNRl9WSUZfU1RBVFVTX0NPTk5FQ1RJTkcsXG42NTExOlx0XHRcdFx0ICAgICAgIFx1MDAyNmlmcC1cdTAwM2V2aWYtXHUwMDNlc21lX3N0YXRlKSkge1xuNjUxMjpcdFx0XHRtZW1zZXQoXHUwMDI2Y29ubl9wYXJhbXMsIDAsIHNpemVvZihjb25uX3BhcmFtcykpO1xuNjUxMzpcdFx0XHRpZiAoY29tcGxldGVkKSB7XG42NTE0Olx0XHRcdFx0YnJjbWZfZ2V0X2Fzc29jX2llcyhjZmcsIGlmcCk7XG42NTE1Olx0XHRcdFx0YnJjbWZfdXBkYXRlX2Jzc19pbmZvKGNmZywgaWZwKTtcbjY1MTY6XHRcdFx0XHRzZXRfYml0KEJSQ01GX1ZJRl9TVEFUVVNfQ09OTkVDVEVELFxuNjUxNzpcdFx0XHRcdFx0XHUwMDI2aWZwLVx1MDAzZXZpZi1cdTAwM2VzbWVfc3RhdGUpO1xuNjUxODpcdFx0XHRcdGNvbm5fcGFyYW1zLnN0YXR1cyA9IFdMQU5fU1RBVFVTX1NVQ0NFU1M7XG42NTE5Olx0XHRcdH0gZWxzZSB7XG42NTIwOlx0XHRcdFx0Y2xlYXJfYml0KEJSQ01GX1ZJRl9TVEFUVVNfRUFQX1NVQ0NFU1MsXG42NTIxOlx0XHRcdFx0XHQgIFx1MDAyNmlmcC1cdTAwM2V2aWYtXHUwMDNlc21lX3N0YXRlKTtcbjY1MjI6XHRcdFx0XHRjbGVhcl9iaXQoQlJDTUZfVklGX1NUQVRVU19BU1NPQ19TVUNDRVNTLFxuNjUyMzpcdFx0XHRcdFx0ICBcdTAwMjZpZnAtXHUwMDNldmlmLVx1MDAzZXNtZV9zdGF0ZSk7XG42NTI0Olx0XHRcdFx0Y29ubl9wYXJhbXMuc3RhdHVzID0gV0xBTl9TVEFUVVNfQVVUSF9USU1FT1VUO1xuNjUyNTpcdFx0XHRcdGJwaHlfZXJyKGlmcC1cdTAwM2VkcnZyLCBcJiMzNDtjb25uZWN0IGZhaWxlZDogZXZlbnQgJXUgc3RhdHVzICV1IHJlYXNvbiAldVxcblwmIzM0OyxcbjY1MjY6XHRcdFx0XHRcdCBlLVx1MDAzZWV2ZW50X2NvZGUsIGUtXHUwMDNlc3RhdHVzLCBlLVx1MDAzZXJlYXNvbik7XG42NTI3Olx0XHRcdH1cbjY1Mjg6XHRcdFx0Y29ubl9wYXJhbXMubGlua3NbMF0uYnNzaWQgPSBwcm9maWxlLVx1MDAzZWJzc2lkO1xuNjUyOTpcdFx0XHRjb25uX3BhcmFtcy5yZXFfaWUgPSBjb25uX2luZm8tXHUwMDNlcmVxX2llO1xuNjUzMDpcdFx0XHRjb25uX3BhcmFtcy5yZXFfaWVfbGVuID0gY29ubl9pbmZvLVx1MDAzZXJlcV9pZV9sZW47XG42NTMxOlx0XHRcdGNvbm5fcGFyYW1zLnJlc3BfaWUgPSBjb25uX2luZm8tXHUwMDNlcmVzcF9pZTtcbjY1MzI6XHRcdFx0Y29ubl9wYXJhbXMucmVzcF9pZV9sZW4gPSBjb25uX2luZm8tXHUwMDNlcmVzcF9pZV9sZW47XG42NTMzOlx0XHRcdGNmZzgwMjExX2Nvbm5lY3RfZG9uZShuZGV2LCBcdTAwMjZjb25uX3BhcmFtcywgR0ZQX0tFUk5FTCk7XG42NTM0Olx0XHRcdGJyY21mX2RiZyhDT05OLCBcJiMzNDtSZXBvcnQgY29ubmVjdCByZXN1bHQgLSBjb25uZWN0aW9uICVzXFxuXCYjMzQ7LFxuNjUzNTpcdFx0XHRcdCAgY29tcGxldGVkID8gXCYjMzQ7c3VjY2VlZGVkXCYjMzQ7IDogXCYjMzQ7ZmFpbGVkXCYjMzQ7KTtcbjY1MzY6XHRcdH1cbjY1Mzc6XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7RXhpdFxcblwmIzM0Oyk7XG42NTM4Olx0XHRyZXR1cm4gMDtcbjY1Mzk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTA6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQzNgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgYnBoeV9lcnJgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgYnBoeV9lcnJgIHZhcmlhYmxlIGJldHRlci4gSXQmIzM5O3MgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBzeXN0ZW0mIzM5O3MgYmVoYXZpb3IgYW5kIHBvdGVudGlhbCBmYWlsdXJlIG1vZGVzLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmVmZXJlbmNlIGl0cyBkZWZpbml0aW9uLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgSSBrbm93IHdoYXQgaXQgcmVmZXJlbmNlcywgdGhlIGRvbWFpbiBvZiB2YWx1ZXMsIGFuZCB3aGF0IHRoZSBwb3NzaWJsZSByYW1pZmljYXRpb25zIG9mIHZhcmlvdXMgc3RhdGVzIG1heSBiZS4gTXkgcGFzdCBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgdGhlc2UgdHlwZXMgb2YgbmFtZXMgYXJlIG9mdGVuIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUsIGludGVycnVwdHMsIG9yIGxvdy1sZXZlbCBpbnRlcmZhY2VzLCBzbyBhIHF1aWNrIGNoZWNrIG9mIGl0cyBkZWZpbml0aW9uIHNob3VsZCBwcm92aWRlIGNyaXRpY2FsIGNvbnRleHQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLi4uIEkgc2hvdWxkIGJlIGFibGUgdG8gdHJhY2sgZG93biBpdHMgcHVycG9zZSBhbmQgdXNlIGNhc2Ugd2l0aG91dCBtdWNoIHRyb3VibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTA6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBicGh5X2VyciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZGVidWcuaD00MD12b2lkIF9fYnJjbWZfZXJyKHN0cnVjdCBicmNtZl9idXMgKmJ1cywgY29uc3QgY2hhciAqZnVuYywgY29uc3QgY2hhciAqZm10LCAuLi4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9kZWJ1Zy5oLTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2RlYnVnLmg6NTQ6I2RlZmluZSBicGh5X2VycihkcnZyLCBmbXQsIC4uLilcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9kZWJ1Zy5oLTU1LVx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MjIKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSB3ZSBnby4uLgoKKipEaXZpbmcgaW50byB0aGUgYnJjbWZtYWMgRGVidWcgSGVhZGVyKioKCkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2RlYnVnLmhgLiBJJiMzOTttIGd1ZXNzaW5nIHRoaXMgZmlsZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZpbmVyIHBvaW50cyBvZiBkZWJ1Z2dpbmcgdGhlIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgYnJjbWZtYWMgaW50ZXJmYWNlLiBDb25zaWRlcmluZyBteSBleHBlcnRpc2UsIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgaGVhZGVyIHRvIGNvbnRhaW4gYSB0cmVhc3VyZSB0cm92ZSBvZiBtYWNyb3MsIGRlZmluaXRpb25zLCBhbmQgcGVyaGFwcyBldmVuIHNvbWUgZnVuY3Rpb24gcHJvdG90eXBlcyByZWxhdGVkIHRvIGxvZ2dpbmcsIHRyYWNpbmcsIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZToKCiogICAqKkxvZyBsZXZlbHM6KiogSG93IGdyYW51bGFyIGNhbiBJIGdldCB3aXRoIHRoZSBkZWJ1ZyBvdXRwdXQ/IElzIHRoZXJlIHN1cHBvcnQgZm9yIGxldmVscyBsaWtlIERFQlVHLCBJTkZPLCBXQVJOLCBFUlJPUiwgYW5kIG1heWJlIGV2ZW4gbW9yZSBzcGVjaWFsaXplZCBvbmVzPwoqICAgKipDb25kaXRpb25hbCBjb21waWxhdGlvbjoqKiBBcmUgdGhlcmUgYCNpZmRlZmAgYmxvY2tzIGNvbnRyb2xsZWQgYnkga2VybmVsIGNvbmZpZyBvcHRpb25zIG9yIGRlYnVnIGZsYWdzIHRoYXQgc2VsZWN0aXZlbHkgaW5jbHVkZSBvciBleGNsdWRlIGRlYnVnIGNvZGU/IFRoaXMgaXMgdXN1YWxseSBjcnVjaWFsIGZvciBwZXJmb3JtYW5jZSBvbiBwcm9kdWN0aW9uIHN5c3RlbXMuCiogICAqKlRyYWNlcG9pbnRzL0luc3RydW1lbnRhdGlvbjoqKiBJcyB0aGVyZSBhbnkgZXZpZGVuY2Ugb2YgdHJhY2Vwb2ludHMgb3Igb3RoZXIgaW5zdHJ1bWVudGF0aW9uIHRlY2huaXF1ZXMgZGVzaWduZWQgdG8gY2FwdHVyZSBwZXJmb3JtYW5jZSBkYXRhIG9yIGNyaXRpY2FsIGV2ZW50cyB3aXRoaW4gdGhlIGRyaXZlcj8KKiAgICoqRGF0YSBzdHJ1Y3R1cmVzIGZvciBsb2dnaW5nOioqIFdoYXQga2luZCBvZiBzdHJ1Y3R1cmVzIGFyZSB1c2VkIHRvIGVuY2Fwc3VsYXRlIGRlYnVnIG1lc3NhZ2VzPyBBcmUgdGhleSBlZmZpY2llbnQ/IERvIHRoZXkgc3VwcG9ydCB0aW1lc3RhbXBzLCB0aHJlYWQgSURzLCBhbmQgb3RoZXIgdXNlZnVsIG1ldGFkYXRhPwoqICAgKipFcnJvciBjb2RlIGRlZmluaXRpb25zOioqIEFyZSB0aGVyZSBkZXRhaWxlZCBlcnJvciBjb2RlcyB0byBoZWxwIGRpYWdub3NlIHdpcmVsZXNzIGNvbm5lY3Rpb24gZmFpbHVyZXM/CiogICAqKlNwZWNpYWxpemVkIGRlYnVnIGZ1bmN0aW9uczoqKiBBcmUgdGhlcmUgZnVuY3Rpb25zIGRlc2lnbmVkIGZvciBkdW1waW5nIHNwZWNpZmljIGRyaXZlciBvciBoYXJkd2FyZSBzdGF0ZSwgbGlrZSByZWdpc3RlciBjb250ZW50cyBvciBmaXJtd2FyZSB2YXJpYWJsZXM/CgpFc3NlbnRpYWxseSwgSSBleHBlY3QgdGhpcyBoZWFkZXIgdG8gbGF5IHRoZSBncm91bmR3b3JrIGZvciBob3cgdGhlIGRyaXZlciYjMzk7cyBpbnRlcm5hbHMgY2FuIGJlIGV4YW1pbmVkIGFuZCB0cm91Ymxlc2hvb3RlZC4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O3Mgd2VsbC1vcmdhbml6ZWQsIHdlbGwtY29tbWVudGVkLCBhbmQgcHJvdmlkZXMgYSBjbGVhciBmcmFtZXdvcmsgZm9yIGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgZGVidWdnaW5nIGZlYXR1cmVzLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNvbXByZWhlbnNpdmUgcGljdHVyZSBvZiB3aGF0IGRlYnVnZ2luZyB0b29scyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSYjMzk7cmUgaW50ZW5kZWQgdG8gYmUgdXNlZC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9kZWJ1Zy5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0MDpcdHZvaWQgX19icmNtZl9lcnIoc3RydWN0IGJyY21mX2J1cyAqYnVzLCBjb25zdCBjaGFyICpmdW5jLCBjb25zdCBjaGFyICpmbXQsIC4uLik7XG4gIDQxOlx0LyogTWFjcm8gZm9yIGVycm9yIG1lc3NhZ2VzLiBXaGVuIGRlYnVnZ2luZyAvIHRyYWNpbmcgdGhlIGRyaXZlciBhbGwgZXJyb3JcbiAgNDI6XHQgKiBtZXNzYWdlcyBhcmUgaW1wb3J0YW50IHRvIHVzLlxuICA0MzpcdCAqL1xuICA0NDpcdCNpZm5kZWYgYnJjbWZfZXJyXG4gIDQ1Olx0I2RlZmluZSBicmNtZl9lcnIoZm10LCAuLi4pXHRcdFx0XHRcdFx0XFxcbiAgNDY6XHRcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XFxcbiAgNDc6XHRcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0JSQ01EQkcpIHx8XHRcdFx0XFxcbiAgNDg6XHRcdFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0JSQ01fVFJBQ0lORykgfHxcdFx0XHRcXFxuICA0OTpcdFx0XHQgICAgbmV0X3JhdGVsaW1pdCgpKVx0XHRcdFx0XHRcXFxuICA1MDpcdFx0XHRcdF9fYnJjbWZfZXJyKE5VTEwsIF9fZnVuY19fLCBmbXQsICMjX19WQV9BUkdTX18pO1xcXG4gIDUxOlx0XHR9IHdoaWxlICgwKVxuICA1MjpcdCNlbmRpZlxuICA1MzpcdFxuICA1NDpcdCNkZWZpbmUgYnBoeV9lcnIoZHJ2ciwgZm10LCAuLi4pXHRcdFx0XHRcdFxcXG4gIDU1Olx0XHRkbyB7XHRcdFx0XHRcdFx0XHRcdFxcXG4gIDU2Olx0XHRcdGlmIChJU19FTkFCTEVEKENPTkZJR19CUkNNREJHKSB8fFx0XHRcdFxcXG4gIDU3Olx0XHRcdCAgICBJU19FTkFCTEVEKENPTkZJR19CUkNNX1RSQUNJTkcpIHx8XHRcdFx0XFxcbiAgNTg6XHRcdFx0ICAgIG5ldF9yYXRlbGltaXQoKSlcdFx0XHRcdFx0XFxcbiAgNTk6XHRcdFx0XHR3aXBoeV9lcnIoKGRydnIpLVx1MDAzZXdpcGh5LCBcJiMzNDslczogXCYjMzQ7IGZtdCwgX19mdW5jX18sXHRcXFxuICA2MDpcdFx0XHRcdFx0ICAjI19fVkFfQVJHU19fKTtcdFx0XHRcXFxuICA2MTpcdFx0fSB3aGlsZSAoMClcbiAgNjI6XHRcbiAgNjM6XHQjZGVmaW5lIGJwaHlfaW5mb19vbmNlKGRydnIsIGZtdCwgLi4uKVx0XHRcdFx0XHRcXFxuICA2NDpcdFx0d2lwaHlfaW5mb19vbmNlKChkcnZyKS1cdTAwM2V3aXBoeSwgXCYjMzQ7JXM6IFwmIzM0OyBmbXQsIF9fZnVuY19fLFx0XHRcXFxuICA2NTpcdFx0XHRcdCMjX19WQV9BUkdTX18pXG4gIDY2Olx0XG4gIDY3Olx0I2lmIGRlZmluZWQoREVCVUcpIHx8IGRlZmluZWQoQ09ORklHX0JSQ01fVFJBQ0lORylcbiAgNjg6XHRcbiAgNjk6XHQvKiBGb3IgZGVidWcvdHJhY2luZyBwdXJwb3NlcyB0cmVhdCBpbmZvIG1lc3NhZ2VzIGFzIGVycm9ycyAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MjYKCQkJCQkJCW91dHB1dDogMTYKCQkJCQkJCXRob3VnaHRzOiAzMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIERlY2lzaW9uKioKCk9rYXksIHRpbWUgdG8gbWFrZSBhIGNhbGwuIExldCYjMzk7cyBydW4gZG93biB0aGUgY2hlY2tsaXN0IGZvciByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAg4oCTIHRob3NlIG5lZ2F0aXZlIGNyaXRlcmlhLiBUaGUgY29yZSBpczogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzJiMzNDsuIEdvdCBpdC4KCkxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgYWxsIGl0IGFkZHMgaXMgdGhpczoKCmBgYGMKJiM0MzsJCQlicGh5X2VycihpZnAtJmd0O2RydnIsICYjMzQ7Y29ubmVjdCBmYWlsZWQ6IGV2ZW50ICV1IHN0YXR1cyAldSByZWFzb24gJXVcbiYjMzQ7LAomIzQzOwkJCQkgZS0mZ3Q7ZXZlbnRfY29kZSwgZS0mZ3Q7c3RhdHVzLCBlLSZndDtyZWFzb24pOwpgYGAKClJpZ2h0LCBgYnBoeV9lcnJgLiBJIGtub3cgdGhhdCBmdW5jdGlvbi4gSXQgY2FsbHMgYHdpcGh5X2VycmAsIHdoaWNoIGluIHR1cm4gZm9ybWF0cyBhIG1lc3NhZ2UgYW5kIHByaW50cyBpdCB1c2luZyBgZGV2X2VycmAgb24gYHdpcGh5LSZndDtkZXZgLiBJdCYjMzk7cyBkZWZpbml0ZWx5IGp1c3QgYSBsb2dnaW5nIHN0YXRlbWVudC4gSXQmIzM5O3Mgbm90IG1lc3Npbmcgd2l0aCBhbnkgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4gU28sIHVuZGVyIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBsaXN0LCB0aGF0IGZhbGxzICpzcXVhcmVseSogaW50byAmIzM0O1B1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuJiMzNDsKCkJ1dCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgc29tZXRoaW5nLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb21taXQgZm9yIGFueSAqb3RoZXIqIGNoYW5nZXMsIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIGNvbmZpcm0gdGhpcyBpcyAqYWxsKiB0aGUgcGF0Y2ggY29udGFpbnMuIEdvdHRhIGJlIGNlcnRhaW4gYmVmb3JlIEkgc2VuZCB0aGlzIGJhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Nvbm5lY3QgZmFpbGVkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvc3BhcmMva2VybmVsL3Zpb2hzLmM9NzY1PXZvaWQgdmlvX3BvcnRfdXAoc3RydWN0IHZpb19kcml2ZXJfc3RhdGUgKnZpbylcbi0tXG5hcmNoL3NwYXJjL2tlcm5lbC92aW9ocy5jLTc4OS1cdFx0aWYgKGVycilcbmFyY2gvc3BhcmMva2VybmVsL3Zpb2hzLmM6NzkwOlx0XHRcdHByaW50ayhLRVJOX1dBUk5JTkcgXCYjMzQ7JXM6IFBvcnQgJWx1IGNvbm5lY3QgZmFpbGVkLCBcJiMzNDtcbmFyY2gvc3BhcmMva2VybmVsL3Zpb2hzLmMtNzkxLVx0XHRcdCAgICAgICBcJiMzNDtlcnI9JWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYz0xNDI2PXN0YXRpYyB2b2lkIHNlbmRfZGlzY29ubmVjdHMoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0NDQtXHRcdFx0ZGV2X2VycihkaXNrX3RvX2RldihuYmQtXHUwMDNlZGlzayksXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE0NDU6XHRcdFx0XHRcJiMzNDtTZW5kIGRpc2Nvbm5lY3QgZmFpbGVkICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9ibG9jay9uYmQuYy0xNDQ2LVx0XHRtdXRleF91bmxvY2soXHUwMDI2bnNvY2stXHUwMDNldHhfbG9jayk7XG4tLVxuZHJpdmVycy9pbnB1dC9zZXJpby9zZXJpby5jPTU3Mj1zdGF0aWMgdm9pZCBzZXJpb19yZWNvbm5lY3Rfc3VidHJlZShzdHJ1Y3Qgc2VyaW8gKnJvb3QpXG4tLVxuZHJpdmVycy9pbnB1dC9zZXJpby9zZXJpby5jLTU5MS1cdFx0LypcbmRyaXZlcnMvaW5wdXQvc2VyaW8vc2VyaW8uYzo1OTI6XHRcdCAqIEVpdGhlciBpdCB3YXMgYSBsZWFmIG5vZGUgb3IgcmVjb25uZWN0IGZhaWxlZCBhbmQgaXRcbmRyaXZlcnMvaW5wdXQvc2VyaW8vc2VyaW8uYy01OTMtXHRcdCAqIGJlY2FtZSBhIGxlYWYgbm9kZS4gQ29udGludWUgcmVjb25uZWN0aW5nIHN0YXJ0aW5nIHdpdGhcbi0tXG5kcml2ZXJzL2lucHV0L3NlcmlvL3NlcmlvLmM9OTA1PXN0YXRpYyBpbnQgc2VyaW9fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2lucHV0L3NlcmlvL3NlcmlvLmMtOTEzLVx0XHRcdGlmIChlcnJvciBcdTAwMjZcdTAwMjYgZXJyb3IgIT0gLUVOT0VOVClcbmRyaXZlcnMvaW5wdXQvc2VyaW8vc2VyaW8uYzo5MTQ6XHRcdFx0XHRkZXZfd2FybihkZXYsIFwmIzM0O2Zhc3QgcmVjb25uZWN0IGZhaWxlZCB3aXRoIGVycm9yICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9pbnB1dC9zZXJpby9zZXJpby5jLTkxNS1cdFx0XHRcdFx0IGVycm9yKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYz0yMTY9c3RhdGljIGludCBtcGM1Mnh4X2ZlY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmMtMjI1LVx0XHRpZiAoIXBoeWRldikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM6MjI2Olx0XHRcdGRldl9lcnIoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXCYjMzQ7b2ZfcGh5X2Nvbm5lY3QgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eC5jLTIyNy1cdFx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pd2FycC5jPTMwMTk9cWVkX2l3YXJwX2Nvbm5lY3RfY29tcGxldGUoc3RydWN0IHFlZF9od2ZuICpwX2h3Zm4sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfaXdhcnAuYy0zMDI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfaXdhcnAuYzozMDMwOlx0XHQvKiBJZiBjb25uZWN0IGZhaWxlZCAtIHVwcGVyIGxheWVyIGRvZXNuJiMzOTt0IGtub3cgYWJvdXQgaXQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2l3YXJwLmMtMzAzMS1cdFx0aWYgKGZ3X3JldHVybl9jb2RlID09IFJETUFfUkVUVVJOX09LKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYz0xNjU2PXN0YXRpYyBpbnQgZW1hY191cChzdHJ1Y3QgZW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYy0xNjY1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jOjE2NjY6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O2VtYWNfcGh5X2Nvbm5lY3QgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYy0xNjY3LVx0XHRnb3RvIGVycl9wbV9wdXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NjQ5OT1icmNtZl9ic3NfY29ubmVjdF9kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjUyNC1cdFx0XHRjb25uX3BhcmFtcy5zdGF0dXMgPSBXTEFOX1NUQVRVU19BVVRIX1RJTUVPVVQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2NTI1Olx0XHRcdGJwaHlfZXJyKGlmcC1cdTAwM2VkcnZyLCBcJiMzNDtjb25uZWN0IGZhaWxlZDogZXZlbnQgJXUgc3RhdHVzICV1IHJlYXNvbiAldVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTY1MjYtXHRcdFx0XHQgZS1cdTAwM2VldmVudF9jb2RlLCBlLVx1MDAzZXN0YXR1cywgZS1cdTAwM2VyZWFzb24pO1xuLS1cbmRyaXZlcnMvcGxhdGZvcm0vcmFzcGJlcnJ5cGkvdmNoaXEtaW50ZXJmYWNlL3ZjaGlxX2FybS5jPTk0Mj12Y2hpcV9rZWVwYWxpdmVfdGhyZWFkX2Z1bmModm9pZCAqdilcbi0tXG5kcml2ZXJzL3BsYXRmb3JtL3Jhc3BiZXJyeXBpL3ZjaGlxLWludGVyZmFjZS92Y2hpcV9hcm0uYy05NjQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL3BsYXRmb3JtL3Jhc3BiZXJyeXBpL3ZjaGlxLWludGVyZmFjZS92Y2hpcV9hcm0uYzo5NjU6XHRcdGRldl9lcnIoc3RhdGUtXHUwMDNlZGV2LCBcJiMzNDtzdXNwZW5kOiAlczogdmNoaXFfY29ubmVjdCBmYWlsZWQgJWRcXG5cJiMzNDssIF9fZnVuY19fLCByZXQpO1xuZHJpdmVycy9wbGF0Zm9ybS9yYXNwYmVycnlwaS92Y2hpcS1pbnRlcmZhY2UvdmNoaXFfYXJtLmMtOTY2LVx0XHRnb3RvIHNodXRkb3duO1xuLS1cbmRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL2lzaHRwX2VjbGl0ZS5jPTQ0OD1zdGF0aWMgaW50IGVjbF9pc2h0cF9jbF9pbml0KHN0cnVjdCBpc2h0cF9jbCAqZWNsX2lzaHRwX2NsKVxuLS1cbmRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL2lzaHRwX2VjbGl0ZS5jLTQ4MC1cdGlmIChydikge1xuZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvaXNodHBfZWNsaXRlLmM6NDgxOlx0XHRkZXZfZXJyKGNsX2RhdGFfdG9fZGV2KG9wcl9kZXYpLCBcJiMzNDtjbGllbnQgY29ubmVjdCBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvaXNodHBfZWNsaXRlLmMtNDgyLVxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9pc2NzaS5jPTMwMzI9c3RhdGljIGludCBpc2NzaV9pZl9lcF9jb25uZWN0KHN0cnVjdCBpc2NzaV90cmFuc3BvcnQgKnRyYW5zcG9ydCxcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYy0zMDQ1LVx0XHRpZiAoIXNob3N0KSB7XG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYzozMDQ2Olx0XHRcdHByaW50ayhLRVJOX0VSUiBcJiMzNDtlcCBjb25uZWN0IGZhaWxlZC4gQ291bGQgbm90IGZpbmQgXCYjMzQ7XG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYy0zMDQ3LVx0XHRcdCAgICAgICBcJiMzNDtob3N0IG5vICV1XFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvc2xpbWJ1cy9xY29tLW5nZC1jdHJsLmM9NDQ3PXN0YXRpYyBpbnQgcWNvbV9zbGltX3FtaV9pbml0KHN0cnVjdCBxY29tX3NsaW1fbmdkX2N0cmwgKmN0cmwsXG4tLVxuZHJpdmVycy9zbGltYnVzL3Fjb20tbmdkLWN0cmwuYy00NjgtXHRpZiAocmMgXHUwMDNjIDApIHtcbmRyaXZlcnMvc2xpbWJ1cy9xY29tLW5nZC1jdHJsLmM6NDY5Olx0XHRkZXZfZXJyKGN0cmwtXHUwMDNlZGV2LCBcJiMzNDtSZW1vdGUgU2VydmljZSBjb25uZWN0IGZhaWxlZDogJWRcXG5cJiMzNDssIHJjKTtcbmRyaXZlcnMvc2xpbWJ1cy9xY29tLW5nZC1jdHJsLmMtNDcwLVx0XHRnb3RvIHFtaV9jb25uZWN0X3RvX3NlcnZpY2VfZmFpbGVkO1xuLS1cbmRyaXZlcnMvdHR5L2h2Yy9odmNzLmM9MTA1OD1zdGF0aWMgaW50IGh2Y3NfaW5zdGFsbChzdHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyLCBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KVxuLS1cbmRyaXZlcnMvdHR5L2h2Yy9odmNzLmMtMTA4Mi1cdFx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmh2Y3NkLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvdHR5L2h2Yy9odmNzLmM6MTA4MzpcdFx0XHRwcmludGsoS0VSTl9XQVJOSU5HIFwmIzM0O0hWQ1M6IHBhcnRuZXIgY29ubmVjdCBmYWlsZWQuXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdHR5L2h2Yy9odmNzLmMtMTA4NC1cdFx0XHRnb3RvIGVycl9wdXQ7XG4tLVxuZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYz0zMTM9c3RhdGljIGludCBjaV9oZHJjX2lteF9ub3RpZnlfZXZlbnQoc3RydWN0IGNpX2hkcmMgKmNpLCB1bnNpZ25lZCBpbnQgZXZlbnQpXG4tLVxuZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYy0zMzQtXHRcdFx0ZGV2X2VycihkZXYsXG5kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jOjMzNTpcdFx0XHRcdFwmIzM0O2hzaWNfc2V0X2Nvbm5lY3QgZmFpbGVkLCBlcnI9JWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jLTMzNi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmM9NDAzPXV2Y19mdW5jdGlvbl9jb25uZWN0KHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmMtNDA3LVx0aWYgKChyZXQgPSB1c2JfZnVuY3Rpb25fYWN0aXZhdGUoXHUwMDI2dXZjLVx1MDAzZWZ1bmMpKSBcdTAwM2MgMClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3V2Yy5jOjQwODpcdFx0dXZjZ19pbmZvKFx1MDAyNnV2Yy1cdTAwM2VmdW5jLCBcJiMzNDtVVkMgY29ubmVjdCBmYWlsZWQgd2l0aCAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3V2Yy5jLTQwOS19XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmM9NDEyPXV2Y19mdW5jdGlvbl9kaXNjb25uZWN0KHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmMtNDIyLVx0aWYgKChyZXQgPSB1c2JfZnVuY3Rpb25fZGVhY3RpdmF0ZShcdTAwMjZ1dmMtXHUwMDNlZnVuYykpIFx1MDAzYyAwKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmM6NDIzOlx0XHR1dmNnX2luZm8oXHUwMDI2dXZjLVx1MDAzZWZ1bmMsIFwmIzM0O1VWQyBkaXNjb25uZWN0IGZhaWxlZCB3aXRoICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmMtNDI0LX1cbi0tXG5kcml2ZXJzL3VzYi9taXNjL2NoYW9za2V5LmM9MjIxPXN0YXRpYyB2b2lkIGNoYW9za2V5X2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbi0tXG5kcml2ZXJzL3VzYi9taXNjL2NoYW9za2V5LmMtMjI3LVx0aWYgKCFkZXYpIHtcbmRyaXZlcnMvdXNiL21pc2MvY2hhb3NrZXkuYzoyMjg6XHRcdHVzYl9kYmcoaW50ZXJmYWNlLCBcJiMzNDtkaXNjb25uZWN0IGZhaWxlZCAtIG5vIGRldlwmIzM0Oyk7XG5kcml2ZXJzL3VzYi9taXNjL2NoYW9za2V5LmMtMjI5LVx0XHRyZXR1cm47XG4tLVxuZnMvY2VwaC9tZHNfY2xpZW50LmM9NTg0Mz1zdGF0aWMgdm9pZCBjaGVja19uZXdfbWFwKHN0cnVjdCBjZXBoX21kc19jbGllbnQgKm1kc2MsXG4tLVxuZnMvY2VwaC9tZHNfY2xpZW50LmMtNTkyMy1cdFx0XHRcdHByX3dhcm5fY2xpZW50KGNsLFxuZnMvY2VwaC9tZHNfY2xpZW50LmM6NTkyNDpcdFx0XHRcdFx0ICAgICAgIFwmIzM0O21kcyVkIHJlY29ubmVjdCBmYWlsZWQ6ICVkXFxuXCYjMzQ7LFxuZnMvY2VwaC9tZHNfY2xpZW50LmMtNTkyNS1cdFx0XHRcdFx0ICAgICAgIGksIHJjKTtcbi0tXG5mcy9jZXBoL21kc19jbGllbnQuYy01OTk0LVx0XHRcdHByX3dhcm5fY2xpZW50KGNsLFxuZnMvY2VwaC9tZHNfY2xpZW50LmM6NTk5NTpcdFx0XHRcdCAgICAgICBcJiMzNDttZHMlZCBleHBvcnQgdGFyZ2V0IHJlY29ubmVjdCBmYWlsZWQ6ICVkXFxuXCYjMzQ7LFxuZnMvY2VwaC9tZHNfY2xpZW50LmMtNTk5Ni1cdFx0XHRcdCAgICAgICBpLCBlcnIpO1xuLS1cbmZzL2NlcGgvbWRzX2NsaWVudC5jPTcxMDI9c3RhdGljIHZvaWQgbWRzX3BlZXJfcmVzZXQoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxuLS1cbmZzL2NlcGgvbWRzX2NsaWVudC5jLTcxMjQtXHRcdFx0cHJfd2Fybl9jbGllbnQobWRzYy1cdTAwM2Vmc2MtXHUwMDNlY2xpZW50LFxuZnMvY2VwaC9tZHNfY2xpZW50LmM6NzEyNTpcdFx0XHRcdCAgICAgICBcJiMzNDttZHMlZCByZWNvbm5lY3QgZmFpbGVkOiAlZFxcblwmIzM0OyxcbmZzL2NlcGgvbWRzX2NsaWVudC5jLTcxMjYtXHRcdFx0XHQgICAgICAgcy1cdTAwM2VzX21kcywgcmMpO1xuLS1cbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jPTY4ND1DSUZTU01CVERpcyhjb25zdCB1bnNpZ25lZCBpbnQgeGlkLCBzdHJ1Y3QgY2lmc190Y29uICp0Y29uKVxuLS1cbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jLTcxNy1cdGlmIChyYylcbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jOjcxODpcdFx0Y2lmc19kYmcoRllJLCBcJiMzNDtUcmVlIGRpc2Nvbm5lY3QgZmFpbGVkICVkXFxuXCYjMzQ7LCByYyk7XG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy03MTktXG4tLVxuZnMvc21iL2NsaWVudC9jb25uZWN0LmM9ODI3PWlzX3NtYl9yZXNwb25zZShzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIsIHVuc2lnbmVkIGNoYXIgdHlwZSlcbi0tXG5mcy9zbWIvY2xpZW50L2Nvbm5lY3QuYy04OTktXHRcdFx0ICogSWYgcmVjb25uZWN0IHdhcyBzdWNjZXNzZnVsIHRoZW4gaW5kaWNhdGUgLUVBR0FJTlxuZnMvc21iL2NsaWVudC9jb25uZWN0LmM6OTAwOlx0XHRcdCAqIHRvIG1pZCYjMzk7cyBjYWxsZXIuIElmIHJlY29ubmVjdCBmYWlsZWQgd2l0aCAtRUFHQUlOXG5mcy9zbWIvY2xpZW50L2Nvbm5lY3QuYy05MDEtXHRcdFx0ICogdGhlbiBtYXNrIGl0IGFzIC1FSE9TVERPV04sIHNvIG1pZCYjMzk7cyBjYWxsZXIgd291bGRcbi0tXG5mcy9zbWIvY2xpZW50L2Nvbm5lY3QuYy05MjUtXHRcdFx0LypcbmZzL3NtYi9jbGllbnQvY29ubmVjdC5jOjkyNjpcdFx0XHQgKiBJZiByZWNvbm5lY3QgZmFpbGVkIHRoZW4gd2FpdCB0d28gc2Vjb25kcy4gSW4gbW9zdFxuZnMvc21iL2NsaWVudC9jb25uZWN0LmMtOTI3LVx0XHRcdCAqIGNhc2VzIHdlIHdlcmUgYmVlbiBjYWxsZWQgZnJvbSB0aGUgbW91bnQgY29udGV4dCBhbmRcbi0tXG5mcy9zbWIvY2xpZW50L2Nvbm5lY3QuYz0yMzQxPWNpZnNfZ2V0X3NtYl9zZXMoc3RydWN0IFRDUF9TZXJ2ZXJfSW5mbyAqc2VydmVyLCBzdHJ1Y3Qgc21iM19mc19jb250ZXh0ICpjdHgpXG4tLVxuZnMvc21iL2NsaWVudC9jb25uZWN0LmMtMjM4MS1cdFx0XHRcdFx0cmV0cmllcyYjNDM7JiM0Mzs7XG5mcy9zbWIvY2xpZW50L2Nvbm5lY3QuYzoyMzgyOlx0XHRcdFx0XHRjaWZzX2RiZyhGWUksIFwmIzM0O1Nlc3Npb24gcmVjb25uZWN0IGZhaWxlZCwgcmV0cnlpbmcgd2l0aCBhbHRlcm5hdGUgcGFzc3dvcmRcXG5cJiMzNDspO1xuZnMvc21iL2NsaWVudC9jb25uZWN0LmMtMjM4My1cdFx0XHRcdFx0c3dhcChzZXMtXHUwMDNlcGFzc3dvcmQsIHNlcy1cdTAwM2VwYXNzd29yZDIpO1xuLS1cbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmM9MjQyND1pbnQgc21iMl9jaGVja19kdXJhYmxlX29wbG9jayhzdHJ1Y3Qga3NtYmRfY29ubiAqY29ubixcbi0tXG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTI0MzctXHRpZiAoa3NtYmRfaGFzX290aGVyX2FjdGl2ZV9mZChmcCkpIHtcbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmM6MjQzODpcdFx0a3NtYmRfZGVidWcoU01CLCBcJiMzNDtEdXJhYmxlIGhhbmRsZSByZWNvbm5lY3QgZmFpbGVkOiBjb21wZXRpbmcgb3BlblxcblwmIzM0Oyk7XG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTI0MzktXHRcdHJldCA9IC1FQkFERjtcbi0tXG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTI0NDMtXHRpZiAoa3NtYmRfdmZzX2NvbXBhcmVfZHVyYWJsZV9vd25lcihmcCwgdXNlcikgPT0gZmFsc2UpIHtcbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmM6MjQ0NDpcdFx0a3NtYmRfZGVidWcoU01CLCBcJiMzNDtEdXJhYmxlIGhhbmRsZSByZWNvbm5lY3QgZmFpbGVkOiBvd25lciBtaXNtYXRjaFxcblwmIzM0Oyk7XG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTI0NDUtXHRcdHJldCA9IC1FQkFERjtcbi0tXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0yNDI5PXN0YXRpYyBpbnQgcHJvY2Vzc19hdXRoX3NpZ25hdHVyZShzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24sXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMjQ2Mi1cdFx0aWYgKHJldCkge1xubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MjQ2MzpcdFx0XHRwcl9lcnIoXCYjMzQ7cHJlcGFyZV9zZXNzaW9uX3JlY29ubmVjdCBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCByZXQpO1xubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMjQ2NC1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbm5ldC9jZXBoL21lc3Nlbmdlcl92Mi5jPTMzNTk9aW50IGNlcGhfY29uX3YyX3RyeV93cml0ZShzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXG4tLVxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzM5NS1cdFx0aWYgKHJldCkge1xubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzM5NjpcdFx0XHRwcl9lcnIoXCYjMzQ7Y2VwaF90Y3BfY29ubmVjdCBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCByZXQpO1xubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzM5Ny1cdFx0XHRjb24tXHUwMDNlZXJyb3JfbXNnID0gXCYjMzQ7Y29ubmVjdCBlcnJvclwmIzM0Oztcbi0tXG5uZXQvcmRzL3RocmVhZHMuYz0xNjI9dm9pZCByZHNfY29ubmVjdF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9yZHMvdGhyZWFkcy5jLTE4NS1cdFx0XHRlbHNlXG5uZXQvcmRzL3RocmVhZHMuYzoxODY6XHRcdFx0XHRyZHNfY29ubl9wYXRoX2Vycm9yKGNwLCBcJiMzNDtjb25uZWN0IGZhaWxlZFxcblwmIzM0Oyk7XG5uZXQvcmRzL3RocmVhZHMuYy0xODctXHRcdH1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jb3JlZHVtcC9jb3JlZHVtcF9zb2NrZXRfdGVzdC5jPTIwOT1URVNUX0YoY29yZWR1bXAsIHNvY2tldF9kZXRlY3RfdXNlcnNwYWNlX2NsaWVudClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jb3JlZHVtcC9jb3JlZHVtcF9zb2NrZXRfdGVzdC5jLTMxMC1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY29yZWR1bXAvY29yZWR1bXBfc29ja2V0X3Rlc3QuYzozMTE6XHRcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O3NvY2tldF9kZXRlY3RfdXNlcnNwYWNlX2NsaWVudCAoY2xpZW50KTogY29ubmVjdCBmYWlsZWQ6ICVtXFxuXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NvcmVkdW1wL2NvcmVkdW1wX3NvY2tldF90ZXN0LmMtMzEyLVx0XHRcdF9leGl0KEVYSVRfRkFJTFVSRSk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldHRlc3QuYz0xNjY4PXN0YXRpYyBpbnQgd2FpdF9mb3JfY29ubmVjdChpbnQgc2QpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldHRlc3QuYy0xNjk1LVx0aWYgKHZhbCAhPSAwKSB7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0dGVzdC5jOjE2OTY6XHRcdGxvZ19lcnJvcihcJiMzNDtjb25uZWN0IGZhaWxlZDogJWQ6ICVzXFxuXCYjMzQ7LCB2YWwsIHN0cmVycm9yKHZhbCkpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldHRlc3QuYy0xNjk3LVx0XHRyZXR1cm4gLTE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjQzCgkJCQkJCQlvdXRwdXQ6IDcxCgkJCQkJCQl0aG91Z2h0czogNDg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdmVyaWZ5IHRoYXQgdGhpcyBpcyBpbmRlZWQgYSBjb250YWluZWQgY2hhbmdlLiBUaGUgZGlmZiBjb25maXJtcyBpdDsgaXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgYWRkaXRpb24gb2YgYW4gZXJyb3IgbG9nIG1lc3NhZ2Ugd2l0aGluIHRoZSBgYnJjbWZfYnNzX2Nvbm5lY3RfZG9uZWAgZnVuY3Rpb24gaW4gYGNmZzgwMjExLmNgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyBgYnBoeV9lcnJgIGxvZ2dpbmcgdXBvbiBhIGNvbm5lY3Rpb24gZmFpbHVyZSB3aGVyZSB0aGUgYXNzb2NpYXRpb24gaGFzIHRpbWVkIG91dC4KCkdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSwgdGhpcyBsb29rcyBsaWtlIHB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcuIEl0JiMzOTtzIHVzaW5nIGBicGh5X2VycmAsIGFuZCBJIGtub3cgdGhhdCB0aGlzIGRvZXNuJiMzOTt0IGltcGFjdCBjb250cm9sIGZsb3cgb3IgYWx0ZXIgYW55IGNyaXRpY2FsIGRhdGEgc3RydWN0dXJlcy4gVGhpcyBhbGlnbnMgZGlyZWN0bHkgd2l0aCB0aGUgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBjcml0ZXJpYSBvdXRsaW5lZCBpbiBzZWN0aW9uIDIuCgpUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAuIFNpbmNlIHRoaXMgaXMgYSBsb2dnaW5nIGFkZGl0aW9uIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGFyZWFzIHRoYXQgd291bGQgYmUgaW50ZXJlc3RpbmcgdG8gZnV6eiwgdGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZSBlbXB0eS4gSSYjMzk7bGwgcHJvdmlkZSBhIGNvbmNpc2UgcmVhc29uaW5nOiAmIzM0O1RoaXMgcGF0Y2ggYWRkcyBwdXJlbHkgZGVjb3JhdGl2ZSBlcnJvciBsb2dnaW5nLCBtYWtpbmcgaXQgbm90IHdvcnRoIGZ1enppbmcuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBkZWJ1Zy9lcnJvciBsb2cgbWVzc2FnZSAoYnBoeV9lcnIpIHJlcG9ydGluZyBjb25uZWN0aW9uIGZhaWx1cmUgZGV0YWlscy4gSXQgaW50cm9kdWNlcyBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3csIHN0YXRlIG1hbmFnZW1lbnQsIG9yIGRhdGEgc3RydWN0dXJlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIGRlYnVnL2Vycm9yIGxvZyBtZXNzYWdlIChicGh5X2VycikgcmVwb3J0aW5nIGNvbm5lY3Rpb24gZmFpbHVyZSBkZXRhaWxzLiBJdCBpbnRyb2R1Y2VzIHB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdywgc3RhdGUgbWFuYWdlbWVudCwgb3IgZGF0YSBzdHJ1Y3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTA6NTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEwOjQ5OjQyLjQzNjk5ODM1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1OTM4NjQ4OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBkZWJ1Zy9lcnJvciBsb2cgbWVzc2FnZSAoYnBoeV9lcnIpIHJlcG9ydGluZyBjb25uZWN0aW9uIGZhaWx1cmUgZGV0YWlscy4gSXQgaW50cm9kdWNlcyBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3csIHN0YXRlIG1hbmFnZW1lbnQsIG9yIGRhdGEgc3RydWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEwOjQ5OjQyLjQzNzAwMjQ2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzYwMDQyMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2NlODkyZDQ5OGEwNDJiY2QwZDllMmRkODU5MmFlNzIxZDQyOGJiZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCA5IDEwOjQ5OjQwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG5pbmRleCA4NzJjNDg4MDZkMDkxLi40ZjQ4ZGI2ZDg2N2ViIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG5AQCAtNjUyMiw2ICs2NTIyLDggQEAgYnJjbWZfYnNzX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbiBcXHRcXHRcXHRjbGVhcl9iaXQoQlJDTUZfVklGX1NUQVRVU19BU1NPQ19TVUNDRVNTLFxcbiBcXHRcXHRcXHRcXHQgIFxcdTAwMjZpZnAtXFx1MDAzZXZpZi1cXHUwMDNlc21lX3N0YXRlKTtcXG4gXFx0XFx0XFx0Y29ubl9wYXJhbXMuc3RhdHVzID0gV0xBTl9TVEFUVVNfQVVUSF9USU1FT1VUO1xcbitcXHRcXHRcXHRicGh5X2VycihpZnAtXFx1MDAzZWRydnIsIFxcXCJjb25uZWN0IGZhaWxlZDogZXZlbnQgJXUgc3RhdHVzICV1IHJlYXNvbiAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IGUtXFx1MDAzZWV2ZW50X2NvZGUsIGUtXFx1MDAzZXN0YXR1cywgZS1cXHUwMDNlcmVhc29uKTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRjb25uX3BhcmFtcy5saW5rc1swXS5ic3NpZCA9IHByb2ZpbGUtXFx1MDAzZWJzc2lkO1xcbiBcXHRcXHRjb25uX3BhcmFtcy5yZXFfaWUgPSBjb25uX2luZm8tXFx1MDAzZXJlcV9pZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTA6NDk6NDMuNzk3NzUzMTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI3MjMzMDk2NzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBkZWJ1Zy9lcnJvciBsb2cgbWVzc2FnZSAoYnBoeV9lcnIpIHJlcG9ydGluZyBjb25uZWN0aW9uIGZhaWx1cmUgZGV0YWlscy4gSXQgaW50cm9kdWNlcyBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3csIHN0YXRlIG1hbmFnZW1lbnQsIG9yIGRhdGEgc3RydWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2NlODkyZDQ5OGEwNDJiY2QwZDllMmRkODU5MmFlNzIxZDQyOGJiZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMTA6NDk6NDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA4NzJjNDg4MDZkMDkxLi40ZjQ4ZGI2ZDg2N2ViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5AQCAtNjUyMiw2ICs2NTIyLDggQEAgYnJjbWZfYnNzX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxuIFx0XHRcdGNsZWFyX2JpdChCUkNNRl9WSUZfU1RBVFVTX0FTU09DX1NVQ0NFU1MsXG4gXHRcdFx0XHQgIFx1MDAyNmlmcC1cdTAwM2V2aWYtXHUwMDNlc21lX3N0YXRlKTtcbiBcdFx0XHRjb25uX3BhcmFtcy5zdGF0dXMgPSBXTEFOX1NUQVRVU19BVVRIX1RJTUVPVVQ7XG4rXHRcdFx0YnBoeV9lcnIoaWZwLVx1MDAzZWRydnIsIFwiY29ubmVjdCBmYWlsZWQ6IGV2ZW50ICV1IHN0YXR1cyAldSByZWFzb24gJXVcXG5cIixcbitcdFx0XHRcdCBlLVx1MDAzZWV2ZW50X2NvZGUsIGUtXHUwMDNlc3RhdHVzLCBlLVx1MDAzZXJlYXNvbik7XG4gXHRcdH1cbiBcdFx0Y29ubl9wYXJhbXMubGlua3NbMF0uYnNzaWQgPSBwcm9maWxlLVx1MDAzZWJzc2lkO1xuIFx0XHRjb25uX3BhcmFtcy5yZXFfaWUgPSBjb25uX2luZm8tXHUwMDNlcmVxX2llO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTA6NDk6NDMuNzk3NzU0NDlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDE1Nzc3OTMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCcm9hZGNvbSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFuYWx5emUgdGhlIGNoYW5nZXMgbWFkZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNgLiBJJ2xsIHByb2JhYmx5IHN0YXJ0IGJ5IGVpdGhlciByZWFkaW5nIHRoZSBmaWxlIGRpcmVjdGx5IG9yIHVzaW5nIGBncmVwcGVyYCB0byBxdWlja2x5IGdldCBhbiBvdmVydmlldyBvZiB3aGF0IGNoYW5nZWQuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgYWN0dWFsIGRpZmYuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhcm91bmQgbGluZSA2NTIyLiBGcm9tIGEgY3Vyc29yeSBnbGFuY2UsIGl0IGxvb2tzIGxpa2UgYSBuZXcgZXJyb3IgbWVzc2FnZSBpcyBiZWluZyBhZGRlZCB3aXRoaW4gdGhlIGBicmNtZl9ic3NfY29ubmVjdF9kb25lYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIGEgY29ubmVjdGlvbiBmYWlsdXJlIGlzIGJlaW5nIHJlcG9ydGVkIHdpdGggdGhlIGFkZGl0aW9uIG9mIGEgbmV3IGBicGh5X2VycmAgc3RhdGVtZW50LiBUaGUgbG9nZ2luZyBpcyBjYXB0dXJpbmcgdGhlIGV2ZW50IGNvZGUsIHN0YXR1cywgYW5kIHJlYXNvbiBpbiB0aGUgZXZlbnQgb2YgYSB0aW1lb3V0LiBUaGlzIGlzIGxpa2VseSB2YWx1YWJsZSBmb3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gaXNzdWVzLlxuXG5JJ2xsIHF1aWNrbHkgY2hlY2sgd2hhdCB0aGUgYGJwaHlfZXJyYCBtYWNybyBpcyBhY3R1YWxseSBkb2luZy4gSSdsbCByZWFkIGFyb3VuZCBsaW5lIDY1MjIgb2YgdGhlIHNvdXJjZS4gVGhpcyB0eXBlIG9mIGFkZGVkIGxvZ2dpbmcgaXMgY3JpdGljYWwgZm9yIGRpYWdub3N0aWNzLiBJdCdzIG9mdGVuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBmcnVzdHJhdGluZyBidWcgYW5kIGEgc29sdmFibGUgcHJvYmxlbS4gSXQncyBhIHNvbGlkIGFkZGl0aW9uIGlmIGl0IGluY3JlYXNlcyB0aGUgZ3JhbnVsYXJpdHkgb2YgdGhlIGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDE1LCJPdXRwdXRUb2tlbnMiOjU5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDU5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTA6NDk6NTMuOTU1NTM2NzcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxNzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY1MTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjY1MTA6XFx0XFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChCUkNNRl9WSUZfU1RBVFVTX0NPTk5FQ1RJTkcsXFxuNjUxMTpcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmlmcC1cXHUwMDNldmlmLVxcdTAwM2VzbWVfc3RhdGUpKSB7XFxuNjUxMjpcXHRcXHRcXHRtZW1zZXQoXFx1MDAyNmNvbm5fcGFyYW1zLCAwLCBzaXplb2YoY29ubl9wYXJhbXMpKTtcXG42NTEzOlxcdFxcdFxcdGlmIChjb21wbGV0ZWQpIHtcXG42NTE0OlxcdFxcdFxcdFxcdGJyY21mX2dldF9hc3NvY19pZXMoY2ZnLCBpZnApO1xcbjY1MTU6XFx0XFx0XFx0XFx0YnJjbWZfdXBkYXRlX2Jzc19pbmZvKGNmZywgaWZwKTtcXG42NTE2OlxcdFxcdFxcdFxcdHNldF9iaXQoQlJDTUZfVklGX1NUQVRVU19DT05ORUNURUQsXFxuNjUxNzpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2aWZwLVxcdTAwM2V2aWYtXFx1MDAzZXNtZV9zdGF0ZSk7XFxuNjUxODpcXHRcXHRcXHRcXHRjb25uX3BhcmFtcy5zdGF0dXMgPSBXTEFOX1NUQVRVU19TVUNDRVNTO1xcbjY1MTk6XFx0XFx0XFx0fSBlbHNlIHtcXG42NTIwOlxcdFxcdFxcdFxcdGNsZWFyX2JpdChCUkNNRl9WSUZfU1RBVFVTX0VBUF9TVUNDRVNTLFxcbjY1MjE6XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2aWZwLVxcdTAwM2V2aWYtXFx1MDAzZXNtZV9zdGF0ZSk7XFxuNjUyMjpcXHRcXHRcXHRcXHRjbGVhcl9iaXQoQlJDTUZfVklGX1NUQVRVU19BU1NPQ19TVUNDRVNTLFxcbjY1MjM6XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2aWZwLVxcdTAwM2V2aWYtXFx1MDAzZXNtZV9zdGF0ZSk7XFxuNjUyNDpcXHRcXHRcXHRcXHRjb25uX3BhcmFtcy5zdGF0dXMgPSBXTEFOX1NUQVRVU19BVVRIX1RJTUVPVVQ7XFxuNjUyNTpcXHRcXHRcXHRcXHRicGh5X2VycihpZnAtXFx1MDAzZWRydnIsIFxcXCJjb25uZWN0IGZhaWxlZDogZXZlbnQgJXUgc3RhdHVzICV1IHJlYXNvbiAldVxcXFxuXFxcIixcXG42NTI2OlxcdFxcdFxcdFxcdFxcdCBlLVxcdTAwM2VldmVudF9jb2RlLCBlLVxcdTAwM2VzdGF0dXMsIGUtXFx1MDAzZXJlYXNvbik7XFxuNjUyNzpcXHRcXHRcXHR9XFxuNjUyODpcXHRcXHRcXHRjb25uX3BhcmFtcy5saW5rc1swXS5ic3NpZCA9IHByb2ZpbGUtXFx1MDAzZWJzc2lkO1xcbjY1Mjk6XFx0XFx0XFx0Y29ubl9wYXJhbXMucmVxX2llID0gY29ubl9pbmZvLVxcdTAwM2VyZXFfaWU7XFxuNjUzMDpcXHRcXHRcXHRjb25uX3BhcmFtcy5yZXFfaWVfbGVuID0gY29ubl9pbmZvLVxcdTAwM2VyZXFfaWVfbGVuO1xcbjY1MzE6XFx0XFx0XFx0Y29ubl9wYXJhbXMucmVzcF9pZSA9IGNvbm5faW5mby1cXHUwMDNlcmVzcF9pZTtcXG42NTMyOlxcdFxcdFxcdGNvbm5fcGFyYW1zLnJlc3BfaWVfbGVuID0gY29ubl9pbmZvLVxcdTAwM2VyZXNwX2llX2xlbjtcXG42NTMzOlxcdFxcdFxcdGNmZzgwMjExX2Nvbm5lY3RfZG9uZShuZGV2LCBcXHUwMDI2Y29ubl9wYXJhbXMsIEdGUF9LRVJORUwpO1xcbjY1MzQ6XFx0XFx0XFx0YnJjbWZfZGJnKENPTk4sIFxcXCJSZXBvcnQgY29ubmVjdCByZXN1bHQgLSBjb25uZWN0aW9uICVzXFxcXG5cXFwiLFxcbjY1MzU6XFx0XFx0XFx0XFx0ICBjb21wbGV0ZWQgPyBcXFwic3VjY2VlZGVkXFxcIiA6IFxcXCJmYWlsZWRcXFwiKTtcXG42NTM2OlxcdFxcdH1cXG42NTM3OlxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIkV4aXRcXFxcblxcXCIpO1xcbjY1Mzg6XFx0XFx0cmV0dXJuIDA7XFxuNjUzOTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEwOjQ5OjUzLjk1NTgxMDUyMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyNDIxNzQ5NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgYnBoeV9lcnJgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYGJwaHlfZXJyYCB2YXJpYWJsZSBiZXR0ZXIuIEl0J3MgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBzeXN0ZW0ncyBiZWhhdmlvciBhbmQgcG90ZW50aWFsIGZhaWx1cmUgbW9kZXMuIEknbSBnb2luZyB0byBxdWlja2x5IHJlZmVyZW5jZSBpdHMgZGVmaW5pdGlvbi4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IEkga25vdyB3aGF0IGl0IHJlZmVyZW5jZXMsIHRoZSBkb21haW4gb2YgdmFsdWVzLCBhbmQgd2hhdCB0aGUgcG9zc2libGUgcmFtaWZpY2F0aW9ucyBvZiB2YXJpb3VzIHN0YXRlcyBtYXkgYmUuIE15IHBhc3QgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoZXNlIHR5cGVzIG9mIG5hbWVzIGFyZSBvZnRlbiB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlLCBpbnRlcnJ1cHRzLCBvciBsb3ctbGV2ZWwgaW50ZXJmYWNlcywgc28gYSBxdWljayBjaGVjayBvZiBpdHMgZGVmaW5pdGlvbiBzaG91bGQgcHJvdmlkZSBjcml0aWNhbCBjb250ZXh0LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4uLiBJIHNob3VsZCBiZSBhYmxlIHRvIHRyYWNrIGRvd24gaXRzIHB1cnBvc2UgYW5kIHVzZSBjYXNlIHdpdGhvdXQgbXVjaCB0cm91YmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDM2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMDo0OTo1Ny4xOTc5ODcwNThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMTYzMTIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIGJwaHlfZXJyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9kZWJ1Zy5oPTQwPXZvaWQgX19icmNtZl9lcnIoc3RydWN0IGJyY21mX2J1cyAqYnVzLCBjb25zdCBjaGFyICpmdW5jLCBjb25zdCBjaGFyICpmbXQsIC4uLik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZGVidWcuaC01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZGVidWcuaDo1NDojZGVmaW5lIGJwaHlfZXJyKGRydnIsIGZtdCwgLi4uKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZGVidWcuaC01NS1cXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMDo0OTo1OC45Mjk2MjUyOThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTQxMzA4MjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlIHdlIGdvLi4uXG5cbioqRGl2aW5nIGludG8gdGhlIGJyY21mbWFjIERlYnVnIEhlYWRlcioqXG5cbkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2RlYnVnLmhgLiBJJ20gZ3Vlc3NpbmcgdGhpcyBmaWxlIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZmluZXIgcG9pbnRzIG9mIGRlYnVnZ2luZyB0aGUgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBicmNtZm1hYyBpbnRlcmZhY2UuIENvbnNpZGVyaW5nIG15IGV4cGVydGlzZSwgSSdtIGV4cGVjdGluZyB0aGlzIGhlYWRlciB0byBjb250YWluIGEgdHJlYXN1cmUgdHJvdmUgb2YgbWFjcm9zLCBkZWZpbml0aW9ucywgYW5kIHBlcmhhcHMgZXZlbiBzb21lIGZ1bmN0aW9uIHByb3RvdHlwZXMgcmVsYXRlZCB0byBsb2dnaW5nLCB0cmFjaW5nLCBhbmQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqTG9nIGxldmVsczoqKiBIb3cgZ3JhbnVsYXIgY2FuIEkgZ2V0IHdpdGggdGhlIGRlYnVnIG91dHB1dD8gSXMgdGhlcmUgc3VwcG9ydCBmb3IgbGV2ZWxzIGxpa2UgREVCVUcsIElORk8sIFdBUk4sIEVSUk9SLCBhbmQgbWF5YmUgZXZlbiBtb3JlIHNwZWNpYWxpemVkIG9uZXM/XG4qICAgKipDb25kaXRpb25hbCBjb21waWxhdGlvbjoqKiBBcmUgdGhlcmUgYCNpZmRlZmAgYmxvY2tzIGNvbnRyb2xsZWQgYnkga2VybmVsIGNvbmZpZyBvcHRpb25zIG9yIGRlYnVnIGZsYWdzIHRoYXQgc2VsZWN0aXZlbHkgaW5jbHVkZSBvciBleGNsdWRlIGRlYnVnIGNvZGU/IFRoaXMgaXMgdXN1YWxseSBjcnVjaWFsIGZvciBwZXJmb3JtYW5jZSBvbiBwcm9kdWN0aW9uIHN5c3RlbXMuXG4qICAgKipUcmFjZXBvaW50cy9JbnN0cnVtZW50YXRpb246KiogSXMgdGhlcmUgYW55IGV2aWRlbmNlIG9mIHRyYWNlcG9pbnRzIG9yIG90aGVyIGluc3RydW1lbnRhdGlvbiB0ZWNobmlxdWVzIGRlc2lnbmVkIHRvIGNhcHR1cmUgcGVyZm9ybWFuY2UgZGF0YSBvciBjcml0aWNhbCBldmVudHMgd2l0aGluIHRoZSBkcml2ZXI/XG4qICAgKipEYXRhIHN0cnVjdHVyZXMgZm9yIGxvZ2dpbmc6KiogV2hhdCBraW5kIG9mIHN0cnVjdHVyZXMgYXJlIHVzZWQgdG8gZW5jYXBzdWxhdGUgZGVidWcgbWVzc2FnZXM/IEFyZSB0aGV5IGVmZmljaWVudD8gRG8gdGhleSBzdXBwb3J0IHRpbWVzdGFtcHMsIHRocmVhZCBJRHMsIGFuZCBvdGhlciB1c2VmdWwgbWV0YWRhdGE/XG4qICAgKipFcnJvciBjb2RlIGRlZmluaXRpb25zOioqIEFyZSB0aGVyZSBkZXRhaWxlZCBlcnJvciBjb2RlcyB0byBoZWxwIGRpYWdub3NlIHdpcmVsZXNzIGNvbm5lY3Rpb24gZmFpbHVyZXM/XG4qICAgKipTcGVjaWFsaXplZCBkZWJ1ZyBmdW5jdGlvbnM6KiogQXJlIHRoZXJlIGZ1bmN0aW9ucyBkZXNpZ25lZCBmb3IgZHVtcGluZyBzcGVjaWZpYyBkcml2ZXIgb3IgaGFyZHdhcmUgc3RhdGUsIGxpa2UgcmVnaXN0ZXIgY29udGVudHMgb3IgZmlybXdhcmUgdmFyaWFibGVzP1xuXG5Fc3NlbnRpYWxseSwgSSBleHBlY3QgdGhpcyBoZWFkZXIgdG8gbGF5IHRoZSBncm91bmR3b3JrIGZvciBob3cgdGhlIGRyaXZlcidzIGludGVybmFscyBjYW4gYmUgZXhhbWluZWQgYW5kIHRyb3VibGVzaG9vdGVkLiBJJ20gaG9waW5nIGl0J3Mgd2VsbC1vcmdhbml6ZWQsIHdlbGwtY29tbWVudGVkLCBhbmQgcHJvdmlkZXMgYSBjbGVhciBmcmFtZXdvcmsgZm9yIGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgZGVidWdnaW5nIGZlYXR1cmVzLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNvbXByZWhlbnNpdmUgcGljdHVyZSBvZiB3aGF0IGRlYnVnZ2luZyB0b29scyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSdyZSBpbnRlbmRlZCB0byBiZSB1c2VkLiBMZXQncyBzZWUgd2hhdCdzIGluc2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgyMiwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEwOjUwOjAyLjA3MDkzNTc5MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9kZWJ1Zy5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDQwOlxcdHZvaWQgX19icmNtZl9lcnIoc3RydWN0IGJyY21mX2J1cyAqYnVzLCBjb25zdCBjaGFyICpmdW5jLCBjb25zdCBjaGFyICpmbXQsIC4uLik7XFxuICA0MTpcXHQvKiBNYWNybyBmb3IgZXJyb3IgbWVzc2FnZXMuIFdoZW4gZGVidWdnaW5nIC8gdHJhY2luZyB0aGUgZHJpdmVyIGFsbCBlcnJvclxcbiAgNDI6XFx0ICogbWVzc2FnZXMgYXJlIGltcG9ydGFudCB0byB1cy5cXG4gIDQzOlxcdCAqL1xcbiAgNDQ6XFx0I2lmbmRlZiBicmNtZl9lcnJcXG4gIDQ1OlxcdCNkZWZpbmUgYnJjbWZfZXJyKGZtdCwgLi4uKVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gIDQ2OlxcdFxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuICA0NzpcXHRcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQlJDTURCRykgfHxcXHRcXHRcXHRcXFxcXFxuICA0ODpcXHRcXHRcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfQlJDTV9UUkFDSU5HKSB8fFxcdFxcdFxcdFxcXFxcXG4gIDQ5OlxcdFxcdFxcdCAgICBuZXRfcmF0ZWxpbWl0KCkpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbiAgNTA6XFx0XFx0XFx0XFx0X19icmNtZl9lcnIoTlVMTCwgX19mdW5jX18sIGZtdCwgIyNfX1ZBX0FSR1NfXyk7XFxcXFxcbiAgNTE6XFx0XFx0fSB3aGlsZSAoMClcXG4gIDUyOlxcdCNlbmRpZlxcbiAgNTM6XFx0XFxuICA1NDpcXHQjZGVmaW5lIGJwaHlfZXJyKGRydnIsIGZtdCwgLi4uKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gIDU1OlxcdFxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuICA1NjpcXHRcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQlJDTURCRykgfHxcXHRcXHRcXHRcXFxcXFxuICA1NzpcXHRcXHRcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfQlJDTV9UUkFDSU5HKSB8fFxcdFxcdFxcdFxcXFxcXG4gIDU4OlxcdFxcdFxcdCAgICBuZXRfcmF0ZWxpbWl0KCkpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbiAgNTk6XFx0XFx0XFx0XFx0d2lwaHlfZXJyKChkcnZyKS1cXHUwMDNld2lwaHksIFxcXCIlczogXFxcIiBmbXQsIF9fZnVuY19fLFxcdFxcXFxcXG4gIDYwOlxcdFxcdFxcdFxcdFxcdCAgIyNfX1ZBX0FSR1NfXyk7XFx0XFx0XFx0XFxcXFxcbiAgNjE6XFx0XFx0fSB3aGlsZSAoMClcXG4gIDYyOlxcdFxcbiAgNjM6XFx0I2RlZmluZSBicGh5X2luZm9fb25jZShkcnZyLCBmbXQsIC4uLilcXHRcXHRcXHRcXHRcXHRcXFxcXFxuICA2NDpcXHRcXHR3aXBoeV9pbmZvX29uY2UoKGRydnIpLVxcdTAwM2V3aXBoeSwgXFxcIiVzOiBcXFwiIGZtdCwgX19mdW5jX18sXFx0XFx0XFxcXFxcbiAgNjU6XFx0XFx0XFx0XFx0IyNfX1ZBX0FSR1NfXylcXG4gIDY2OlxcdFxcbiAgNjc6XFx0I2lmIGRlZmluZWQoREVCVUcpIHx8IGRlZmluZWQoQ09ORklHX0JSQ01fVFJBQ0lORylcXG4gIDY4OlxcdFxcbiAgNjk6XFx0LyogRm9yIGRlYnVnL3RyYWNpbmcgcHVycG9zZXMgdHJlYXQgaW5mbyBtZXNzYWdlcyBhcyBlcnJvcnMgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTA6NTA6MDIuMDcxMDExNTExWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzIyMTIyNDQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIG1ha2UgYSBjYWxsLiBMZXQncyBydW4gZG93biB0aGUgY2hlY2tsaXN0IGZvciByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAg4oCTIHRob3NlIG5lZ2F0aXZlIGNyaXRlcmlhLiBUaGUgY29yZSBpczogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzXCIuIEdvdCBpdC5cblxuTG9va2luZyBhdCB0aGlzIHBhdGNoLCBhbGwgaXQgYWRkcyBpcyB0aGlzOlxuXG5gYGBjXG4rXHRcdFx0YnBoeV9lcnIoaWZwLVx1MDAzZWRydnIsIFwiY29ubmVjdCBmYWlsZWQ6IGV2ZW50ICV1IHN0YXR1cyAldSByZWFzb24gJXVcXG5cIixcbitcdFx0XHRcdCBlLVx1MDAzZWV2ZW50X2NvZGUsIGUtXHUwMDNlc3RhdHVzLCBlLVx1MDAzZXJlYXNvbik7XG5gYGBcblxuUmlnaHQsIGBicGh5X2VycmAuIEkga25vdyB0aGF0IGZ1bmN0aW9uLiBJdCBjYWxscyBgd2lwaHlfZXJyYCwgd2hpY2ggaW4gdHVybiBmb3JtYXRzIGEgbWVzc2FnZSBhbmQgcHJpbnRzIGl0IHVzaW5nIGBkZXZfZXJyYCBvbiBgd2lwaHktXHUwMDNlZGV2YC4gSXQncyBkZWZpbml0ZWx5IGp1c3QgYSBsb2dnaW5nIHN0YXRlbWVudC4gSXQncyBub3QgbWVzc2luZyB3aXRoIGFueSBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLiBTbywgdW5kZXIgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhIGxpc3QsIHRoYXQgZmFsbHMgKnNxdWFyZWx5KiBpbnRvIFwiUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cIlxuXG5CdXQsIGxldCdzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbid0IG1pc3NlZCBzb21ldGhpbmcuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGNvbW1pdCBmb3IgYW55ICpvdGhlciogY2hhbmdlcywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgY29uZmlybSB0aGlzIGlzICphbGwqIHRoZSBwYXRjaCBjb250YWlucy4gR290dGEgYmUgY2VydGFpbiBiZWZvcmUgSSBzZW5kIHRoaXMgYmFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgyNiwiT3V0cHV0VG9rZW5zIjoxNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEwOjUwOjA1LjI5MjIzODgzMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxNzkxNzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25uZWN0IGZhaWxlZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3NwYXJjL2tlcm5lbC92aW9ocy5jPTc2NT12b2lkIHZpb19wb3J0X3VwKHN0cnVjdCB2aW9fZHJpdmVyX3N0YXRlICp2aW8pXFxuLS1cXG5hcmNoL3NwYXJjL2tlcm5lbC92aW9ocy5jLTc4OS1cXHRcXHRpZiAoZXJyKVxcbmFyY2gvc3BhcmMva2VybmVsL3Zpb2hzLmM6NzkwOlxcdFxcdFxcdHByaW50ayhLRVJOX1dBUk5JTkcgXFxcIiVzOiBQb3J0ICVsdSBjb25uZWN0IGZhaWxlZCwgXFxcIlxcbmFyY2gvc3BhcmMva2VybmVsL3Zpb2hzLmMtNzkxLVxcdFxcdFxcdCAgICAgICBcXFwiZXJyPSVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xNDI2PXN0YXRpYyB2b2lkIHNlbmRfZGlzY29ubmVjdHMoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ0NC1cXHRcXHRcXHRkZXZfZXJyKGRpc2tfdG9fZGV2KG5iZC1cXHUwMDNlZGlzayksXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNDQ1OlxcdFxcdFxcdFxcdFxcXCJTZW5kIGRpc2Nvbm5lY3QgZmFpbGVkICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ0Ni1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm5zb2NrLVxcdTAwM2V0eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvaW5wdXQvc2VyaW8vc2VyaW8uYz01NzI9c3RhdGljIHZvaWQgc2VyaW9fcmVjb25uZWN0X3N1YnRyZWUoc3RydWN0IHNlcmlvICpyb290KVxcbi0tXFxuZHJpdmVycy9pbnB1dC9zZXJpby9zZXJpby5jLTU5MS1cXHRcXHQvKlxcbmRyaXZlcnMvaW5wdXQvc2VyaW8vc2VyaW8uYzo1OTI6XFx0XFx0ICogRWl0aGVyIGl0IHdhcyBhIGxlYWYgbm9kZSBvciByZWNvbm5lY3QgZmFpbGVkIGFuZCBpdFxcbmRyaXZlcnMvaW5wdXQvc2VyaW8vc2VyaW8uYy01OTMtXFx0XFx0ICogYmVjYW1lIGEgbGVhZiBub2RlLiBDb250aW51ZSByZWNvbm5lY3Rpbmcgc3RhcnRpbmcgd2l0aFxcbi0tXFxuZHJpdmVycy9pbnB1dC9zZXJpby9zZXJpby5jPTkwNT1zdGF0aWMgaW50IHNlcmlvX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2lucHV0L3NlcmlvL3NlcmlvLmMtOTEzLVxcdFxcdFxcdGlmIChlcnJvciBcXHUwMDI2XFx1MDAyNiBlcnJvciAhPSAtRU5PRU5UKVxcbmRyaXZlcnMvaW5wdXQvc2VyaW8vc2VyaW8uYzo5MTQ6XFx0XFx0XFx0XFx0ZGV2X3dhcm4oZGV2LCBcXFwiZmFzdCByZWNvbm5lY3QgZmFpbGVkIHdpdGggZXJyb3IgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9pbnB1dC9zZXJpby9zZXJpby5jLTkxNS1cXHRcXHRcXHRcXHRcXHQgZXJyb3IpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM9MjE2PXN0YXRpYyBpbnQgbXBjNTJ4eF9mZWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmMtMjI1LVxcdFxcdGlmICghcGh5ZGV2KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM6MjI2OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNmRldi1cXHUwMDNlZGV2LCBcXFwib2ZfcGh5X2Nvbm5lY3QgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYy0yMjctXFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pd2FycC5jPTMwMTk9cWVkX2l3YXJwX2Nvbm5lY3RfY29tcGxldGUoc3RydWN0IHFlZF9od2ZuICpwX2h3Zm4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pd2FycC5jLTMwMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfaXdhcnAuYzozMDMwOlxcdFxcdC8qIElmIGNvbm5lY3QgZmFpbGVkIC0gdXBwZXIgbGF5ZXIgZG9lc24ndCBrbm93IGFib3V0IGl0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfaXdhcnAuYy0zMDMxLVxcdFxcdGlmIChmd19yZXR1cm5fY29kZSA9PSBSRE1BX1JFVFVSTl9PSylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYz0xNjU2PXN0YXRpYyBpbnQgZW1hY191cChzdHJ1Y3QgZW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jLTE2NjUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYzoxNjY2OlxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcImVtYWNfcGh5X2Nvbm5lY3QgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmMtMTY2Ny1cXHRcXHRnb3RvIGVycl9wbV9wdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz02NDk5PWJyY21mX2Jzc19jb25uZWN0X2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTY1MjQtXFx0XFx0XFx0Y29ubl9wYXJhbXMuc3RhdHVzID0gV0xBTl9TVEFUVVNfQVVUSF9USU1FT1VUO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjY1MjU6XFx0XFx0XFx0YnBoeV9lcnIoaWZwLVxcdTAwM2VkcnZyLCBcXFwiY29ubmVjdCBmYWlsZWQ6IGV2ZW50ICV1IHN0YXR1cyAldSByZWFzb24gJXVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjUyNi1cXHRcXHRcXHRcXHQgZS1cXHUwMDNlZXZlbnRfY29kZSwgZS1cXHUwMDNlc3RhdHVzLCBlLVxcdTAwM2VyZWFzb24pO1xcbi0tXFxuZHJpdmVycy9wbGF0Zm9ybS9yYXNwYmVycnlwaS92Y2hpcS1pbnRlcmZhY2UvdmNoaXFfYXJtLmM9OTQyPXZjaGlxX2tlZXBhbGl2ZV90aHJlYWRfZnVuYyh2b2lkICp2KVxcbi0tXFxuZHJpdmVycy9wbGF0Zm9ybS9yYXNwYmVycnlwaS92Y2hpcS1pbnRlcmZhY2UvdmNoaXFfYXJtLmMtOTY0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL3BsYXRmb3JtL3Jhc3BiZXJyeXBpL3ZjaGlxLWludGVyZmFjZS92Y2hpcV9hcm0uYzo5NjU6XFx0XFx0ZGV2X2VycihzdGF0ZS1cXHUwMDNlZGV2LCBcXFwic3VzcGVuZDogJXM6IHZjaGlxX2Nvbm5lY3QgZmFpbGVkICVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgcmV0KTtcXG5kcml2ZXJzL3BsYXRmb3JtL3Jhc3BiZXJyeXBpL3ZjaGlxLWludGVyZmFjZS92Y2hpcV9hcm0uYy05NjYtXFx0XFx0Z290byBzaHV0ZG93bjtcXG4tLVxcbmRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL2lzaHRwX2VjbGl0ZS5jPTQ0OD1zdGF0aWMgaW50IGVjbF9pc2h0cF9jbF9pbml0KHN0cnVjdCBpc2h0cF9jbCAqZWNsX2lzaHRwX2NsKVxcbi0tXFxuZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvaXNodHBfZWNsaXRlLmMtNDgwLVxcdGlmIChydikge1xcbmRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL2lzaHRwX2VjbGl0ZS5jOjQ4MTpcXHRcXHRkZXZfZXJyKGNsX2RhdGFfdG9fZGV2KG9wcl9kZXYpLCBcXFwiY2xpZW50IGNvbm5lY3QgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9pc2h0cF9lY2xpdGUuYy00ODItXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYz0zMDMyPXN0YXRpYyBpbnQgaXNjc2lfaWZfZXBfY29ubmVjdChzdHJ1Y3QgaXNjc2lfdHJhbnNwb3J0ICp0cmFuc3BvcnQsXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYy0zMDQ1LVxcdFxcdGlmICghc2hvc3QpIHtcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYzozMDQ2OlxcdFxcdFxcdHByaW50ayhLRVJOX0VSUiBcXFwiZXAgY29ubmVjdCBmYWlsZWQuIENvdWxkIG5vdCBmaW5kIFxcXCJcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYy0zMDQ3LVxcdFxcdFxcdCAgICAgICBcXFwiaG9zdCBubyAldVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvc2xpbWJ1cy9xY29tLW5nZC1jdHJsLmM9NDQ3PXN0YXRpYyBpbnQgcWNvbV9zbGltX3FtaV9pbml0KHN0cnVjdCBxY29tX3NsaW1fbmdkX2N0cmwgKmN0cmwsXFxuLS1cXG5kcml2ZXJzL3NsaW1idXMvcWNvbS1uZ2QtY3RybC5jLTQ2OC1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9zbGltYnVzL3Fjb20tbmdkLWN0cmwuYzo0Njk6XFx0XFx0ZGV2X2VycihjdHJsLVxcdTAwM2VkZXYsIFxcXCJSZW1vdGUgU2VydmljZSBjb25uZWN0IGZhaWxlZDogJWRcXFxcblxcXCIsIHJjKTtcXG5kcml2ZXJzL3NsaW1idXMvcWNvbS1uZ2QtY3RybC5jLTQ3MC1cXHRcXHRnb3RvIHFtaV9jb25uZWN0X3RvX3NlcnZpY2VfZmFpbGVkO1xcbi0tXFxuZHJpdmVycy90dHkvaHZjL2h2Y3MuYz0xMDU4PXN0YXRpYyBpbnQgaHZjc19pbnN0YWxsKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsIHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpXFxuLS1cXG5kcml2ZXJzL3R0eS9odmMvaHZjcy5jLTEwODItXFx0XFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aHZjc2QtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL3R0eS9odmMvaHZjcy5jOjEwODM6XFx0XFx0XFx0cHJpbnRrKEtFUk5fV0FSTklORyBcXFwiSFZDUzogcGFydG5lciBjb25uZWN0IGZhaWxlZC5cXFxcblxcXCIpO1xcbmRyaXZlcnMvdHR5L2h2Yy9odmNzLmMtMTA4NC1cXHRcXHRcXHRnb3RvIGVycl9wdXQ7XFxuLS1cXG5kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jPTMxMz1zdGF0aWMgaW50IGNpX2hkcmNfaW14X25vdGlmeV9ldmVudChzdHJ1Y3QgY2lfaGRyYyAqY2ksIHVuc2lnbmVkIGludCBldmVudClcXG4tLVxcbmRyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMtMzM0LVxcdFxcdFxcdGRldl9lcnIoZGV2LFxcbmRyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmM6MzM1OlxcdFxcdFxcdFxcdFxcXCJoc2ljX3NldF9jb25uZWN0IGZhaWxlZCwgZXJyPSVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMtMzM2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmM9NDAzPXV2Y19mdW5jdGlvbl9jb25uZWN0KHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYy00MDctXFx0aWYgKChyZXQgPSB1c2JfZnVuY3Rpb25fYWN0aXZhdGUoXFx1MDAyNnV2Yy1cXHUwMDNlZnVuYykpIFxcdTAwM2MgMClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYzo0MDg6XFx0XFx0dXZjZ19pbmZvKFxcdTAwMjZ1dmMtXFx1MDAzZWZ1bmMsIFxcXCJVVkMgY29ubmVjdCBmYWlsZWQgd2l0aCAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYy00MDktfVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmM9NDEyPXV2Y19mdW5jdGlvbl9kaXNjb25uZWN0KHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYy00MjItXFx0aWYgKChyZXQgPSB1c2JfZnVuY3Rpb25fZGVhY3RpdmF0ZShcXHUwMDI2dXZjLVxcdTAwM2VmdW5jKSkgXFx1MDAzYyAwKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3V2Yy5jOjQyMzpcXHRcXHR1dmNnX2luZm8oXFx1MDAyNnV2Yy1cXHUwMDNlZnVuYywgXFxcIlVWQyBkaXNjb25uZWN0IGZhaWxlZCB3aXRoICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3V2Yy5jLTQyNC19XFxuLS1cXG5kcml2ZXJzL3VzYi9taXNjL2NoYW9za2V5LmM9MjIxPXN0YXRpYyB2b2lkIGNoYW9za2V5X2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvdXNiL21pc2MvY2hhb3NrZXkuYy0yMjctXFx0aWYgKCFkZXYpIHtcXG5kcml2ZXJzL3VzYi9taXNjL2NoYW9za2V5LmM6MjI4OlxcdFxcdHVzYl9kYmcoaW50ZXJmYWNlLCBcXFwiZGlzY29ubmVjdCBmYWlsZWQgLSBubyBkZXZcXFwiKTtcXG5kcml2ZXJzL3VzYi9taXNjL2NoYW9za2V5LmMtMjI5LVxcdFxcdHJldHVybjtcXG4tLVxcbmZzL2NlcGgvbWRzX2NsaWVudC5jPTU4NDM9c3RhdGljIHZvaWQgY2hlY2tfbmV3X21hcChzdHJ1Y3QgY2VwaF9tZHNfY2xpZW50ICptZHNjLFxcbi0tXFxuZnMvY2VwaC9tZHNfY2xpZW50LmMtNTkyMy1cXHRcXHRcXHRcXHRwcl93YXJuX2NsaWVudChjbCxcXG5mcy9jZXBoL21kc19jbGllbnQuYzo1OTI0OlxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFwibWRzJWQgcmVjb25uZWN0IGZhaWxlZDogJWRcXFxcblxcXCIsXFxuZnMvY2VwaC9tZHNfY2xpZW50LmMtNTkyNS1cXHRcXHRcXHRcXHRcXHQgICAgICAgaSwgcmMpO1xcbi0tXFxuZnMvY2VwaC9tZHNfY2xpZW50LmMtNTk5NC1cXHRcXHRcXHRwcl93YXJuX2NsaWVudChjbCxcXG5mcy9jZXBoL21kc19jbGllbnQuYzo1OTk1OlxcdFxcdFxcdFxcdCAgICAgICBcXFwibWRzJWQgZXhwb3J0IHRhcmdldCByZWNvbm5lY3QgZmFpbGVkOiAlZFxcXFxuXFxcIixcXG5mcy9jZXBoL21kc19jbGllbnQuYy01OTk2LVxcdFxcdFxcdFxcdCAgICAgICBpLCBlcnIpO1xcbi0tXFxuZnMvY2VwaC9tZHNfY2xpZW50LmM9NzEwMj1zdGF0aWMgdm9pZCBtZHNfcGVlcl9yZXNldChzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24pXFxuLS1cXG5mcy9jZXBoL21kc19jbGllbnQuYy03MTI0LVxcdFxcdFxcdHByX3dhcm5fY2xpZW50KG1kc2MtXFx1MDAzZWZzYy1cXHUwMDNlY2xpZW50LFxcbmZzL2NlcGgvbWRzX2NsaWVudC5jOjcxMjU6XFx0XFx0XFx0XFx0ICAgICAgIFxcXCJtZHMlZCByZWNvbm5lY3QgZmFpbGVkOiAlZFxcXFxuXFxcIixcXG5mcy9jZXBoL21kc19jbGllbnQuYy03MTI2LVxcdFxcdFxcdFxcdCAgICAgICBzLVxcdTAwM2VzX21kcywgcmMpO1xcbi0tXFxuZnMvc21iL2NsaWVudC9jaWZzc21iLmM9Njg0PUNJRlNTTUJURGlzKGNvbnN0IHVuc2lnbmVkIGludCB4aWQsIHN0cnVjdCBjaWZzX3Rjb24gKnRjb24pXFxuLS1cXG5mcy9zbWIvY2xpZW50L2NpZnNzbWIuYy03MTctXFx0aWYgKHJjKVxcbmZzL3NtYi9jbGllbnQvY2lmc3NtYi5jOjcxODpcXHRcXHRjaWZzX2RiZyhGWUksIFxcXCJUcmVlIGRpc2Nvbm5lY3QgZmFpbGVkICVkXFxcXG5cXFwiLCByYyk7XFxuZnMvc21iL2NsaWVudC9jaWZzc21iLmMtNzE5LVxcbi0tXFxuZnMvc21iL2NsaWVudC9jb25uZWN0LmM9ODI3PWlzX3NtYl9yZXNwb25zZShzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIsIHVuc2lnbmVkIGNoYXIgdHlwZSlcXG4tLVxcbmZzL3NtYi9jbGllbnQvY29ubmVjdC5jLTg5OS1cXHRcXHRcXHQgKiBJZiByZWNvbm5lY3Qgd2FzIHN1Y2Nlc3NmdWwgdGhlbiBpbmRpY2F0ZSAtRUFHQUlOXFxuZnMvc21iL2NsaWVudC9jb25uZWN0LmM6OTAwOlxcdFxcdFxcdCAqIHRvIG1pZCdzIGNhbGxlci4gSWYgcmVjb25uZWN0IGZhaWxlZCB3aXRoIC1FQUdBSU5cXG5mcy9zbWIvY2xpZW50L2Nvbm5lY3QuYy05MDEtXFx0XFx0XFx0ICogdGhlbiBtYXNrIGl0IGFzIC1FSE9TVERPV04sIHNvIG1pZCdzIGNhbGxlciB3b3VsZFxcbi0tXFxuZnMvc21iL2NsaWVudC9jb25uZWN0LmMtOTI1LVxcdFxcdFxcdC8qXFxuZnMvc21iL2NsaWVudC9jb25uZWN0LmM6OTI2OlxcdFxcdFxcdCAqIElmIHJlY29ubmVjdCBmYWlsZWQgdGhlbiB3YWl0IHR3byBzZWNvbmRzLiBJbiBtb3N0XFxuZnMvc21iL2NsaWVudC9jb25uZWN0LmMtOTI3LVxcdFxcdFxcdCAqIGNhc2VzIHdlIHdlcmUgYmVlbiBjYWxsZWQgZnJvbSB0aGUgbW91bnQgY29udGV4dCBhbmRcXG4tLVxcbmZzL3NtYi9jbGllbnQvY29ubmVjdC5jPTIzNDE9Y2lmc19nZXRfc21iX3NlcyhzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIsIHN0cnVjdCBzbWIzX2ZzX2NvbnRleHQgKmN0eClcXG4tLVxcbmZzL3NtYi9jbGllbnQvY29ubmVjdC5jLTIzODEtXFx0XFx0XFx0XFx0XFx0cmV0cmllcysrO1xcbmZzL3NtYi9jbGllbnQvY29ubmVjdC5jOjIzODI6XFx0XFx0XFx0XFx0XFx0Y2lmc19kYmcoRllJLCBcXFwiU2Vzc2lvbiByZWNvbm5lY3QgZmFpbGVkLCByZXRyeWluZyB3aXRoIGFsdGVybmF0ZSBwYXNzd29yZFxcXFxuXFxcIik7XFxuZnMvc21iL2NsaWVudC9jb25uZWN0LmMtMjM4My1cXHRcXHRcXHRcXHRcXHRzd2FwKHNlcy1cXHUwMDNlcGFzc3dvcmQsIHNlcy1cXHUwMDNlcGFzc3dvcmQyKTtcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmM9MjQyND1pbnQgc21iMl9jaGVja19kdXJhYmxlX29wbG9jayhzdHJ1Y3Qga3NtYmRfY29ubiAqY29ubixcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmMtMjQzNy1cXHRpZiAoa3NtYmRfaGFzX290aGVyX2FjdGl2ZV9mZChmcCkpIHtcXG5mcy9zbWIvc2VydmVyL29wbG9jay5jOjI0Mzg6XFx0XFx0a3NtYmRfZGVidWcoU01CLCBcXFwiRHVyYWJsZSBoYW5kbGUgcmVjb25uZWN0IGZhaWxlZDogY29tcGV0aW5nIG9wZW5cXFxcblxcXCIpO1xcbmZzL3NtYi9zZXJ2ZXIvb3Bsb2NrLmMtMjQzOS1cXHRcXHRyZXQgPSAtRUJBREY7XFxuLS1cXG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTI0NDMtXFx0aWYgKGtzbWJkX3Zmc19jb21wYXJlX2R1cmFibGVfb3duZXIoZnAsIHVzZXIpID09IGZhbHNlKSB7XFxuZnMvc21iL3NlcnZlci9vcGxvY2suYzoyNDQ0OlxcdFxcdGtzbWJkX2RlYnVnKFNNQiwgXFxcIkR1cmFibGUgaGFuZGxlIHJlY29ubmVjdCBmYWlsZWQ6IG93bmVyIG1pc21hdGNoXFxcXG5cXFwiKTtcXG5mcy9zbWIvc2VydmVyL29wbG9jay5jLTI0NDUtXFx0XFx0cmV0ID0gLUVCQURGO1xcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM9MjQyOT1zdGF0aWMgaW50IHByb2Nlc3NfYXV0aF9zaWduYXR1cmUoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uLFxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMjQ2Mi1cXHRcXHRpZiAocmV0KSB7XFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MjQ2MzpcXHRcXHRcXHRwcl9lcnIoXFxcInByZXBhcmVfc2Vzc2lvbl9yZWNvbm5lY3QgZmFpbGVkOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0yNDY0LVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYz0zMzU5PWludCBjZXBoX2Nvbl92Ml90cnlfd3JpdGUoc3RydWN0IGNlcGhfY29ubmVjdGlvbiAqY29uKVxcbi0tXFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmMtMzM5NS1cXHRcXHRpZiAocmV0KSB7XFxubmV0L2NlcGgvbWVzc2VuZ2VyX3YyLmM6MzM5NjpcXHRcXHRcXHRwcl9lcnIoXFxcImNlcGhfdGNwX2Nvbm5lY3QgZmFpbGVkOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5uZXQvY2VwaC9tZXNzZW5nZXJfdjIuYy0zMzk3LVxcdFxcdFxcdGNvbi1cXHUwMDNlZXJyb3JfbXNnID0gXFxcImNvbm5lY3QgZXJyb3JcXFwiO1xcbi0tXFxubmV0L3Jkcy90aHJlYWRzLmM9MTYyPXZvaWQgcmRzX2Nvbm5lY3Rfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9yZHMvdGhyZWFkcy5jLTE4NS1cXHRcXHRcXHRlbHNlXFxubmV0L3Jkcy90aHJlYWRzLmM6MTg2OlxcdFxcdFxcdFxcdHJkc19jb25uX3BhdGhfZXJyb3IoY3AsIFxcXCJjb25uZWN0IGZhaWxlZFxcXFxuXFxcIik7XFxubmV0L3Jkcy90aHJlYWRzLmMtMTg3LVxcdFxcdH1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NvcmVkdW1wL2NvcmVkdW1wX3NvY2tldF90ZXN0LmM9MjA5PVRFU1RfRihjb3JlZHVtcCwgc29ja2V0X2RldGVjdF91c2Vyc3BhY2VfY2xpZW50KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY29yZWR1bXAvY29yZWR1bXBfc29ja2V0X3Rlc3QuYy0zMTAtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jb3JlZHVtcC9jb3JlZHVtcF9zb2NrZXRfdGVzdC5jOjMxMTpcXHRcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcInNvY2tldF9kZXRlY3RfdXNlcnNwYWNlX2NsaWVudCAoY2xpZW50KTogY29ubmVjdCBmYWlsZWQ6ICVtXFxcXG5cXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jb3JlZHVtcC9jb3JlZHVtcF9zb2NrZXRfdGVzdC5jLTMxMi1cXHRcXHRcXHRfZXhpdChFWElUX0ZBSUxVUkUpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldHRlc3QuYz0xNjY4PXN0YXRpYyBpbnQgd2FpdF9mb3JfY29ubmVjdChpbnQgc2QpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0dGVzdC5jLTE2OTUtXFx0aWYgKHZhbCAhPSAwKSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldHRlc3QuYzoxNjk2OlxcdFxcdGxvZ19lcnJvcihcXFwiY29ubmVjdCBmYWlsZWQ6ICVkOiAlc1xcXFxuXFxcIiwgdmFsLCBzdHJlcnJvcih2YWwpKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0dGVzdC5jLTE2OTctXFx0XFx0cmV0dXJuIC0xO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMDo1MDowNi45MTAxNjM5NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MTIwNjYzMjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgaW5kZWVkIGEgY29udGFpbmVkIGNoYW5nZS4gVGhlIGRpZmYgY29uZmlybXMgaXQ7IGl0J3MgYSBzdHJhaWdodGZvcndhcmQgYWRkaXRpb24gb2YgYW4gZXJyb3IgbG9nIG1lc3NhZ2Ugd2l0aGluIHRoZSBgYnJjbWZfYnNzX2Nvbm5lY3RfZG9uZWAgZnVuY3Rpb24gaW4gYGNmZzgwMjExLmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGBicGh5X2VycmAgbG9nZ2luZyB1cG9uIGEgY29ubmVjdGlvbiBmYWlsdXJlIHdoZXJlIHRoZSBhc3NvY2lhdGlvbiBoYXMgdGltZWQgb3V0LlxuXG5HaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0sIHRoaXMgbG9va3MgbGlrZSBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nLiBJdCdzIHVzaW5nIGBicGh5X2VycmAsIGFuZCBJIGtub3cgdGhhdCB0aGlzIGRvZXNuJ3QgaW1wYWN0IGNvbnRyb2wgZmxvdyBvciBhbHRlciBhbnkgY3JpdGljYWwgZGF0YSBzdHJ1Y3R1cmVzLiBUaGlzIGFsaWducyBkaXJlY3RseSB3aXRoIHRoZSBcIldvcnRoRnV6emluZz1mYWxzZVwiIGNyaXRlcmlhIG91dGxpbmVkIGluIHNlY3Rpb24gMi5cblxuVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAuIFNpbmNlIHRoaXMgaXMgYSBsb2dnaW5nIGFkZGl0aW9uIGFuZCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgYXJlYXMgdGhhdCB3b3VsZCBiZSBpbnRlcmVzdGluZyB0byBmdXp6LCB0aGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCB3aWxsIGJlIGVtcHR5LiBJJ2xsIHByb3ZpZGUgYSBjb25jaXNlIHJlYXNvbmluZzogXCJUaGlzIHBhdGNoIGFkZHMgcHVyZWx5IGRlY29yYXRpdmUgZXJyb3IgbG9nZ2luZywgbWFraW5nIGl0IG5vdCB3b3J0aCBmdXp6aW5nLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjQzLCJPdXRwdXRUb2tlbnMiOjcxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEwOjUwOjExLjAzMDgyOTExNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIGRlYnVnL2Vycm9yIGxvZyBtZXNzYWdlIChicGh5X2VycikgcmVwb3J0aW5nIGNvbm5lY3Rpb24gZmFpbHVyZSBkZXRhaWxzLiBJdCBpbnRyb2R1Y2VzIHB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdywgc3RhdGUgbWFuYWdlbWVudCwgb3IgZGF0YSBzdHJ1Y3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgZGVidWcvZXJyb3IgbG9nIG1lc3NhZ2UgKGJwaHlfZXJyKSByZXBvcnRpbmcgY29ubmVjdGlvbiBmYWlsdXJlIGRldGFpbHMuIEl0IGludHJvZHVjZXMgcHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93LCBzdGF0ZSBtYW5hZ2VtZW50LCBvciBkYXRhIHN0cnVjdHVyZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMDo1MDoxMS4wMzA4NTE5NDVaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflown7rfn[1] Phase: Running StartedAt: 2026-09-09 10:50:21 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflown7rfn[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-09 10:50:21 +0000 UTC FinishedAt: 2026-09-09 10:50:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}