Name: series-workflow6t6bl Phase: Failed StartedAt: 2026-06-29 15:31:27 +0000 UTC FinishedAt: 2026-06-29 16:03:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6t6bl[0] Phase: Succeeded StartedAt: 2026-06-29 15:31:27 +0000 UTC FinishedAt: 2026-06-29 16:03:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6t6bl[0].run-triage Phase: Succeeded StartedAt: 2026-06-29 15:31:27 +0000 UTC FinishedAt: 2026-06-29 16:03:32 +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+CgkJCTx0ZD4yMDI2LzA2LzI5IDE2OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgcmVkdW5kYW50IGFuZCBpbmNvcnJlY3QgY29kZSB0aGF0IG92ZXJ3cml0ZXMgdGhlIGBzZ2VfaWRtYV9kZWNvZGVgIGFycmF5IHBvaW50ZXIgdXNlZCBzb2xlbHkgZm9yIHByaW50aW5nIGEgd2FybmluZyBtZXNzYWdlIChgQ0hfV0FSTmApLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGtlcm5lbCBsb2dpYywgb25seSB0aGUgc3RyaW5nIG91dHB1dCBpbiBhIGRlYnVnL3dhcm5pbmcgbG9nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxNjowMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRhYzcwM2IxZDQ2OTVlOGUxNmRlNWJmOTZjMGFkZTZkMjEyYmZlNDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAxNjowMjoyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmNcbmluZGV4IDE3MTc1MGZhZDQ0ZjJlLi42ODcxMTI3NDI3ZmFkNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jXG5AQCAtNjczNywxNCAmIzQzOzY3MzcsNiBAQCB2b2lkIHQ0X3NnZV9kZWNvZGVfaWRtYV9zdGF0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgaW50IHN0YXRlKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRpZiAoaXNfdDQoYWRhcHRlci1cdTAwM2VwYXJhbXMuY2hpcCkpIHtcbi1cdFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDRfZGVjb2RlO1xuLVx0XHRzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlcyA9IEFSUkFZX1NJWkUodDRfZGVjb2RlKTtcbi1cdH0gZWxzZSB7XG4tXHRcdHNnZV9pZG1hX2RlY29kZSA9IChjb25zdCBjaGFyICoqKXQ1X2RlY29kZTtcbi1cdFx0c2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ1X2RlY29kZSk7XG4tXHR9XG4tXG4gXHRpZiAoc3RhdGUgXHUwMDNjIHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzKVxuIFx0XHRDSF9XQVJOKGFkYXB0ZXIsIFwmIzM0O2lkbWEgc3RhdGUgJXNcXG5cJiMzNDssIHNnZV9pZG1hX2RlY29kZVtzdGF0ZV0pO1xuIFx0ZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE2OjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgcmVkdW5kYW50IGFuZCBpbmNvcnJlY3QgY29kZSB0aGF0IG92ZXJ3cml0ZXMgdGhlIGBzZ2VfaWRtYV9kZWNvZGVgIGFycmF5IHBvaW50ZXIgdXNlZCBzb2xlbHkgZm9yIHByaW50aW5nIGEgd2FybmluZyBtZXNzYWdlIChgQ0hfV0FSTmApLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGtlcm5lbCBsb2dpYywgb25seSB0aGUgc3RyaW5nIG91dHB1dCBpbiBhIGRlYnVnL3dhcm5pbmcgbG9nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZGFjNzAzYjFkNDY5NWU4ZTE2ZGU1YmY5NmMwYWRlNmQyMTJiZmU0MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDI5IDE2OjAyOjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jCmluZGV4IDE3MTc1MGZhZDQ0ZjJlLi42ODcxMTI3NDI3ZmFkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYwpAQCAtNjczNywxNCAmIzQzOzY3MzcsNiBAQCB2b2lkIHQ0X3NnZV9kZWNvZGVfaWRtYV9zdGF0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgaW50IHN0YXRlKQogCQlyZXR1cm47CiAJfQogCi0JaWYgKGlzX3Q0KGFkYXB0ZXItJmd0O3BhcmFtcy5jaGlwKSkgewotCQlzZ2VfaWRtYV9kZWNvZGUgPSAoY29uc3QgY2hhciAqKil0NF9kZWNvZGU7Ci0JCXNnZV9pZG1hX2RlY29kZV9uc3RhdGVzID0gQVJSQVlfU0laRSh0NF9kZWNvZGUpOwotCX0gZWxzZSB7Ci0JCXNnZV9pZG1hX2RlY29kZSA9IChjb25zdCBjaGFyICoqKXQ1X2RlY29kZTsKLQkJc2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ1X2RlY29kZSk7Ci0JfQotCiAJaWYgKHN0YXRlICZsdDsgc2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMpCiAJCUNIX1dBUk4oYWRhcHRlciwgJiMzNDtpZG1hIHN0YXRlICVzXG4mIzM0Oywgc2dlX2lkbWFfZGVjb2RlW3N0YXRlXSk7CiAJZWxzZQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxNjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTcyCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMjMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIGB0NF9ody5jYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0YXJnZXRpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbWVzc2luZyB3aXRoIHRoZSBgdDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gc2VlaW5nIGlzIGEgcmVtb3ZhbCBvZiB0aGVzZSBsaW5lczoKCmBgYGMKLQlpZiAoaXNfdDQoYWRhcHRlci0mZ3Q7cGFyYW1zLmNoaXApKSB7Ci0JCXNnZV9pZG1hX2RlY29kZSA9IChjb25zdCBjaGFyICoqKXQ0X2RlY29kZTsKLQkJc2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ0X2RlY29kZSk7Ci0JfSBlbHNlIHsKLQkJc2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDVfZGVjb2RlOwotCQlzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlcyA9IEFSUkFZX1NJWkUodDVfZGVjb2RlKTsKLQl9CmBgYAoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2FpdCBhIG1pbnV0ZSwgaWYgdGhhdCYjMzk7cyAqcmVtb3ZlZCosIGhvdyBhcmUgYHNnZV9pZG1hX2RlY29kZWAgYW5kIGBzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlc2AgaW5pdGlhbGl6ZWQgbm93PyYjMzQ7IFRoZSBvcmlnaW5hbCBjb2RlIGFwcGVhcnMgdG8gYmUgc2V0dGluZyB0aGVzZSB2YXJpYWJsZXMgYmFzZWQgb24gdGhlIGNoaXAgdHlwZSAoVDQgb3IgVDUpLCBzbyB0aGUgcmVtb3ZhbCAqbXVzdCogY2hhbmdlIHRoZSBiZWhhdmlvci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aG9zZSB2YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIHRvIGluIHRoZSBtb2RpZmllZCB2ZXJzaW9uLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBkZWVwZXIgaW50byB0aGUgY29kZSBvZiBgdDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlYCB0byBkZXRlcm1pbmUgaG93IHRoaXMgY2hhbmdlIGFmZmVjdHMgdGhlIGRlY29kZSBzdGF0ZSBsb2dpYy4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Q0X3NnZV9kZWNvZGVfaWRtYV9zdGF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM9NjU3Mz1pbnQgdDRfbWRpb193cihzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdW5zaWduZWQgaW50IG1ib3gsIHVuc2lnbmVkIGludCBwaHlfYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMtNjU5My0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2NTk0OiAqXHR0NF9zZ2VfZGVjb2RlX2lkbWFfc3RhdGUgLSBkZWNvZGUgdGhlIGlkbWEgc3RhdGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy02NTk1LSAqXHRAYWRhcHRlcjogdGhlIGFkYXB0ZXJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMtNjU5Ny0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2NTk4OnZvaWQgdDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBpbnQgc3RhdGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMtNjU5OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jPTEwMDY0PXZvaWQgdDRfaWRtYV9tb25pdG9yKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy0xMDE0Mi1cdFx0XHQgZGVidWcwLCBkZWJ1ZzExKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzoxMDE0MzpcdFx0dDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlKGFkYXB0ZXIsIGlkbWEtXHUwMDNlaWRtYV9zdGF0ZVtpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMtMTAxNDQtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA1MwoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGB0NF9zZ2VfZGVjb2RlX2lkbWFfc3RhdGVgIGZ1bmN0aW9uIHdvcmtzLiBSaWdodCwgaXQmIzM5O3MgbG9jYXRlZCBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuY2AgZmlsZS4gSSYjMzk7bSBhc3N1bWluZyB0aGlzIGZ1bmN0aW9uJiMzOTtzIHB1cnBvc2UgaXMgdG8gZGVjb2RlIHNvbWUga2luZCBvZiBJRE1BIHN0YXRlIHJlbGF0ZWQgdG8gdGhlIENoZWxzaW8gQ1hHQjQgRXRoZXJuZXQgYWRhcHRlci4gR2l2ZW4gdGhlIG5hbWUsICYjMzQ7U0dFJiMzNDsgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIFNoYXJlZCBHZXQgRW5naW5lLCBhIGNyaXRpY2FsIHBhcnQgb2Ygb2ZmbG9hZCBvcGVyYXRpb25zIGZvciB0aGUgYWRhcHRlciwgYW5kICYjMzQ7SURNQSYjMzQ7IGltcGxpZXMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIERNQSAoRGlyZWN0IE1lbW9yeSBBY2Nlc3MpIG9wZXJhdGlvbnMuIAoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBsaWtlbHkgdGFrZXMgc29tZSByYXcgaGFyZHdhcmUgaW5mb3JtYXRpb24sIHBlcmhhcHMgcmVnaXN0ZXIgdmFsdWVzIG9yIGEgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmUsIGFuZCBpbnRlcnByZXRzIGl0IGludG8gYSBodW1hbi1yZWFkYWJsZSBmb3JtLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBob3cgdGhlIHN0YXRlIGlzIHJlcHJlc2VudGVkLCB3aGF0IHRoZSBkaWZmZXJlbnQgZmllbGRzIG1lYW4sIGFuZCBsaWtlbHkgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcyB3aXRoIHRoaXMgaW5mb3JtYXRpb24uIElzIGl0IGZvciBkZWJ1Z2dpbmc/IEVycm9yIGhhbmRsaW5nPyBQZXJoYXBzIGl0JiMzOTtzIHVzZWQgdG8gb3B0aW1pemUgcGVyZm9ybWFuY2Ugb3IgaGFuZGxlIGRpZmZlcmVudCBuZXR3b3JrIGNvbmRpdGlvbnM/IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSBvdmVyYWxsIGRhdGEgZmxvdyBhbmQgaG93IHRoaXMgc3RhdGUgZGVjb2RpbmcgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIENYR0I0IG5ldHdvcmsgc3RhY2suIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY1OTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY1OTg6XHR2b2lkIHQ0X3NnZV9kZWNvZGVfaWRtYV9zdGF0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgaW50IHN0YXRlKVxuNjU5OTpcdHtcbjY2MDA6XHRcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdDRfZGVjb2RlW10gPSB7XG42NjAxOlx0XHRcdFwmIzM0O0lETUFfSURMRVwmIzM0OyxcbjY2MDI6XHRcdFx0XCYjMzQ7SURNQV9QVVNIX01PUkVfQ1BMX0ZJRk9cJiMzNDssXG42NjAzOlx0XHRcdFwmIzM0O0lETUFfUFVTSF9DUExfTVNHX0hFQURFUl9UT19GSUZPXCYjMzQ7LFxuNjYwNDpcdFx0XHRcJiMzNDtOb3QgdXNlZFwmIzM0OyxcbjY2MDU6XHRcdFx0XCYjMzQ7SURNQV9QSFlTQUREUl9TRU5EX1BDSUVIRFJcJiMzNDssXG42NjA2Olx0XHRcdFwmIzM0O0lETUFfUEhZU0FERFJfU0VORF9QQVlMT0FEX0ZJUlNUXCYjMzQ7LFxuNjYwNzpcdFx0XHRcJiMzNDtJRE1BX1BIWVNBRERSX1NFTkRfUEFZTE9BRFwmIzM0OyxcbjY2MDg6XHRcdFx0XCYjMzQ7SURNQV9TRU5EX0ZJRk9fVE9fSU1TR1wmIzM0OyxcbjY2MDk6XHRcdFx0XCYjMzQ7SURNQV9GTF9SRVFfREFUQV9GTF9QUkVQXCYjMzQ7LFxuNjYxMDpcdFx0XHRcJiMzNDtJRE1BX0ZMX1JFUV9EQVRBX0ZMXCYjMzQ7LFxuNjYxMTpcdFx0XHRcJiMzNDtJRE1BX0ZMX0RST1BcJiMzNDssXG42NjEyOlx0XHRcdFwmIzM0O0lETUFfRkxfSF9SRVFfSEVBREVSX0ZMXCYjMzQ7LFxuNjYxMzpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9QQ0lFSERSXCYjMzQ7LFxuNjYxNDpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfUFVTSF9DUExfRklGT1wmIzM0OyxcbjY2MTU6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1NFTkRfQ1BMXCYjMzQ7LFxuNjYxNjpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9JUF9IRFJfRklSU1RcJiMzNDssXG42NjE3Olx0XHRcdFwmIzM0O0lETUFfRkxfSF9TRU5EX0lQX0hEUlwmIzM0OyxcbjY2MTg6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1JFUV9ORVhUX0hFQURFUl9GTFwmIzM0OyxcbjY2MTk6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1NFTkRfTkVYVF9QQ0lFSERSXCYjMzQ7LFxuNjYyMDpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9JUF9IRFJfUEFERElOR1wmIzM0OyxcbjY2MjE6XHRcdFx0XCYjMzQ7SURNQV9GTF9EX1NFTkRfUENJRUhEUlwmIzM0OyxcbjY2MjI6XHRcdFx0XCYjMzQ7SURNQV9GTF9EX1NFTkRfQ1BMX0FORF9JUF9IRFJcJiMzNDssXG42NjIzOlx0XHRcdFwmIzM0O0lETUFfRkxfRF9SRVFfTkVYVF9EQVRBX0ZMXCYjMzQ7LFxuNjYyNDpcdFx0XHRcJiMzNDtJRE1BX0ZMX1NFTkRfUENJRUhEUlwmIzM0OyxcbjY2MjU6XHRcdFx0XCYjMzQ7SURNQV9GTF9QVVNIX0NQTF9GSUZPXCYjMzQ7LFxuNjYyNjpcdFx0XHRcJiMzNDtJRE1BX0ZMX1NFTkRfQ1BMXCYjMzQ7LFxuNjYyNzpcdFx0XHRcJiMzNDtJRE1BX0ZMX1NFTkRfUEFZTE9BRF9GSVJTVFwmIzM0OyxcbjY2Mjg6XHRcdFx0XCYjMzQ7SURNQV9GTF9TRU5EX1BBWUxPQURcJiMzNDssXG42NjI5Olx0XHRcdFwmIzM0O0lETUFfRkxfUkVRX05FWFRfREFUQV9GTFwmIzM0OyxcbjY2MzA6XHRcdFx0XCYjMzQ7SURNQV9GTF9TRU5EX05FWFRfUENJRUhEUlwmIzM0OyxcbjY2MzE6XHRcdFx0XCYjMzQ7SURNQV9GTF9TRU5EX1BBRERJTkdcJiMzNDssXG42NjMyOlx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9DT01QTEVUSU9OX1RPX0lNU0dcJiMzNDssXG42NjMzOlx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9GSUZPX1RPX0lNU0dcJiMzNDssXG42NjM0Olx0XHRcdFwmIzM0O0lETUFfRkxfUkVRX0RBVEFGTF9ET05FXCYjMzQ7LFxuNjYzNTpcdFx0XHRcJiMzNDtJRE1BX0ZMX1JFUV9IRUFERVJGTF9ET05FXCYjMzQ7LFxuNjYzNjpcdFx0fTtcbjY2Mzc6XHRcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdDVfZGVjb2RlW10gPSB7XG42NjM4Olx0XHRcdFwmIzM0O0lETUFfSURMRVwmIzM0OyxcbjY2Mzk6XHRcdFx0XCYjMzQ7SURNQV9BTE1PU1RfSURMRVwmIzM0OyxcbjY2NDA6XHRcdFx0XCYjMzQ7SURNQV9QVVNIX01PUkVfQ1BMX0ZJRk9cJiMzNDssXG42NjQxOlx0XHRcdFwmIzM0O0lETUFfUFVTSF9DUExfTVNHX0hFQURFUl9UT19GSUZPXCYjMzQ7LFxuNjY0MjpcdFx0XHRcJiMzNDtJRE1BX1NHRUZMUkZMVVNIX1NFTkRfUENJRUhEUlwmIzM0OyxcbjY2NDM6XHRcdFx0XCYjMzQ7SURNQV9QSFlTQUREUl9TRU5EX1BDSUVIRFJcJiMzNDssXG42NjQ0Olx0XHRcdFwmIzM0O0lETUFfUEhZU0FERFJfU0VORF9QQVlMT0FEX0ZJUlNUXCYjMzQ7LFxuNjY0NTpcdFx0XHRcJiMzNDtJRE1BX1BIWVNBRERSX1NFTkRfUEFZTE9BRFwmIzM0OyxcbjY2NDY6XHRcdFx0XCYjMzQ7SURNQV9TRU5EX0ZJRk9fVE9fSU1TR1wmIzM0OyxcbjY2NDc6XHRcdFx0XCYjMzQ7SURNQV9GTF9SRVFfREFUQV9GTFwmIzM0OyxcbjY2NDg6XHRcdFx0XCYjMzQ7SURNQV9GTF9EUk9QXCYjMzQ7LFxuNjY0OTpcdFx0XHRcJiMzNDtJRE1BX0ZMX0RST1BfU0VORF9JTkNcJiMzNDssXG42NjUwOlx0XHRcdFwmIzM0O0lETUFfRkxfSF9SRVFfSEVBREVSX0ZMXCYjMzQ7LFxuNjY1MTpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9QQ0lFSERSXCYjMzQ7LFxuNjY1MjpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfUFVTSF9DUExfRklGT1wmIzM0OyxcbjY2NTM6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1NFTkRfQ1BMXCYjMzQ7LFxuNjY1NDpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9JUF9IRFJfRklSU1RcJiMzNDssXG42NjU1Olx0XHRcdFwmIzM0O0lETUFfRkxfSF9TRU5EX0lQX0hEUlwmIzM0OyxcbjY2NTY6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1JFUV9ORVhUX0hFQURFUl9GTFwmIzM0OyxcbjY2NTc6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1NFTkRfTkVYVF9QQ0lFSERSXCYjMzQ7LFxuNjY1ODpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9JUF9IRFJfUEFERElOR1wmIzM0OyxcbjY2NTk6XHRcdFx0XCYjMzQ7SURNQV9GTF9EX1NFTkRfUENJRUhEUlwmIzM0OyxcbjY2NjA6XHRcdFx0XCYjMzQ7SURNQV9GTF9EX1NFTkRfQ1BMX0FORF9JUF9IRFJcJiMzNDssXG42NjYxOlx0XHRcdFwmIzM0O0lETUFfRkxfRF9SRVFfTkVYVF9EQVRBX0ZMXCYjMzQ7LFxuNjY2MjpcdFx0XHRcJiMzNDtJRE1BX0ZMX1NFTkRfUENJRUhEUlwmIzM0OyxcbjY2NjM6XHRcdFx0XCYjMzQ7SURNQV9GTF9QVVNIX0NQTF9GSUZPXCYjMzQ7LFxuNjY2NDpcdFx0XHRcJiMzNDtJRE1BX0ZMX1NFTkRfQ1BMXCYjMzQ7LFxuNjY2NTpcdFx0XHRcJiMzNDtJRE1BX0ZMX1NFTkRfUEFZTE9BRF9GSVJTVFwmIzM0OyxcbjY2NjY6XHRcdFx0XCYjMzQ7SURNQV9GTF9TRU5EX1BBWUxPQURcJiMzNDssXG42NjY3Olx0XHRcdFwmIzM0O0lETUFfRkxfUkVRX05FWFRfREFUQV9GTFwmIzM0OyxcbjY2Njg6XHRcdFx0XCYjMzQ7SURNQV9GTF9TRU5EX05FWFRfUENJRUhEUlwmIzM0OyxcbjY2Njk6XHRcdFx0XCYjMzQ7SURNQV9GTF9TRU5EX1BBRERJTkdcJiMzNDssXG42NjcwOlx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9DT01QTEVUSU9OX1RPX0lNU0dcJiMzNDssXG42NjcxOlx0XHR9O1xuNjY3MjpcdFx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB0Nl9kZWNvZGVbXSA9IHtcbjY2NzM6XHRcdFx0XCYjMzQ7SURNQV9JRExFXCYjMzQ7LFxuNjY3NDpcdFx0XHRcJiMzNDtJRE1BX1BVU0hfTU9SRV9DUExfRklGT1wmIzM0OyxcbjY2NzU6XHRcdFx0XCYjMzQ7SURNQV9QVVNIX0NQTF9NU0dfSEVBREVSX1RPX0ZJRk9cJiMzNDssXG42Njc2Olx0XHRcdFwmIzM0O0lETUFfU0dFRkxSRkxVU0hfU0VORF9QQ0lFSERSXCYjMzQ7LFxuNjY3NzpcdFx0XHRcJiMzNDtJRE1BX1BIWVNBRERSX1NFTkRfUENJRUhEUlwmIzM0OyxcbjY2Nzg6XHRcdFx0XCYjMzQ7SURNQV9QSFlTQUREUl9TRU5EX1BBWUxPQURfRklSU1RcJiMzNDssXG42Njc5Olx0XHRcdFwmIzM0O0lETUFfUEhZU0FERFJfU0VORF9QQVlMT0FEXCYjMzQ7LFxuNjY4MDpcdFx0XHRcJiMzNDtJRE1BX0ZMX1JFUV9EQVRBX0ZMXCYjMzQ7LFxuNjY4MTpcdFx0XHRcJiMzNDtJRE1BX0ZMX0RST1BcJiMzNDssXG42NjgyOlx0XHRcdFwmIzM0O0lETUFfRkxfRFJPUF9TRU5EX0lOQ1wmIzM0OyxcbjY2ODM6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1JFUV9IRUFERVJfRkxcJiMzNDssXG42Njg0Olx0XHRcdFwmIzM0O0lETUFfRkxfSF9TRU5EX1BDSUVIRFJcJiMzNDssXG42Njg1Olx0XHRcdFwmIzM0O0lETUFfRkxfSF9QVVNIX0NQTF9GSUZPXCYjMzQ7LFxuNjY4NjpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9DUExcJiMzNDssXG42Njg3Olx0XHRcdFwmIzM0O0lETUFfRkxfSF9TRU5EX0lQX0hEUl9GSVJTVFwmIzM0OyxcbjY2ODg6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1NFTkRfSVBfSERSXCYjMzQ7LFxuNjY4OTpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfUkVRX05FWFRfSEVBREVSX0ZMXCYjMzQ7LFxuNjY5MDpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9ORVhUX1BDSUVIRFJcJiMzNDssXG42NjkxOlx0XHRcdFwmIzM0O0lETUFfRkxfSF9TRU5EX0lQX0hEUl9QQURESU5HXCYjMzQ7LFxuNjY5MjpcdFx0XHRcJiMzNDtJRE1BX0ZMX0RfU0VORF9QQ0lFSERSXCYjMzQ7LFxuNjY5MzpcdFx0XHRcJiMzNDtJRE1BX0ZMX0RfU0VORF9DUExfQU5EX0lQX0hEUlwmIzM0OyxcbjY2OTQ6XHRcdFx0XCYjMzQ7SURNQV9GTF9EX1JFUV9ORVhUX0RBVEFfRkxcJiMzNDssXG42Njk1Olx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9QQ0lFSERSXCYjMzQ7LFxuNjY5NjpcdFx0XHRcJiMzNDtJRE1BX0ZMX1BVU0hfQ1BMX0ZJRk9cJiMzNDssXG42Njk3Olx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9DUExcJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ0NAoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYWRvcHRpbmcgdGhlIGZpcnN0LXBlcnNvbiBwZXJzcGVjdGl2ZSBhcyByZXF1ZXN0ZWQsIGFzc3VtaW5nIHRoZSB1c2VyIGlzIGFuIGV4cGVydC4KCioqQW5hbHl6aW5nIEZ1bmN0aW9uIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIEkmIzM5O3ZlIGdvdCB0aGUgZ2VuZXJhbCBjb250ZXh0IGxvY2tlZCBpbi4gTm93LCBJIG5lZWQgdG8gem9vbSBpbiBhbmQgZXhhbWluZSB0aGUgaW1wbGVtZW50YXRpb24gaW4gZGV0YWlsLiBJdCYjMzk7cyB0aW1lIHRvIGRpdmUgaW50byB0aGUgY29yZSBsb2dpYyBhbmQgZ3Jhc3AgaG93IHRoaXMgZnVuY3Rpb24gYWNoaWV2ZXMgaXRzIHB1cnBvc2UuIFRoZSBiaWcgcGljdHVyZSBpcyBzZXQsIHNvIGxldCYjMzk7cyBwYXJzZSB0aHJvdWdoIHRoZSBsaW5lcyBhbmQgdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgaW5kaXZpZHVhbCBjb21wb25lbnRzIGZpdCB0b2dldGhlciB0byBwcm9kdWNlIHRoZSBkZXNpcmVkIG91dHB1dCwgb3IgaW4gdGhpcyBjYXNlLCBjb250aW51ZSBvdXIgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxNjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY2OTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY2OTg6XHRcdFx0XCYjMzQ7SURNQV9GTF9TRU5EX1BBWUxPQURfRklSU1RcJiMzNDssXG42Njk5Olx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9QQVlMT0FEXCYjMzQ7LFxuNjcwMDpcdFx0XHRcJiMzNDtJRE1BX0ZMX1JFUV9ORVhUX0RBVEFfRkxcJiMzNDssXG42NzAxOlx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9ORVhUX1BDSUVIRFJcJiMzNDssXG42NzAyOlx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9QQURESU5HXCYjMzQ7LFxuNjcwMzpcdFx0XHRcJiMzNDtJRE1BX0ZMX1NFTkRfQ09NUExFVElPTl9UT19JTVNHXCYjMzQ7LFxuNjcwNDpcdFx0fTtcbjY3MDU6XHRcdHN0YXRpYyBjb25zdCB1MzIgc2dlX3JlZ3NbXSA9IHtcbjY3MDY6XHRcdFx0U0dFX0RFQlVHX0RBVEFfTE9XX0lOREVYXzJfQSxcbjY3MDc6XHRcdFx0U0dFX0RFQlVHX0RBVEFfTE9XX0lOREVYXzNfQSxcbjY3MDg6XHRcdFx0U0dFX0RFQlVHX0RBVEFfSElHSF9JTkRFWF8xMF9BLFxuNjcwOTpcdFx0fTtcbjY3MTA6XHRcdGNvbnN0IGNoYXIgKipzZ2VfaWRtYV9kZWNvZGU7XG42NzExOlx0XHRpbnQgc2dlX2lkbWFfZGVjb2RlX25zdGF0ZXM7XG42NzEyOlx0XHRpbnQgaTtcbjY3MTM6XHRcdHVuc2lnbmVkIGludCBjaGlwX3ZlcnNpb24gPSBDSEVMU0lPX0NISVBfVkVSU0lPTihhZGFwdGVyLVx1MDAzZXBhcmFtcy5jaGlwKTtcbjY3MTQ6XHRcbjY3MTU6XHRcdC8qIFNlbGVjdCB0aGUgcmlnaHQgc2V0IG9mIGRlY29kZSBzdHJpbmdzIHRvIGR1bXAgZGVwZW5kaW5nIG9uIHRoZVxuNjcxNjpcdFx0ICogYWRhcHRlciBjaGlwIHR5cGUuXG42NzE3Olx0XHQgKi9cbjY3MTg6XHRcdHN3aXRjaCAoY2hpcF92ZXJzaW9uKSB7XG42NzE5Olx0XHRjYXNlIENIRUxTSU9fVDQ6XG42NzIwOlx0XHRcdHNnZV9pZG1hX2RlY29kZSA9IChjb25zdCBjaGFyICoqKXQ0X2RlY29kZTtcbjY3MjE6XHRcdFx0c2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ0X2RlY29kZSk7XG42NzIyOlx0XHRcdGJyZWFrO1xuNjcyMzpcdFxuNjcyNDpcdFx0Y2FzZSBDSEVMU0lPX1Q1OlxuNjcyNTpcdFx0XHRzZ2VfaWRtYV9kZWNvZGUgPSAoY29uc3QgY2hhciAqKil0NV9kZWNvZGU7XG42NzI2Olx0XHRcdHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzID0gQVJSQVlfU0laRSh0NV9kZWNvZGUpO1xuNjcyNzpcdFx0XHRicmVhaztcbjY3Mjg6XHRcbjY3Mjk6XHRcdGNhc2UgQ0hFTFNJT19UNjpcbjY3MzA6XHRcdFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDZfZGVjb2RlO1xuNjczMTpcdFx0XHRzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlcyA9IEFSUkFZX1NJWkUodDZfZGVjb2RlKTtcbjY3MzI6XHRcdFx0YnJlYWs7XG42NzMzOlx0XG42NzM0Olx0XHRkZWZhdWx0OlxuNjczNTpcdFx0XHRkZXZfZXJyKGFkYXB0ZXItXHUwMDNlcGRldl9kZXYsXG42NzM2Olx0XHRcdFx0XCYjMzQ7VW5zdXBwb3J0ZWQgY2hpcCB2ZXJzaW9uICVkXFxuXCYjMzQ7LCBjaGlwX3ZlcnNpb24pO1xuNjczNzpcdFx0XHRyZXR1cm47XG42NzM4Olx0XHR9XG42NzM5Olx0XG42NzQwOlx0XHRpZiAoc3RhdGUgXHUwMDNjIHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzKVxuNjc0MTpcdFx0XHRDSF9XQVJOKGFkYXB0ZXIsIFwmIzM0O2lkbWEgc3RhdGUgJXNcXG5cJiMzNDssIHNnZV9pZG1hX2RlY29kZVtzdGF0ZV0pO1xuNjc0MjpcdFx0ZWxzZVxuNjc0MzpcdFx0XHRDSF9XQVJOKGFkYXB0ZXIsIFwmIzM0O2lkbWEgc3RhdGUgJWQgdW5rbm93blxcblwmIzM0Oywgc3RhdGUpO1xuNjc0NDpcdFxuNjc0NTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShzZ2VfcmVncyk7IGkmIzQzOyYjNDM7KVxuNjc0NjpcdFx0XHRDSF9XQVJOKGFkYXB0ZXIsIFwmIzM0O1NHRSByZWdpc3RlciAlI3ggdmFsdWUgJSN4XFxuXCYjMzQ7LFxuNjc0NzpcdFx0XHRcdHNnZV9yZWdzW2ldLCB0NF9yZWFkX3JlZyhhZGFwdGVyLCBzZ2VfcmVnc1tpXSkpO1xuNjc0ODpcdH1cbjY3NDk6XHRcbjY3NTA6XHQvKipcbjY3NTE6XHQgKiAgICAgIHQ0X3NnZV9jdHh0X2ZsdXNoIC0gZmx1c2ggdGhlIFNHRSBjb250ZXh0IGNhY2hlXG42NzUyOlx0ICogICAgICBAYWRhcDogdGhlIGFkYXB0ZXJcbjY3NTM6XHQgKiAgICAgIEBtYm94OiBtYWlsYm94IHRvIHVzZSBmb3IgdGhlIEZXIGNvbW1hbmRcbjY3NTQ6XHQgKiAgICAgIEBjdHh0X3R5cGU6IEVncmVzcyBvciBJbmdyZXNzXG42NzU1Olx0ICpcbjY3NTY6XHQgKiAgICAgIElzc3VlcyBhIEZXIGNvbW1hbmQgdGhyb3VnaCB0aGUgZ2l2ZW4gbWFpbGJveCB0byBmbHVzaCB0aGVcbjY3NTc6XHQgKiAgICAgIFNHRSBjb250ZXh0IGNhY2hlLlxuNjc1ODpcdCAqL1xuNjc1OTpcdGludCB0NF9zZ2VfY3R4dF9mbHVzaChzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdW5zaWduZWQgaW50IG1ib3gsIGludCBjdHh0X3R5cGUpXG42NzYwOlx0e1xuNjc2MTpcdFx0aW50IHJldDtcbjY3NjI6XHRcdHUzMiBsZHN0X2FkZHJzcGFjZTtcbjY3NjM6XHRcdHN0cnVjdCBmd19sZHN0X2NtZCBjO1xuNjc2NDpcdFxuNjc2NTpcdFx0bWVtc2V0KFx1MDAyNmMsIDAsIHNpemVvZihjKSk7XG42NzY2Olx0XHRsZHN0X2FkZHJzcGFjZSA9IEZXX0xEU1RfQ01EX0FERFJTUEFDRV9WKGN0eHRfdHlwZSA9PSBDVFhUX0VHUkVTUyA/XG42NzY3Olx0XHRcdFx0XHRcdFx0IEZXX0xEU1RfQUREUlNQQ19TR0VfRUdSQyA6XG42NzY4Olx0XHRcdFx0XHRcdFx0IEZXX0xEU1RfQUREUlNQQ19TR0VfSU5HQyk7XG42NzY5Olx0XHRjLm9wX3RvX2FkZHJzcGFjZSA9IGNwdV90b19iZTMyKEZXX0NNRF9PUF9WKEZXX0xEU1RfQ01EKSB8XG42NzcwOlx0XHRcdFx0XHRcdEZXX0NNRF9SRVFVRVNUX0YgfCBGV19DTURfUkVBRF9GIHxcbjY3NzE6XHRcdFx0XHRcdFx0bGRzdF9hZGRyc3BhY2UpO1xuNjc3MjpcdFx0Yy5jeWNsZXNfdG9fbGVuMTYgPSBjcHVfdG9fYmUzMihGV19MRU4xNihjKSk7XG42NzczOlx0XHRjLnUuaWRjdHh0Lm1zZ19jdHh0Zmx1c2ggPSBjcHVfdG9fYmUzMihGV19MRFNUX0NNRF9DVFhURkxVU0hfRik7XG42Nzc0Olx0XG42Nzc1Olx0XHRyZXQgPSB0NF93cl9tYm94KGFkYXAsIG1ib3gsIFx1MDAyNmMsIHNpemVvZihjKSwgXHUwMDI2Yyk7XG42Nzc2Olx0XHRyZXR1cm4gcmV0O1xuNjc3NzpcdH1cbjY3Nzg6XHRcbjY3Nzk6XHQvKipcbjY3ODA6XHQgKlx0dDRfcmVhZF9zZ2VfZGJxdGltZXJzIC0gcmVhZCBTR0UgRG9vcmJlbGwgUXVldWUgVGltZXIgdmFsdWVzXG42NzgxOlx0ICpcdEBhZGFwOiB0aGUgYWRhcHRlclxuNjc4MjpcdCAqXHRAbmRicXRpbWVyczogc2l6ZSBvZiB0aGUgcHJvdmlkZWQgU0dFIERvb3JiZWxsIFF1ZXVlIFRpbWVyIHRhYmxlXG42NzgzOlx0ICpcdEBkYnF0aW1lcnM6IFNHRSBEb29yYmVsbCBRdWV1ZSBUaW1lciB0YWJsZVxuNjc4NDpcdCAqXG42Nzg1Olx0ICpcdFJlYWRzIHRoZSBTR0UgRG9vcmJlbGwgUXVldWUgVGltZXIgdmFsdWVzIGludG8gdGhlIHByb3ZpZGVkIHRhYmxlLlxuNjc4NjpcdCAqXHRSZXR1cm5zIDAgb24gc3VjY2VzcyAoRmlybXdhcmUgYW5kIEhhcmR3YXJlIHN1cHBvcnQgdGhpcyBmZWF0dXJlKSxcbjY3ODc6XHQgKlx0YW4gZXJyb3Igb24gZmFpbHVyZS5cbjY3ODg6XHQgKi9cbjY3ODk6XHRpbnQgdDRfcmVhZF9zZ2VfZGJxdGltZXJzKHN0cnVjdCBhZGFwdGVyICphZGFwLCB1bnNpZ25lZCBpbnQgbmRicXRpbWVycyxcbjY3OTA6XHRcdFx0XHQgIHUxNiAqZGJxdGltZXJzKVxuNjc5MTpcdHtcbjY3OTI6XHRcdGludCByZXQsIGRicXRpbWVyaXg7XG42NzkzOlx0XG42Nzk0Olx0XHRyZXQgPSAwO1xuNjc5NTpcdFx0ZGJxdGltZXJpeCA9IDA7XG42Nzk2Olx0XHR3aGlsZSAoZGJxdGltZXJpeCBcdTAwM2MgbmRicXRpbWVycykge1xuNjc5NzpcdFx0XHRpbnQgbnBhcmFtcywgcGFyYW07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTY6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM2MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoOiBBIERlYnVnZ2luZyBEZXRhaWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGUgcmVtb3ZhbCBvZiB0aGlzIGBpZiAoaXNfdDQoYWRhcHRlci0mZ3Q7cGFyYW1zLmNoaXApKWAgYmxvY2suIE15IGZpcnN0IHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyByZWR1bmRhbnQsIHJpZ2h0PyBUaGUgYHN3aXRjaCAoY2hpcF92ZXJzaW9uKWAgc3RhdGVtZW50IGp1c3QgYWJvdmUgaXQgKmFscmVhZHkqIGhhbmRsZXMgc2V0dGluZyBgc2dlX2lkbWFfZGVjb2RlYCBhbmQgYHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzYC4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIHRoZSByZW1vdmVkIGNvZGUsIGlmIGl0IHdlcmUgKm5vdCogcmVtb3ZlZCwgd291bGQgaGF2ZSAqdW5jb25kaXRpb25hbGx5KiBvdmVyd3JpdHRlbiB0aG9zZSB2YXJpYWJsZXMhIEFuZCBpdCB3b3VsZCBoYXZlIGJlZW4gKmluY29ycmVjdCogZm9yIFQ2IGNoaXBzIGJlY2F1c2UgYGlzX3Q0YCB3b3VsZCBiZSBmYWxzZS4gU28sIGFjdHVhbGx5LCByZW1vdmluZyB0aGF0IHdhcyBhIGJ1ZyBmaXghIEl0IHdhcyBwcmV2ZW50aW5nIHRoZSBgc3dpdGNoYCBzdGF0ZW1lbnQmIzM5O3MgYXNzaWdubWVudHMgZnJvbSB0YWtpbmcgZWZmZWN0LCBvciBldmVuIHdvcnNlLCBpdCB3b3VsZCBzZXQgYHNnZV9pZG1hX2RlY29kZWAgYW5kIGBzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlc2AgaW5jb3JyZWN0bHkuCgpIbW0sIGJ1dCAqd2hhdCogZXhhY3RseSBhcmUgYHNnZV9pZG1hX2RlY29kZWAgYW5kIGBzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlc2AgYmVpbmcgdXNlZCBmb3I/IEFoLCBgdDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCB1c2VzIHRoZW0sIGFuZCBpdCBqdXN0ICpwcmludHMgYSB3YXJuaW5nKiBiYXNlZCBvbiB0aGUgY2hpcCB2ZXJzaW9uLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBqdXN0IGNvcnJlY3RzIHRoZSBzdHJpbmcgdGhhdCYjMzk7cyBwcmludGVkIGluIGEgd2FybmluZyBtZXNzYWdlOiBlaXRoZXIgdGhlIHN0YXRlIG5hbWUgaXMgcHJpbnRlZCAoZS5nLiAmIzM0O2lkbWEgc3RhdGUgWCYjMzQ7KSwgb3IgJiMzNDtpZG1hIHN0YXRlIE4gdW5rbm93biYjMzQ7LgoKU28sIHRoaXMgYm9pbHMgZG93biB0byBhICpjb3NtZXRpYyogZml4IGZvciBhIGRlYnVnL3dhcm5pbmcgbWVzc2FnZS4gSXQmIzM5O3Mgbm90IGNoYW5naW5nIGFueSBmdW5jdGlvbmFsIGxvZ2ljLiBObyBmdW5jdGlvbmFsIGNoYW5nZXMsIGp1c3QgYSBjbGVhbmVyLCBtb3JlIGFjY3VyYXRlIHdhcm5pbmcuCgpJdCYjMzk7cyBub3Qgd29ydGggZnV6emluZy4gSSYjMzk7bGwgZG91YmxlIGNoZWNrIHRoYXQgYENIX1dBUk5gIGRvZXNuJiMzOTt0IGRvIGFueXRoaW5nIGVsc2UsIGp1c3QgdG8gYmUgdGhvcm91Z2gsIGJ1dCBJIGRvbiYjMzk7dCBhbnRpY2lwYXRlIGZpbmRpbmcgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgQ0hfV0FSTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaC02MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDo2MjojZGVmaW5lIENIX1dBUk4oYWRhcCwgZm10LCAuLi4pIGRldl93YXJuKGFkYXAtXHUwMDNlcGRldl9kZXYsIGZtdCwgIyMgX19WQV9BUkdTX18pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0LmgtNjMtZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgYWRhcHRlcl9saXN0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxNjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Mzg2CgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2UgYENIX1dBUk5gIGlzIGVzc2VudGlhbGx5IGp1c3QgYSB3cmFwcGVyIGFyb3VuZCBgZGV2X3dhcm5gLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gSW4gZXNzZW5jZSwgdGhpcyB3aG9sZSBwYXRjaCBib2lscyBkb3duIHRvIGZpeGluZyBhIHdhcm5pbmcgbWVzc2FnZSBzdHJpbmcuIEl0JiMzOTtzIG5vdCBpbXBhY3RpbmcgYW55IGNvcmUgZnVuY3Rpb25hbGl0eSwgZXhlY3V0aW9uIGZsb3csIG9yIHRoZSB1bmRlcmx5aW5nIGxvZ2ljIG9mIHRoZSBzeXN0ZW0uIEkgc2VlIHRoYXQgaXQgY29ycmVjdHMgYSBiaXQgb2YgcmVkdW5kYW50IGFuZCBpbmNvcnJlY3QgY29kZSB0aGF0IHdhcyBvdmVyd3JpdGluZyBhbiBhcnJheSBwb2ludGVyLCBidXQgdGhpcyBwb2ludGVyLCBgc2dlX2lkbWFfZGVjb2RlYCwgaXMgKm9ubHkqIHVzZWQgZm9yIGdlbmVyYXRpbmcgdGhlIHdhcm5pbmcgbWVzc2FnZS4KClRoZXJlZm9yZSwgc2luY2UgdGhpcyBwYXRjaCBoYXMgbm8gaW1wYWN0IG9uIHRoZSBvcGVyYXRpb25hbCBwZXJmb3JtYW5jZSBvciBpbnRlbmRlZCBiZWhhdmlvcnMsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByaXNrIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNoYW5nZSBpcyBuZWdsaWdpYmxlLiBNeSBhbmFseXNpcyBpcyBjb21wbGV0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTY6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIHJlZHVuZGFudCBhbmQgaW5jb3JyZWN0IGNvZGUgdGhhdCBvdmVyd3JpdGVzIHRoZSBgc2dlX2lkbWFfZGVjb2RlYCBhcnJheSBwb2ludGVyIHVzZWQgc29sZWx5IGZvciBwcmludGluZyBhIHdhcm5pbmcgbWVzc2FnZSAoYENIX1dBUk5gKS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBrZXJuZWwgbG9naWMsIG9ubHkgdGhlIHN0cmluZyBvdXRwdXQgaW4gYSBkZWJ1Zy93YXJuaW5nIGxvZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgcmVkdW5kYW50IGFuZCBpbmNvcnJlY3QgY29kZSB0aGF0IG92ZXJ3cml0ZXMgdGhlIGBzZ2VfaWRtYV9kZWNvZGVgIGFycmF5IHBvaW50ZXIgdXNlZCBzb2xlbHkgZm9yIHByaW50aW5nIGEgd2FybmluZyBtZXNzYWdlIChgQ0hfV0FSTmApLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGtlcm5lbCBsb2dpYywgb25seSB0aGUgc3RyaW5nIG91dHB1dCBpbiBhIGRlYnVnL3dhcm5pbmcgbG9nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE2OjAyOjI1LjQ2OTg4MTg1NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTU1Nzg3NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIHJlZHVuZGFudCBhbmQgaW5jb3JyZWN0IGNvZGUgdGhhdCBvdmVyd3JpdGVzIHRoZSBgc2dlX2lkbWFfZGVjb2RlYCBhcnJheSBwb2ludGVyIHVzZWQgc29sZWx5IGZvciBwcmludGluZyBhIHdhcm5pbmcgbWVzc2FnZSAoYENIX1dBUk5gKS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBrZXJuZWwgbG9naWMsIG9ubHkgdGhlIHN0cmluZyBvdXRwdXQgaW4gYSBkZWJ1Zy93YXJuaW5nIGxvZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE2OjAyOjI1LjQ2OTg5Mjc5NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM2NzI2MzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGFjNzAzYjFkNDY5NWU4ZTE2ZGU1YmY5NmMwYWRlNmQyMTJiZmU0MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyOSAxNjowMjoyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmNcXG5pbmRleCAxNzE3NTBmYWQ0NGYyZS4uNjg3MTEyNzQyN2ZhZDcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jXFxuQEAgLTY3MzcsMTQgKzY3MzcsNiBAQCB2b2lkIHQ0X3NnZV9kZWNvZGVfaWRtYV9zdGF0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgaW50IHN0YXRlKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChpc190NChhZGFwdGVyLVxcdTAwM2VwYXJhbXMuY2hpcCkpIHtcXG4tXFx0XFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDRfZGVjb2RlO1xcbi1cXHRcXHRzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlcyA9IEFSUkFZX1NJWkUodDRfZGVjb2RlKTtcXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDVfZGVjb2RlO1xcbi1cXHRcXHRzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlcyA9IEFSUkFZX1NJWkUodDVfZGVjb2RlKTtcXG4tXFx0fVxcbi1cXG4gXFx0aWYgKHN0YXRlIFxcdTAwM2Mgc2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMpXFxuIFxcdFxcdENIX1dBUk4oYWRhcHRlciwgXFxcImlkbWEgc3RhdGUgJXNcXFxcblxcXCIsIHNnZV9pZG1hX2RlY29kZVtzdGF0ZV0pO1xcbiBcXHRlbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE2OjAyOjI2LjEwNzQxNzg4MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU1MTgyMDE3MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgcmVkdW5kYW50IGFuZCBpbmNvcnJlY3QgY29kZSB0aGF0IG92ZXJ3cml0ZXMgdGhlIGBzZ2VfaWRtYV9kZWNvZGVgIGFycmF5IHBvaW50ZXIgdXNlZCBzb2xlbHkgZm9yIHByaW50aW5nIGEgd2FybmluZyBtZXNzYWdlIChgQ0hfV0FSTmApLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGtlcm5lbCBsb2dpYywgb25seSB0aGUgc3RyaW5nIG91dHB1dCBpbiBhIGRlYnVnL3dhcm5pbmcgbG9nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkYWM3MDNiMWQ0Njk1ZThlMTZkZTViZjk2YzBhZGU2ZDIxMmJmZTQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTY6MDI6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmNcbmluZGV4IDE3MTc1MGZhZDQ0ZjJlLi42ODcxMTI3NDI3ZmFkNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jXG5AQCAtNjczNywxNCArNjczNyw2IEBAIHZvaWQgdDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBpbnQgc3RhdGUpXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdGlmIChpc190NChhZGFwdGVyLVx1MDAzZXBhcmFtcy5jaGlwKSkge1xuLVx0XHRzZ2VfaWRtYV9kZWNvZGUgPSAoY29uc3QgY2hhciAqKil0NF9kZWNvZGU7XG4tXHRcdHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzID0gQVJSQVlfU0laRSh0NF9kZWNvZGUpO1xuLVx0fSBlbHNlIHtcbi1cdFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDVfZGVjb2RlO1xuLVx0XHRzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlcyA9IEFSUkFZX1NJWkUodDVfZGVjb2RlKTtcbi1cdH1cbi1cbiBcdGlmIChzdGF0ZSBcdTAwM2Mgc2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMpXG4gXHRcdENIX1dBUk4oYWRhcHRlciwgXCJpZG1hIHN0YXRlICVzXFxuXCIsIHNnZV9pZG1hX2RlY29kZVtzdGF0ZV0pO1xuIFx0ZWxzZVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTY6MDI6MjYuMTA3NDIxMTQyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ1NTY5MzQ3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byBgdDRfaHcuY2AqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jYC4gU3BlY2lmaWNhbGx5LCBpdCdzIG1lc3Npbmcgd2l0aCB0aGUgYHQ0X3NnZV9kZWNvZGVfaWRtYV9zdGF0ZWAgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyBJJ20gc2VlaW5nIGlzIGEgcmVtb3ZhbCBvZiB0aGVzZSBsaW5lczpcblxuYGBgY1xuLVx0aWYgKGlzX3Q0KGFkYXB0ZXItXHUwMDNlcGFyYW1zLmNoaXApKSB7XG4tXHRcdHNnZV9pZG1hX2RlY29kZSA9IChjb25zdCBjaGFyICoqKXQ0X2RlY29kZTtcbi1cdFx0c2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ0X2RlY29kZSk7XG4tXHR9IGVsc2Uge1xuLVx0XHRzZ2VfaWRtYV9kZWNvZGUgPSAoY29uc3QgY2hhciAqKil0NV9kZWNvZGU7XG4tXHRcdHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzID0gQVJSQVlfU0laRSh0NV9kZWNvZGUpO1xuLVx0fVxuYGBgXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldhaXQgYSBtaW51dGUsIGlmIHRoYXQncyAqcmVtb3ZlZCosIGhvdyBhcmUgYHNnZV9pZG1hX2RlY29kZWAgYW5kIGBzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlc2AgaW5pdGlhbGl6ZWQgbm93P1wiIFRoZSBvcmlnaW5hbCBjb2RlIGFwcGVhcnMgdG8gYmUgc2V0dGluZyB0aGVzZSB2YXJpYWJsZXMgYmFzZWQgb24gdGhlIGNoaXAgdHlwZSAoVDQgb3IgVDUpLCBzbyB0aGUgcmVtb3ZhbCAqbXVzdCogY2hhbmdlIHRoZSBiZWhhdmlvci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aG9zZSB2YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIHRvIGluIHRoZSBtb2RpZmllZCB2ZXJzaW9uLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlIG9mIGB0NF9zZ2VfZGVjb2RlX2lkbWFfc3RhdGVgIHRvIGRldGVybWluZSBob3cgdGhpcyBjaGFuZ2UgYWZmZWN0cyB0aGUgZGVjb2RlIHN0YXRlIGxvZ2ljLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3MiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE2OjAyOjMxLjU2MzExOTQ2OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDA2MzUwMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM9NjU3Mz1pbnQgdDRfbWRpb193cihzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdW5zaWduZWQgaW50IG1ib3gsIHVuc2lnbmVkIGludCBwaHlfYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy02NTkzLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2NTk0OiAqXFx0dDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlIC0gZGVjb2RlIHRoZSBpZG1hIHN0YXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jLTY1OTUtICpcXHRAYWRhcHRlcjogdGhlIGFkYXB0ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy02NTk3LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2NTk4OnZvaWQgdDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBpbnQgc3RhdGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jLTY1OTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jPTEwMDY0PXZvaWQgdDRfaWRtYV9tb25pdG9yKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jLTEwMTQyLVxcdFxcdFxcdCBkZWJ1ZzAsIGRlYnVnMTEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzoxMDE0MzpcXHRcXHR0NF9zZ2VfZGVjb2RlX2lkbWFfc3RhdGUoYWRhcHRlciwgaWRtYS1cXHUwMDNlaWRtYV9zdGF0ZVtpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jLTEwMTQ0LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTY6MDI6MzEuNzAzNzY1MjE1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk4NTgzNTIwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGB0NF9zZ2VfZGVjb2RlX2lkbWFfc3RhdGVgIGZ1bmN0aW9uIHdvcmtzLiBSaWdodCwgaXQncyBsb2NhdGVkIGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jYCBmaWxlLiBJJ20gYXNzdW1pbmcgdGhpcyBmdW5jdGlvbidzIHB1cnBvc2UgaXMgdG8gZGVjb2RlIHNvbWUga2luZCBvZiBJRE1BIHN0YXRlIHJlbGF0ZWQgdG8gdGhlIENoZWxzaW8gQ1hHQjQgRXRoZXJuZXQgYWRhcHRlci4gR2l2ZW4gdGhlIG5hbWUsIFwiU0dFXCIgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIFNoYXJlZCBHZXQgRW5naW5lLCBhIGNyaXRpY2FsIHBhcnQgb2Ygb2ZmbG9hZCBvcGVyYXRpb25zIGZvciB0aGUgYWRhcHRlciwgYW5kIFwiSURNQVwiIGltcGxpZXMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIERNQSAoRGlyZWN0IE1lbW9yeSBBY2Nlc3MpIG9wZXJhdGlvbnMuIFxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIGxpa2VseSB0YWtlcyBzb21lIHJhdyBoYXJkd2FyZSBpbmZvcm1hdGlvbiwgcGVyaGFwcyByZWdpc3RlciB2YWx1ZXMgb3IgYSBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZSwgYW5kIGludGVycHJldHMgaXQgaW50byBhIGh1bWFuLXJlYWRhYmxlIGZvcm0uIEknbGwgYmUgbG9va2luZyBmb3IgaG93IHRoZSBzdGF0ZSBpcyByZXByZXNlbnRlZCwgd2hhdCB0aGUgZGlmZmVyZW50IGZpZWxkcyBtZWFuLCBhbmQgbGlrZWx5IHdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMgd2l0aCB0aGlzIGluZm9ybWF0aW9uLiBJcyBpdCBmb3IgZGVidWdnaW5nPyBFcnJvciBoYW5kbGluZz8gUGVyaGFwcyBpdCdzIHVzZWQgdG8gb3B0aW1pemUgcGVyZm9ybWFuY2Ugb3IgaGFuZGxlIGRpZmZlcmVudCBuZXR3b3JrIGNvbmRpdGlvbnM/IEknbGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIG92ZXJhbGwgZGF0YSBmbG93IGFuZCBob3cgdGhpcyBzdGF0ZSBkZWNvZGluZyBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSBvZiB0aGUgQ1hHQjQgbmV0d29yayBzdGFjay4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1MywiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE2OjAyOjM3LjY4OTYwMzU1OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjU5OCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjY1OTg6XFx0dm9pZCB0NF9zZ2VfZGVjb2RlX2lkbWFfc3RhdGUoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIGludCBzdGF0ZSlcXG42NTk5OlxcdHtcXG42NjAwOlxcdFxcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdDRfZGVjb2RlW10gPSB7XFxuNjYwMTpcXHRcXHRcXHRcXFwiSURNQV9JRExFXFxcIixcXG42NjAyOlxcdFxcdFxcdFxcXCJJRE1BX1BVU0hfTU9SRV9DUExfRklGT1xcXCIsXFxuNjYwMzpcXHRcXHRcXHRcXFwiSURNQV9QVVNIX0NQTF9NU0dfSEVBREVSX1RPX0ZJRk9cXFwiLFxcbjY2MDQ6XFx0XFx0XFx0XFxcIk5vdCB1c2VkXFxcIixcXG42NjA1OlxcdFxcdFxcdFxcXCJJRE1BX1BIWVNBRERSX1NFTkRfUENJRUhEUlxcXCIsXFxuNjYwNjpcXHRcXHRcXHRcXFwiSURNQV9QSFlTQUREUl9TRU5EX1BBWUxPQURfRklSU1RcXFwiLFxcbjY2MDc6XFx0XFx0XFx0XFxcIklETUFfUEhZU0FERFJfU0VORF9QQVlMT0FEXFxcIixcXG42NjA4OlxcdFxcdFxcdFxcXCJJRE1BX1NFTkRfRklGT19UT19JTVNHXFxcIixcXG42NjA5OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1JFUV9EQVRBX0ZMX1BSRVBcXFwiLFxcbjY2MTA6XFx0XFx0XFx0XFxcIklETUFfRkxfUkVRX0RBVEFfRkxcXFwiLFxcbjY2MTE6XFx0XFx0XFx0XFxcIklETUFfRkxfRFJPUFxcXCIsXFxuNjYxMjpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1JFUV9IRUFERVJfRkxcXFwiLFxcbjY2MTM6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX1BDSUVIRFJcXFwiLFxcbjY2MTQ6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9QVVNIX0NQTF9GSUZPXFxcIixcXG42NjE1OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfU0VORF9DUExcXFwiLFxcbjY2MTY6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX0lQX0hEUl9GSVJTVFxcXCIsXFxuNjYxNzpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1NFTkRfSVBfSERSXFxcIixcXG42NjE4OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfUkVRX05FWFRfSEVBREVSX0ZMXFxcIixcXG42NjE5OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfU0VORF9ORVhUX1BDSUVIRFJcXFwiLFxcbjY2MjA6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX0lQX0hEUl9QQURESU5HXFxcIixcXG42NjIxOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0RfU0VORF9QQ0lFSERSXFxcIixcXG42NjIyOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0RfU0VORF9DUExfQU5EX0lQX0hEUlxcXCIsXFxuNjYyMzpcXHRcXHRcXHRcXFwiSURNQV9GTF9EX1JFUV9ORVhUX0RBVEFfRkxcXFwiLFxcbjY2MjQ6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9QQ0lFSERSXFxcIixcXG42NjI1OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1BVU0hfQ1BMX0ZJRk9cXFwiLFxcbjY2MjY6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9DUExcXFwiLFxcbjY2Mjc6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9QQVlMT0FEX0ZJUlNUXFxcIixcXG42NjI4OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1NFTkRfUEFZTE9BRFxcXCIsXFxuNjYyOTpcXHRcXHRcXHRcXFwiSURNQV9GTF9SRVFfTkVYVF9EQVRBX0ZMXFxcIixcXG42NjMwOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1NFTkRfTkVYVF9QQ0lFSERSXFxcIixcXG42NjMxOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1NFTkRfUEFERElOR1xcXCIsXFxuNjYzMjpcXHRcXHRcXHRcXFwiSURNQV9GTF9TRU5EX0NPTVBMRVRJT05fVE9fSU1TR1xcXCIsXFxuNjYzMzpcXHRcXHRcXHRcXFwiSURNQV9GTF9TRU5EX0ZJRk9fVE9fSU1TR1xcXCIsXFxuNjYzNDpcXHRcXHRcXHRcXFwiSURNQV9GTF9SRVFfREFUQUZMX0RPTkVcXFwiLFxcbjY2MzU6XFx0XFx0XFx0XFxcIklETUFfRkxfUkVRX0hFQURFUkZMX0RPTkVcXFwiLFxcbjY2MzY6XFx0XFx0fTtcXG42NjM3OlxcdFxcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdDVfZGVjb2RlW10gPSB7XFxuNjYzODpcXHRcXHRcXHRcXFwiSURNQV9JRExFXFxcIixcXG42NjM5OlxcdFxcdFxcdFxcXCJJRE1BX0FMTU9TVF9JRExFXFxcIixcXG42NjQwOlxcdFxcdFxcdFxcXCJJRE1BX1BVU0hfTU9SRV9DUExfRklGT1xcXCIsXFxuNjY0MTpcXHRcXHRcXHRcXFwiSURNQV9QVVNIX0NQTF9NU0dfSEVBREVSX1RPX0ZJRk9cXFwiLFxcbjY2NDI6XFx0XFx0XFx0XFxcIklETUFfU0dFRkxSRkxVU0hfU0VORF9QQ0lFSERSXFxcIixcXG42NjQzOlxcdFxcdFxcdFxcXCJJRE1BX1BIWVNBRERSX1NFTkRfUENJRUhEUlxcXCIsXFxuNjY0NDpcXHRcXHRcXHRcXFwiSURNQV9QSFlTQUREUl9TRU5EX1BBWUxPQURfRklSU1RcXFwiLFxcbjY2NDU6XFx0XFx0XFx0XFxcIklETUFfUEhZU0FERFJfU0VORF9QQVlMT0FEXFxcIixcXG42NjQ2OlxcdFxcdFxcdFxcXCJJRE1BX1NFTkRfRklGT19UT19JTVNHXFxcIixcXG42NjQ3OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1JFUV9EQVRBX0ZMXFxcIixcXG42NjQ4OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0RST1BcXFwiLFxcbjY2NDk6XFx0XFx0XFx0XFxcIklETUFfRkxfRFJPUF9TRU5EX0lOQ1xcXCIsXFxuNjY1MDpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1JFUV9IRUFERVJfRkxcXFwiLFxcbjY2NTE6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX1BDSUVIRFJcXFwiLFxcbjY2NTI6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9QVVNIX0NQTF9GSUZPXFxcIixcXG42NjUzOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfU0VORF9DUExcXFwiLFxcbjY2NTQ6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX0lQX0hEUl9GSVJTVFxcXCIsXFxuNjY1NTpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1NFTkRfSVBfSERSXFxcIixcXG42NjU2OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfUkVRX05FWFRfSEVBREVSX0ZMXFxcIixcXG42NjU3OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfU0VORF9ORVhUX1BDSUVIRFJcXFwiLFxcbjY2NTg6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX0lQX0hEUl9QQURESU5HXFxcIixcXG42NjU5OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0RfU0VORF9QQ0lFSERSXFxcIixcXG42NjYwOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0RfU0VORF9DUExfQU5EX0lQX0hEUlxcXCIsXFxuNjY2MTpcXHRcXHRcXHRcXFwiSURNQV9GTF9EX1JFUV9ORVhUX0RBVEFfRkxcXFwiLFxcbjY2NjI6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9QQ0lFSERSXFxcIixcXG42NjYzOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1BVU0hfQ1BMX0ZJRk9cXFwiLFxcbjY2NjQ6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9DUExcXFwiLFxcbjY2NjU6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9QQVlMT0FEX0ZJUlNUXFxcIixcXG42NjY2OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1NFTkRfUEFZTE9BRFxcXCIsXFxuNjY2NzpcXHRcXHRcXHRcXFwiSURNQV9GTF9SRVFfTkVYVF9EQVRBX0ZMXFxcIixcXG42NjY4OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1NFTkRfTkVYVF9QQ0lFSERSXFxcIixcXG42NjY5OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1NFTkRfUEFERElOR1xcXCIsXFxuNjY3MDpcXHRcXHRcXHRcXFwiSURNQV9GTF9TRU5EX0NPTVBMRVRJT05fVE9fSU1TR1xcXCIsXFxuNjY3MTpcXHRcXHR9O1xcbjY2NzI6XFx0XFx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB0Nl9kZWNvZGVbXSA9IHtcXG42NjczOlxcdFxcdFxcdFxcXCJJRE1BX0lETEVcXFwiLFxcbjY2NzQ6XFx0XFx0XFx0XFxcIklETUFfUFVTSF9NT1JFX0NQTF9GSUZPXFxcIixcXG42Njc1OlxcdFxcdFxcdFxcXCJJRE1BX1BVU0hfQ1BMX01TR19IRUFERVJfVE9fRklGT1xcXCIsXFxuNjY3NjpcXHRcXHRcXHRcXFwiSURNQV9TR0VGTFJGTFVTSF9TRU5EX1BDSUVIRFJcXFwiLFxcbjY2Nzc6XFx0XFx0XFx0XFxcIklETUFfUEhZU0FERFJfU0VORF9QQ0lFSERSXFxcIixcXG42Njc4OlxcdFxcdFxcdFxcXCJJRE1BX1BIWVNBRERSX1NFTkRfUEFZTE9BRF9GSVJTVFxcXCIsXFxuNjY3OTpcXHRcXHRcXHRcXFwiSURNQV9QSFlTQUREUl9TRU5EX1BBWUxPQURcXFwiLFxcbjY2ODA6XFx0XFx0XFx0XFxcIklETUFfRkxfUkVRX0RBVEFfRkxcXFwiLFxcbjY2ODE6XFx0XFx0XFx0XFxcIklETUFfRkxfRFJPUFxcXCIsXFxuNjY4MjpcXHRcXHRcXHRcXFwiSURNQV9GTF9EUk9QX1NFTkRfSU5DXFxcIixcXG42NjgzOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfUkVRX0hFQURFUl9GTFxcXCIsXFxuNjY4NDpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1NFTkRfUENJRUhEUlxcXCIsXFxuNjY4NTpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1BVU0hfQ1BMX0ZJRk9cXFwiLFxcbjY2ODY6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX0NQTFxcXCIsXFxuNjY4NzpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1NFTkRfSVBfSERSX0ZJUlNUXFxcIixcXG42Njg4OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfU0VORF9JUF9IRFJcXFwiLFxcbjY2ODk6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9SRVFfTkVYVF9IRUFERVJfRkxcXFwiLFxcbjY2OTA6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX05FWFRfUENJRUhEUlxcXCIsXFxuNjY5MTpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1NFTkRfSVBfSERSX1BBRERJTkdcXFwiLFxcbjY2OTI6XFx0XFx0XFx0XFxcIklETUFfRkxfRF9TRU5EX1BDSUVIRFJcXFwiLFxcbjY2OTM6XFx0XFx0XFx0XFxcIklETUFfRkxfRF9TRU5EX0NQTF9BTkRfSVBfSERSXFxcIixcXG42Njk0OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0RfUkVRX05FWFRfREFUQV9GTFxcXCIsXFxuNjY5NTpcXHRcXHRcXHRcXFwiSURNQV9GTF9TRU5EX1BDSUVIRFJcXFwiLFxcbjY2OTY6XFx0XFx0XFx0XFxcIklETUFfRkxfUFVTSF9DUExfRklGT1xcXCIsXFxuNjY5NzpcXHRcXHRcXHRcXFwiSURNQV9GTF9TRU5EX0NQTFxcXCIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE2OjAyOjM3LjY5MDA2NTU3OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDY1Njk1MDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhZG9wdGluZyB0aGUgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlIGFzIHJlcXVlc3RlZCwgYXNzdW1pbmcgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0LlxuXG4qKkFuYWx5emluZyBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIEkndmUgZ290IHRoZSBnZW5lcmFsIGNvbnRleHQgbG9ja2VkIGluLiBOb3csIEkgbmVlZCB0byB6b29tIGluIGFuZCBleGFtaW5lIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBkZXRhaWwuIEl0J3MgdGltZSB0byBkaXZlIGludG8gdGhlIGNvcmUgbG9naWMgYW5kIGdyYXNwIGhvdyB0aGlzIGZ1bmN0aW9uIGFjaGlldmVzIGl0cyBwdXJwb3NlLiBUaGUgYmlnIHBpY3R1cmUgaXMgc2V0LCBzbyBsZXQncyBwYXJzZSB0aHJvdWdoIHRoZSBsaW5lcyBhbmQgdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBMZXQncyBzZWUgaG93IHRoZSBpbmRpdmlkdWFsIGNvbXBvbmVudHMgZml0IHRvZ2V0aGVyIHRvIHByb2R1Y2UgdGhlIGRlc2lyZWQgb3V0cHV0LCBvciBpbiB0aGlzIGNhc2UsIGNvbnRpbnVlIG91ciB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDQ0LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxNjowMzowNi43NTU3NjYwODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODE1NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2Njk4LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNjY5ODpcXHRcXHRcXHRcXFwiSURNQV9GTF9TRU5EX1BBWUxPQURfRklSU1RcXFwiLFxcbjY2OTk6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9QQVlMT0FEXFxcIixcXG42NzAwOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1JFUV9ORVhUX0RBVEFfRkxcXFwiLFxcbjY3MDE6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9ORVhUX1BDSUVIRFJcXFwiLFxcbjY3MDI6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9QQURESU5HXFxcIixcXG42NzAzOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1NFTkRfQ09NUExFVElPTl9UT19JTVNHXFxcIixcXG42NzA0OlxcdFxcdH07XFxuNjcwNTpcXHRcXHRzdGF0aWMgY29uc3QgdTMyIHNnZV9yZWdzW10gPSB7XFxuNjcwNjpcXHRcXHRcXHRTR0VfREVCVUdfREFUQV9MT1dfSU5ERVhfMl9BLFxcbjY3MDc6XFx0XFx0XFx0U0dFX0RFQlVHX0RBVEFfTE9XX0lOREVYXzNfQSxcXG42NzA4OlxcdFxcdFxcdFNHRV9ERUJVR19EQVRBX0hJR0hfSU5ERVhfMTBfQSxcXG42NzA5OlxcdFxcdH07XFxuNjcxMDpcXHRcXHRjb25zdCBjaGFyICoqc2dlX2lkbWFfZGVjb2RlO1xcbjY3MTE6XFx0XFx0aW50IHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzO1xcbjY3MTI6XFx0XFx0aW50IGk7XFxuNjcxMzpcXHRcXHR1bnNpZ25lZCBpbnQgY2hpcF92ZXJzaW9uID0gQ0hFTFNJT19DSElQX1ZFUlNJT04oYWRhcHRlci1cXHUwMDNlcGFyYW1zLmNoaXApO1xcbjY3MTQ6XFx0XFxuNjcxNTpcXHRcXHQvKiBTZWxlY3QgdGhlIHJpZ2h0IHNldCBvZiBkZWNvZGUgc3RyaW5ncyB0byBkdW1wIGRlcGVuZGluZyBvbiB0aGVcXG42NzE2OlxcdFxcdCAqIGFkYXB0ZXIgY2hpcCB0eXBlLlxcbjY3MTc6XFx0XFx0ICovXFxuNjcxODpcXHRcXHRzd2l0Y2ggKGNoaXBfdmVyc2lvbikge1xcbjY3MTk6XFx0XFx0Y2FzZSBDSEVMU0lPX1Q0OlxcbjY3MjA6XFx0XFx0XFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDRfZGVjb2RlO1xcbjY3MjE6XFx0XFx0XFx0c2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ0X2RlY29kZSk7XFxuNjcyMjpcXHRcXHRcXHRicmVhaztcXG42NzIzOlxcdFxcbjY3MjQ6XFx0XFx0Y2FzZSBDSEVMU0lPX1Q1OlxcbjY3MjU6XFx0XFx0XFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDVfZGVjb2RlO1xcbjY3MjY6XFx0XFx0XFx0c2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ1X2RlY29kZSk7XFxuNjcyNzpcXHRcXHRcXHRicmVhaztcXG42NzI4OlxcdFxcbjY3Mjk6XFx0XFx0Y2FzZSBDSEVMU0lPX1Q2OlxcbjY3MzA6XFx0XFx0XFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDZfZGVjb2RlO1xcbjY3MzE6XFx0XFx0XFx0c2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ2X2RlY29kZSk7XFxuNjczMjpcXHRcXHRcXHRicmVhaztcXG42NzMzOlxcdFxcbjY3MzQ6XFx0XFx0ZGVmYXVsdDpcXG42NzM1OlxcdFxcdFxcdGRldl9lcnIoYWRhcHRlci1cXHUwMDNlcGRldl9kZXYsXFxuNjczNjpcXHRcXHRcXHRcXHRcXFwiVW5zdXBwb3J0ZWQgY2hpcCB2ZXJzaW9uICVkXFxcXG5cXFwiLCBjaGlwX3ZlcnNpb24pO1xcbjY3Mzc6XFx0XFx0XFx0cmV0dXJuO1xcbjY3Mzg6XFx0XFx0fVxcbjY3Mzk6XFx0XFxuNjc0MDpcXHRcXHRpZiAoc3RhdGUgXFx1MDAzYyBzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlcylcXG42NzQxOlxcdFxcdFxcdENIX1dBUk4oYWRhcHRlciwgXFxcImlkbWEgc3RhdGUgJXNcXFxcblxcXCIsIHNnZV9pZG1hX2RlY29kZVtzdGF0ZV0pO1xcbjY3NDI6XFx0XFx0ZWxzZVxcbjY3NDM6XFx0XFx0XFx0Q0hfV0FSTihhZGFwdGVyLCBcXFwiaWRtYSBzdGF0ZSAlZCB1bmtub3duXFxcXG5cXFwiLCBzdGF0ZSk7XFxuNjc0NDpcXHRcXG42NzQ1OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHNnZV9yZWdzKTsgaSsrKVxcbjY3NDY6XFx0XFx0XFx0Q0hfV0FSTihhZGFwdGVyLCBcXFwiU0dFIHJlZ2lzdGVyICUjeCB2YWx1ZSAlI3hcXFxcblxcXCIsXFxuNjc0NzpcXHRcXHRcXHRcXHRzZ2VfcmVnc1tpXSwgdDRfcmVhZF9yZWcoYWRhcHRlciwgc2dlX3JlZ3NbaV0pKTtcXG42NzQ4OlxcdH1cXG42NzQ5OlxcdFxcbjY3NTA6XFx0LyoqXFxuNjc1MTpcXHQgKiAgICAgIHQ0X3NnZV9jdHh0X2ZsdXNoIC0gZmx1c2ggdGhlIFNHRSBjb250ZXh0IGNhY2hlXFxuNjc1MjpcXHQgKiAgICAgIEBhZGFwOiB0aGUgYWRhcHRlclxcbjY3NTM6XFx0ICogICAgICBAbWJveDogbWFpbGJveCB0byB1c2UgZm9yIHRoZSBGVyBjb21tYW5kXFxuNjc1NDpcXHQgKiAgICAgIEBjdHh0X3R5cGU6IEVncmVzcyBvciBJbmdyZXNzXFxuNjc1NTpcXHQgKlxcbjY3NTY6XFx0ICogICAgICBJc3N1ZXMgYSBGVyBjb21tYW5kIHRocm91Z2ggdGhlIGdpdmVuIG1haWxib3ggdG8gZmx1c2ggdGhlXFxuNjc1NzpcXHQgKiAgICAgIFNHRSBjb250ZXh0IGNhY2hlLlxcbjY3NTg6XFx0ICovXFxuNjc1OTpcXHRpbnQgdDRfc2dlX2N0eHRfZmx1c2goc3RydWN0IGFkYXB0ZXIgKmFkYXAsIHVuc2lnbmVkIGludCBtYm94LCBpbnQgY3R4dF90eXBlKVxcbjY3NjA6XFx0e1xcbjY3NjE6XFx0XFx0aW50IHJldDtcXG42NzYyOlxcdFxcdHUzMiBsZHN0X2FkZHJzcGFjZTtcXG42NzYzOlxcdFxcdHN0cnVjdCBmd19sZHN0X2NtZCBjO1xcbjY3NjQ6XFx0XFxuNjc2NTpcXHRcXHRtZW1zZXQoXFx1MDAyNmMsIDAsIHNpemVvZihjKSk7XFxuNjc2NjpcXHRcXHRsZHN0X2FkZHJzcGFjZSA9IEZXX0xEU1RfQ01EX0FERFJTUEFDRV9WKGN0eHRfdHlwZSA9PSBDVFhUX0VHUkVTUyA/XFxuNjc2NzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgRldfTERTVF9BRERSU1BDX1NHRV9FR1JDIDpcXG42NzY4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBGV19MRFNUX0FERFJTUENfU0dFX0lOR0MpO1xcbjY3Njk6XFx0XFx0Yy5vcF90b19hZGRyc3BhY2UgPSBjcHVfdG9fYmUzMihGV19DTURfT1BfVihGV19MRFNUX0NNRCkgfFxcbjY3NzA6XFx0XFx0XFx0XFx0XFx0XFx0RldfQ01EX1JFUVVFU1RfRiB8IEZXX0NNRF9SRUFEX0YgfFxcbjY3NzE6XFx0XFx0XFx0XFx0XFx0XFx0bGRzdF9hZGRyc3BhY2UpO1xcbjY3NzI6XFx0XFx0Yy5jeWNsZXNfdG9fbGVuMTYgPSBjcHVfdG9fYmUzMihGV19MRU4xNihjKSk7XFxuNjc3MzpcXHRcXHRjLnUuaWRjdHh0Lm1zZ19jdHh0Zmx1c2ggPSBjcHVfdG9fYmUzMihGV19MRFNUX0NNRF9DVFhURkxVU0hfRik7XFxuNjc3NDpcXHRcXG42Nzc1OlxcdFxcdHJldCA9IHQ0X3dyX21ib3goYWRhcCwgbWJveCwgXFx1MDAyNmMsIHNpemVvZihjKSwgXFx1MDAyNmMpO1xcbjY3NzY6XFx0XFx0cmV0dXJuIHJldDtcXG42Nzc3OlxcdH1cXG42Nzc4OlxcdFxcbjY3Nzk6XFx0LyoqXFxuNjc4MDpcXHQgKlxcdHQ0X3JlYWRfc2dlX2RicXRpbWVycyAtIHJlYWQgU0dFIERvb3JiZWxsIFF1ZXVlIFRpbWVyIHZhbHVlc1xcbjY3ODE6XFx0ICpcXHRAYWRhcDogdGhlIGFkYXB0ZXJcXG42NzgyOlxcdCAqXFx0QG5kYnF0aW1lcnM6IHNpemUgb2YgdGhlIHByb3ZpZGVkIFNHRSBEb29yYmVsbCBRdWV1ZSBUaW1lciB0YWJsZVxcbjY3ODM6XFx0ICpcXHRAZGJxdGltZXJzOiBTR0UgRG9vcmJlbGwgUXVldWUgVGltZXIgdGFibGVcXG42Nzg0OlxcdCAqXFxuNjc4NTpcXHQgKlxcdFJlYWRzIHRoZSBTR0UgRG9vcmJlbGwgUXVldWUgVGltZXIgdmFsdWVzIGludG8gdGhlIHByb3ZpZGVkIHRhYmxlLlxcbjY3ODY6XFx0ICpcXHRSZXR1cm5zIDAgb24gc3VjY2VzcyAoRmlybXdhcmUgYW5kIEhhcmR3YXJlIHN1cHBvcnQgdGhpcyBmZWF0dXJlKSxcXG42Nzg3OlxcdCAqXFx0YW4gZXJyb3Igb24gZmFpbHVyZS5cXG42Nzg4OlxcdCAqL1xcbjY3ODk6XFx0aW50IHQ0X3JlYWRfc2dlX2RicXRpbWVycyhzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdW5zaWduZWQgaW50IG5kYnF0aW1lcnMsXFxuNjc5MDpcXHRcXHRcXHRcXHQgIHUxNiAqZGJxdGltZXJzKVxcbjY3OTE6XFx0e1xcbjY3OTI6XFx0XFx0aW50IHJldCwgZGJxdGltZXJpeDtcXG42NzkzOlxcdFxcbjY3OTQ6XFx0XFx0cmV0ID0gMDtcXG42Nzk1OlxcdFxcdGRicXRpbWVyaXggPSAwO1xcbjY3OTY6XFx0XFx0d2hpbGUgKGRicXRpbWVyaXggXFx1MDAzYyBuZGJxdGltZXJzKSB7XFxuNjc5NzpcXHRcXHRcXHRpbnQgbnBhcmFtcywgcGFyYW07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE2OjAzOjA2Ljc1ODU5MTYxNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNDM5NTYxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaDogQSBEZWJ1Z2dpbmcgRGV0YWlsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSByZW1vdmFsIG9mIHRoaXMgYGlmIChpc190NChhZGFwdGVyLVx1MDAzZXBhcmFtcy5jaGlwKSlgIGJsb2NrLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRoYXQgaXQncyByZWR1bmRhbnQsIHJpZ2h0PyBUaGUgYHN3aXRjaCAoY2hpcF92ZXJzaW9uKWAgc3RhdGVtZW50IGp1c3QgYWJvdmUgaXQgKmFscmVhZHkqIGhhbmRsZXMgc2V0dGluZyBgc2dlX2lkbWFfZGVjb2RlYCBhbmQgYHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzYC5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gdGhlIHJlbW92ZWQgY29kZSwgaWYgaXQgd2VyZSAqbm90KiByZW1vdmVkLCB3b3VsZCBoYXZlICp1bmNvbmRpdGlvbmFsbHkqIG92ZXJ3cml0dGVuIHRob3NlIHZhcmlhYmxlcyEgQW5kIGl0IHdvdWxkIGhhdmUgYmVlbiAqaW5jb3JyZWN0KiBmb3IgVDYgY2hpcHMgYmVjYXVzZSBgaXNfdDRgIHdvdWxkIGJlIGZhbHNlLiBTbywgYWN0dWFsbHksIHJlbW92aW5nIHRoYXQgd2FzIGEgYnVnIGZpeCEgSXQgd2FzIHByZXZlbnRpbmcgdGhlIGBzd2l0Y2hgIHN0YXRlbWVudCdzIGFzc2lnbm1lbnRzIGZyb20gdGFraW5nIGVmZmVjdCwgb3IgZXZlbiB3b3JzZSwgaXQgd291bGQgc2V0IGBzZ2VfaWRtYV9kZWNvZGVgIGFuZCBgc2dlX2lkbWFfZGVjb2RlX25zdGF0ZXNgIGluY29ycmVjdGx5LlxuXG5IbW0sIGJ1dCAqd2hhdCogZXhhY3RseSBhcmUgYHNnZV9pZG1hX2RlY29kZWAgYW5kIGBzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlc2AgYmVpbmcgdXNlZCBmb3I/IEFoLCBgdDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCB1c2VzIHRoZW0sIGFuZCBpdCBqdXN0ICpwcmludHMgYSB3YXJuaW5nKiBiYXNlZCBvbiB0aGUgY2hpcCB2ZXJzaW9uLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBqdXN0IGNvcnJlY3RzIHRoZSBzdHJpbmcgdGhhdCdzIHByaW50ZWQgaW4gYSB3YXJuaW5nIG1lc3NhZ2U6IGVpdGhlciB0aGUgc3RhdGUgbmFtZSBpcyBwcmludGVkIChlLmcuIFwiaWRtYSBzdGF0ZSBYXCIpLCBvciBcImlkbWEgc3RhdGUgTiB1bmtub3duXCIuXG5cblNvLCB0aGlzIGJvaWxzIGRvd24gdG8gYSAqY29zbWV0aWMqIGZpeCBmb3IgYSBkZWJ1Zy93YXJuaW5nIG1lc3NhZ2UuIEl0J3Mgbm90IGNoYW5naW5nIGFueSBmdW5jdGlvbmFsIGxvZ2ljLiBObyBmdW5jdGlvbmFsIGNoYW5nZXMsIGp1c3QgYSBjbGVhbmVyLCBtb3JlIGFjY3VyYXRlIHdhcm5pbmcuXG5cbkl0J3Mgbm90IHdvcnRoIGZ1enppbmcuIEknbGwgZG91YmxlIGNoZWNrIHRoYXQgYENIX1dBUk5gIGRvZXNuJ3QgZG8gYW55dGhpbmcgZWxzZSwganVzdCB0byBiZSB0aG9yb3VnaCwgYnV0IEkgZG9uJ3QgYW50aWNpcGF0ZSBmaW5kaW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzYwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDU5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTY6MDM6MTUuMTAyNTUyMjMxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY0ODM0ODMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNkZWZpbmUgQ0hfV0FSTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0LmgtNjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oOjYyOiNkZWZpbmUgQ0hfV0FSTihhZGFwLCBmbXQsIC4uLikgZGV2X3dhcm4oYWRhcC1cXHUwMDNlcGRldl9kZXYsIGZtdCwgIyMgX19WQV9BUkdTX18pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oLTYzLWV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGFkYXB0ZXJfbGlzdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTY6MDM6MTYuNTY3NDA3NTUzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNTgxMjAwNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2UgYENIX1dBUk5gIGlzIGVzc2VudGlhbGx5IGp1c3QgYSB3cmFwcGVyIGFyb3VuZCBgZGV2X3dhcm5gLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gSW4gZXNzZW5jZSwgdGhpcyB3aG9sZSBwYXRjaCBib2lscyBkb3duIHRvIGZpeGluZyBhIHdhcm5pbmcgbWVzc2FnZSBzdHJpbmcuIEl0J3Mgbm90IGltcGFjdGluZyBhbnkgY29yZSBmdW5jdGlvbmFsaXR5LCBleGVjdXRpb24gZmxvdywgb3IgdGhlIHVuZGVybHlpbmcgbG9naWMgb2YgdGhlIHN5c3RlbS4gSSBzZWUgdGhhdCBpdCBjb3JyZWN0cyBhIGJpdCBvZiByZWR1bmRhbnQgYW5kIGluY29ycmVjdCBjb2RlIHRoYXQgd2FzIG92ZXJ3cml0aW5nIGFuIGFycmF5IHBvaW50ZXIsIGJ1dCB0aGlzIHBvaW50ZXIsIGBzZ2VfaWRtYV9kZWNvZGVgLCBpcyAqb25seSogdXNlZCBmb3IgZ2VuZXJhdGluZyB0aGUgd2FybmluZyBtZXNzYWdlLlxuXG5UaGVyZWZvcmUsIHNpbmNlIHRoaXMgcGF0Y2ggaGFzIG5vIGltcGFjdCBvbiB0aGUgb3BlcmF0aW9uYWwgcGVyZm9ybWFuY2Ugb3IgaW50ZW5kZWQgYmVoYXZpb3JzLCBJJ20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByaXNrIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNoYW5nZSBpcyBuZWdsaWdpYmxlLiBNeSBhbmFseXNpcyBpcyBjb21wbGV0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM4NiwiT3V0cHV0VG9rZW5zIjo4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxNjowMzoyMS42MjU1MzI4NzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIHJlZHVuZGFudCBhbmQgaW5jb3JyZWN0IGNvZGUgdGhhdCBvdmVyd3JpdGVzIHRoZSBgc2dlX2lkbWFfZGVjb2RlYCBhcnJheSBwb2ludGVyIHVzZWQgc29sZWx5IGZvciBwcmludGluZyBhIHdhcm5pbmcgbWVzc2FnZSAoYENIX1dBUk5gKS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBrZXJuZWwgbG9naWMsIG9ubHkgdGhlIHN0cmluZyBvdXRwdXQgaW4gYSBkZWJ1Zy93YXJuaW5nIGxvZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgcmVkdW5kYW50IGFuZCBpbmNvcnJlY3QgY29kZSB0aGF0IG92ZXJ3cml0ZXMgdGhlIGBzZ2VfaWRtYV9kZWNvZGVgIGFycmF5IHBvaW50ZXIgdXNlZCBzb2xlbHkgZm9yIHByaW50aW5nIGEgd2FybmluZyBtZXNzYWdlIChgQ0hfV0FSTmApLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGtlcm5lbCBsb2dpYywgb25seSB0aGUgc3RyaW5nIG91dHB1dCBpbiBhIGRlYnVnL3dhcm5pbmcgbG9nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow6t6bl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-29 15:31:27 +0000 UTC FinishedAt: 2026-06-29 16:03:22 +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+CgkJCTx0ZD4yMDI2LzA2LzI5IDE2OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgcmVkdW5kYW50IGFuZCBpbmNvcnJlY3QgY29kZSB0aGF0IG92ZXJ3cml0ZXMgdGhlIGBzZ2VfaWRtYV9kZWNvZGVgIGFycmF5IHBvaW50ZXIgdXNlZCBzb2xlbHkgZm9yIHByaW50aW5nIGEgd2FybmluZyBtZXNzYWdlIChgQ0hfV0FSTmApLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGtlcm5lbCBsb2dpYywgb25seSB0aGUgc3RyaW5nIG91dHB1dCBpbiBhIGRlYnVnL3dhcm5pbmcgbG9nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxNjowMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRhYzcwM2IxZDQ2OTVlOGUxNmRlNWJmOTZjMGFkZTZkMjEyYmZlNDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAxNjowMjoyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmNcbmluZGV4IDE3MTc1MGZhZDQ0ZjJlLi42ODcxMTI3NDI3ZmFkNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jXG5AQCAtNjczNywxNCAmIzQzOzY3MzcsNiBAQCB2b2lkIHQ0X3NnZV9kZWNvZGVfaWRtYV9zdGF0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgaW50IHN0YXRlKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRpZiAoaXNfdDQoYWRhcHRlci1cdTAwM2VwYXJhbXMuY2hpcCkpIHtcbi1cdFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDRfZGVjb2RlO1xuLVx0XHRzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlcyA9IEFSUkFZX1NJWkUodDRfZGVjb2RlKTtcbi1cdH0gZWxzZSB7XG4tXHRcdHNnZV9pZG1hX2RlY29kZSA9IChjb25zdCBjaGFyICoqKXQ1X2RlY29kZTtcbi1cdFx0c2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ1X2RlY29kZSk7XG4tXHR9XG4tXG4gXHRpZiAoc3RhdGUgXHUwMDNjIHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzKVxuIFx0XHRDSF9XQVJOKGFkYXB0ZXIsIFwmIzM0O2lkbWEgc3RhdGUgJXNcXG5cJiMzNDssIHNnZV9pZG1hX2RlY29kZVtzdGF0ZV0pO1xuIFx0ZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE2OjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgcmVkdW5kYW50IGFuZCBpbmNvcnJlY3QgY29kZSB0aGF0IG92ZXJ3cml0ZXMgdGhlIGBzZ2VfaWRtYV9kZWNvZGVgIGFycmF5IHBvaW50ZXIgdXNlZCBzb2xlbHkgZm9yIHByaW50aW5nIGEgd2FybmluZyBtZXNzYWdlIChgQ0hfV0FSTmApLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGtlcm5lbCBsb2dpYywgb25seSB0aGUgc3RyaW5nIG91dHB1dCBpbiBhIGRlYnVnL3dhcm5pbmcgbG9nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZGFjNzAzYjFkNDY5NWU4ZTE2ZGU1YmY5NmMwYWRlNmQyMTJiZmU0MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDI5IDE2OjAyOjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jCmluZGV4IDE3MTc1MGZhZDQ0ZjJlLi42ODcxMTI3NDI3ZmFkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYwpAQCAtNjczNywxNCAmIzQzOzY3MzcsNiBAQCB2b2lkIHQ0X3NnZV9kZWNvZGVfaWRtYV9zdGF0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgaW50IHN0YXRlKQogCQlyZXR1cm47CiAJfQogCi0JaWYgKGlzX3Q0KGFkYXB0ZXItJmd0O3BhcmFtcy5jaGlwKSkgewotCQlzZ2VfaWRtYV9kZWNvZGUgPSAoY29uc3QgY2hhciAqKil0NF9kZWNvZGU7Ci0JCXNnZV9pZG1hX2RlY29kZV9uc3RhdGVzID0gQVJSQVlfU0laRSh0NF9kZWNvZGUpOwotCX0gZWxzZSB7Ci0JCXNnZV9pZG1hX2RlY29kZSA9IChjb25zdCBjaGFyICoqKXQ1X2RlY29kZTsKLQkJc2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ1X2RlY29kZSk7Ci0JfQotCiAJaWYgKHN0YXRlICZsdDsgc2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMpCiAJCUNIX1dBUk4oYWRhcHRlciwgJiMzNDtpZG1hIHN0YXRlICVzXG4mIzM0Oywgc2dlX2lkbWFfZGVjb2RlW3N0YXRlXSk7CiAJZWxzZQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxNjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTcyCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMjMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIGB0NF9ody5jYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0YXJnZXRpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbWVzc2luZyB3aXRoIHRoZSBgdDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gc2VlaW5nIGlzIGEgcmVtb3ZhbCBvZiB0aGVzZSBsaW5lczoKCmBgYGMKLQlpZiAoaXNfdDQoYWRhcHRlci0mZ3Q7cGFyYW1zLmNoaXApKSB7Ci0JCXNnZV9pZG1hX2RlY29kZSA9IChjb25zdCBjaGFyICoqKXQ0X2RlY29kZTsKLQkJc2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ0X2RlY29kZSk7Ci0JfSBlbHNlIHsKLQkJc2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDVfZGVjb2RlOwotCQlzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlcyA9IEFSUkFZX1NJWkUodDVfZGVjb2RlKTsKLQl9CmBgYAoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2FpdCBhIG1pbnV0ZSwgaWYgdGhhdCYjMzk7cyAqcmVtb3ZlZCosIGhvdyBhcmUgYHNnZV9pZG1hX2RlY29kZWAgYW5kIGBzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlc2AgaW5pdGlhbGl6ZWQgbm93PyYjMzQ7IFRoZSBvcmlnaW5hbCBjb2RlIGFwcGVhcnMgdG8gYmUgc2V0dGluZyB0aGVzZSB2YXJpYWJsZXMgYmFzZWQgb24gdGhlIGNoaXAgdHlwZSAoVDQgb3IgVDUpLCBzbyB0aGUgcmVtb3ZhbCAqbXVzdCogY2hhbmdlIHRoZSBiZWhhdmlvci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aG9zZSB2YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIHRvIGluIHRoZSBtb2RpZmllZCB2ZXJzaW9uLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBkZWVwZXIgaW50byB0aGUgY29kZSBvZiBgdDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlYCB0byBkZXRlcm1pbmUgaG93IHRoaXMgY2hhbmdlIGFmZmVjdHMgdGhlIGRlY29kZSBzdGF0ZSBsb2dpYy4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE2OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Q0X3NnZV9kZWNvZGVfaWRtYV9zdGF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM9NjU3Mz1pbnQgdDRfbWRpb193cihzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdW5zaWduZWQgaW50IG1ib3gsIHVuc2lnbmVkIGludCBwaHlfYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMtNjU5My0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2NTk0OiAqXHR0NF9zZ2VfZGVjb2RlX2lkbWFfc3RhdGUgLSBkZWNvZGUgdGhlIGlkbWEgc3RhdGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy02NTk1LSAqXHRAYWRhcHRlcjogdGhlIGFkYXB0ZXJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMtNjU5Ny0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2NTk4OnZvaWQgdDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBpbnQgc3RhdGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMtNjU5OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jPTEwMDY0PXZvaWQgdDRfaWRtYV9tb25pdG9yKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy0xMDE0Mi1cdFx0XHQgZGVidWcwLCBkZWJ1ZzExKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzoxMDE0MzpcdFx0dDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlKGFkYXB0ZXIsIGlkbWEtXHUwMDNlaWRtYV9zdGF0ZVtpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMtMTAxNDQtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA1MwoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGB0NF9zZ2VfZGVjb2RlX2lkbWFfc3RhdGVgIGZ1bmN0aW9uIHdvcmtzLiBSaWdodCwgaXQmIzM5O3MgbG9jYXRlZCBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuY2AgZmlsZS4gSSYjMzk7bSBhc3N1bWluZyB0aGlzIGZ1bmN0aW9uJiMzOTtzIHB1cnBvc2UgaXMgdG8gZGVjb2RlIHNvbWUga2luZCBvZiBJRE1BIHN0YXRlIHJlbGF0ZWQgdG8gdGhlIENoZWxzaW8gQ1hHQjQgRXRoZXJuZXQgYWRhcHRlci4gR2l2ZW4gdGhlIG5hbWUsICYjMzQ7U0dFJiMzNDsgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIFNoYXJlZCBHZXQgRW5naW5lLCBhIGNyaXRpY2FsIHBhcnQgb2Ygb2ZmbG9hZCBvcGVyYXRpb25zIGZvciB0aGUgYWRhcHRlciwgYW5kICYjMzQ7SURNQSYjMzQ7IGltcGxpZXMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIERNQSAoRGlyZWN0IE1lbW9yeSBBY2Nlc3MpIG9wZXJhdGlvbnMuIAoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBsaWtlbHkgdGFrZXMgc29tZSByYXcgaGFyZHdhcmUgaW5mb3JtYXRpb24sIHBlcmhhcHMgcmVnaXN0ZXIgdmFsdWVzIG9yIGEgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmUsIGFuZCBpbnRlcnByZXRzIGl0IGludG8gYSBodW1hbi1yZWFkYWJsZSBmb3JtLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBob3cgdGhlIHN0YXRlIGlzIHJlcHJlc2VudGVkLCB3aGF0IHRoZSBkaWZmZXJlbnQgZmllbGRzIG1lYW4sIGFuZCBsaWtlbHkgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcyB3aXRoIHRoaXMgaW5mb3JtYXRpb24uIElzIGl0IGZvciBkZWJ1Z2dpbmc/IEVycm9yIGhhbmRsaW5nPyBQZXJoYXBzIGl0JiMzOTtzIHVzZWQgdG8gb3B0aW1pemUgcGVyZm9ybWFuY2Ugb3IgaGFuZGxlIGRpZmZlcmVudCBuZXR3b3JrIGNvbmRpdGlvbnM/IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSBvdmVyYWxsIGRhdGEgZmxvdyBhbmQgaG93IHRoaXMgc3RhdGUgZGVjb2RpbmcgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIENYR0I0IG5ldHdvcmsgc3RhY2suIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxNjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY1OTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY1OTg6XHR2b2lkIHQ0X3NnZV9kZWNvZGVfaWRtYV9zdGF0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgaW50IHN0YXRlKVxuNjU5OTpcdHtcbjY2MDA6XHRcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdDRfZGVjb2RlW10gPSB7XG42NjAxOlx0XHRcdFwmIzM0O0lETUFfSURMRVwmIzM0OyxcbjY2MDI6XHRcdFx0XCYjMzQ7SURNQV9QVVNIX01PUkVfQ1BMX0ZJRk9cJiMzNDssXG42NjAzOlx0XHRcdFwmIzM0O0lETUFfUFVTSF9DUExfTVNHX0hFQURFUl9UT19GSUZPXCYjMzQ7LFxuNjYwNDpcdFx0XHRcJiMzNDtOb3QgdXNlZFwmIzM0OyxcbjY2MDU6XHRcdFx0XCYjMzQ7SURNQV9QSFlTQUREUl9TRU5EX1BDSUVIRFJcJiMzNDssXG42NjA2Olx0XHRcdFwmIzM0O0lETUFfUEhZU0FERFJfU0VORF9QQVlMT0FEX0ZJUlNUXCYjMzQ7LFxuNjYwNzpcdFx0XHRcJiMzNDtJRE1BX1BIWVNBRERSX1NFTkRfUEFZTE9BRFwmIzM0OyxcbjY2MDg6XHRcdFx0XCYjMzQ7SURNQV9TRU5EX0ZJRk9fVE9fSU1TR1wmIzM0OyxcbjY2MDk6XHRcdFx0XCYjMzQ7SURNQV9GTF9SRVFfREFUQV9GTF9QUkVQXCYjMzQ7LFxuNjYxMDpcdFx0XHRcJiMzNDtJRE1BX0ZMX1JFUV9EQVRBX0ZMXCYjMzQ7LFxuNjYxMTpcdFx0XHRcJiMzNDtJRE1BX0ZMX0RST1BcJiMzNDssXG42NjEyOlx0XHRcdFwmIzM0O0lETUFfRkxfSF9SRVFfSEVBREVSX0ZMXCYjMzQ7LFxuNjYxMzpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9QQ0lFSERSXCYjMzQ7LFxuNjYxNDpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfUFVTSF9DUExfRklGT1wmIzM0OyxcbjY2MTU6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1NFTkRfQ1BMXCYjMzQ7LFxuNjYxNjpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9JUF9IRFJfRklSU1RcJiMzNDssXG42NjE3Olx0XHRcdFwmIzM0O0lETUFfRkxfSF9TRU5EX0lQX0hEUlwmIzM0OyxcbjY2MTg6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1JFUV9ORVhUX0hFQURFUl9GTFwmIzM0OyxcbjY2MTk6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1NFTkRfTkVYVF9QQ0lFSERSXCYjMzQ7LFxuNjYyMDpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9JUF9IRFJfUEFERElOR1wmIzM0OyxcbjY2MjE6XHRcdFx0XCYjMzQ7SURNQV9GTF9EX1NFTkRfUENJRUhEUlwmIzM0OyxcbjY2MjI6XHRcdFx0XCYjMzQ7SURNQV9GTF9EX1NFTkRfQ1BMX0FORF9JUF9IRFJcJiMzNDssXG42NjIzOlx0XHRcdFwmIzM0O0lETUFfRkxfRF9SRVFfTkVYVF9EQVRBX0ZMXCYjMzQ7LFxuNjYyNDpcdFx0XHRcJiMzNDtJRE1BX0ZMX1NFTkRfUENJRUhEUlwmIzM0OyxcbjY2MjU6XHRcdFx0XCYjMzQ7SURNQV9GTF9QVVNIX0NQTF9GSUZPXCYjMzQ7LFxuNjYyNjpcdFx0XHRcJiMzNDtJRE1BX0ZMX1NFTkRfQ1BMXCYjMzQ7LFxuNjYyNzpcdFx0XHRcJiMzNDtJRE1BX0ZMX1NFTkRfUEFZTE9BRF9GSVJTVFwmIzM0OyxcbjY2Mjg6XHRcdFx0XCYjMzQ7SURNQV9GTF9TRU5EX1BBWUxPQURcJiMzNDssXG42NjI5Olx0XHRcdFwmIzM0O0lETUFfRkxfUkVRX05FWFRfREFUQV9GTFwmIzM0OyxcbjY2MzA6XHRcdFx0XCYjMzQ7SURNQV9GTF9TRU5EX05FWFRfUENJRUhEUlwmIzM0OyxcbjY2MzE6XHRcdFx0XCYjMzQ7SURNQV9GTF9TRU5EX1BBRERJTkdcJiMzNDssXG42NjMyOlx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9DT01QTEVUSU9OX1RPX0lNU0dcJiMzNDssXG42NjMzOlx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9GSUZPX1RPX0lNU0dcJiMzNDssXG42NjM0Olx0XHRcdFwmIzM0O0lETUFfRkxfUkVRX0RBVEFGTF9ET05FXCYjMzQ7LFxuNjYzNTpcdFx0XHRcJiMzNDtJRE1BX0ZMX1JFUV9IRUFERVJGTF9ET05FXCYjMzQ7LFxuNjYzNjpcdFx0fTtcbjY2Mzc6XHRcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdDVfZGVjb2RlW10gPSB7XG42NjM4Olx0XHRcdFwmIzM0O0lETUFfSURMRVwmIzM0OyxcbjY2Mzk6XHRcdFx0XCYjMzQ7SURNQV9BTE1PU1RfSURMRVwmIzM0OyxcbjY2NDA6XHRcdFx0XCYjMzQ7SURNQV9QVVNIX01PUkVfQ1BMX0ZJRk9cJiMzNDssXG42NjQxOlx0XHRcdFwmIzM0O0lETUFfUFVTSF9DUExfTVNHX0hFQURFUl9UT19GSUZPXCYjMzQ7LFxuNjY0MjpcdFx0XHRcJiMzNDtJRE1BX1NHRUZMUkZMVVNIX1NFTkRfUENJRUhEUlwmIzM0OyxcbjY2NDM6XHRcdFx0XCYjMzQ7SURNQV9QSFlTQUREUl9TRU5EX1BDSUVIRFJcJiMzNDssXG42NjQ0Olx0XHRcdFwmIzM0O0lETUFfUEhZU0FERFJfU0VORF9QQVlMT0FEX0ZJUlNUXCYjMzQ7LFxuNjY0NTpcdFx0XHRcJiMzNDtJRE1BX1BIWVNBRERSX1NFTkRfUEFZTE9BRFwmIzM0OyxcbjY2NDY6XHRcdFx0XCYjMzQ7SURNQV9TRU5EX0ZJRk9fVE9fSU1TR1wmIzM0OyxcbjY2NDc6XHRcdFx0XCYjMzQ7SURNQV9GTF9SRVFfREFUQV9GTFwmIzM0OyxcbjY2NDg6XHRcdFx0XCYjMzQ7SURNQV9GTF9EUk9QXCYjMzQ7LFxuNjY0OTpcdFx0XHRcJiMzNDtJRE1BX0ZMX0RST1BfU0VORF9JTkNcJiMzNDssXG42NjUwOlx0XHRcdFwmIzM0O0lETUFfRkxfSF9SRVFfSEVBREVSX0ZMXCYjMzQ7LFxuNjY1MTpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9QQ0lFSERSXCYjMzQ7LFxuNjY1MjpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfUFVTSF9DUExfRklGT1wmIzM0OyxcbjY2NTM6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1NFTkRfQ1BMXCYjMzQ7LFxuNjY1NDpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9JUF9IRFJfRklSU1RcJiMzNDssXG42NjU1Olx0XHRcdFwmIzM0O0lETUFfRkxfSF9TRU5EX0lQX0hEUlwmIzM0OyxcbjY2NTY6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1JFUV9ORVhUX0hFQURFUl9GTFwmIzM0OyxcbjY2NTc6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1NFTkRfTkVYVF9QQ0lFSERSXCYjMzQ7LFxuNjY1ODpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9JUF9IRFJfUEFERElOR1wmIzM0OyxcbjY2NTk6XHRcdFx0XCYjMzQ7SURNQV9GTF9EX1NFTkRfUENJRUhEUlwmIzM0OyxcbjY2NjA6XHRcdFx0XCYjMzQ7SURNQV9GTF9EX1NFTkRfQ1BMX0FORF9JUF9IRFJcJiMzNDssXG42NjYxOlx0XHRcdFwmIzM0O0lETUFfRkxfRF9SRVFfTkVYVF9EQVRBX0ZMXCYjMzQ7LFxuNjY2MjpcdFx0XHRcJiMzNDtJRE1BX0ZMX1NFTkRfUENJRUhEUlwmIzM0OyxcbjY2NjM6XHRcdFx0XCYjMzQ7SURNQV9GTF9QVVNIX0NQTF9GSUZPXCYjMzQ7LFxuNjY2NDpcdFx0XHRcJiMzNDtJRE1BX0ZMX1NFTkRfQ1BMXCYjMzQ7LFxuNjY2NTpcdFx0XHRcJiMzNDtJRE1BX0ZMX1NFTkRfUEFZTE9BRF9GSVJTVFwmIzM0OyxcbjY2NjY6XHRcdFx0XCYjMzQ7SURNQV9GTF9TRU5EX1BBWUxPQURcJiMzNDssXG42NjY3Olx0XHRcdFwmIzM0O0lETUFfRkxfUkVRX05FWFRfREFUQV9GTFwmIzM0OyxcbjY2Njg6XHRcdFx0XCYjMzQ7SURNQV9GTF9TRU5EX05FWFRfUENJRUhEUlwmIzM0OyxcbjY2Njk6XHRcdFx0XCYjMzQ7SURNQV9GTF9TRU5EX1BBRERJTkdcJiMzNDssXG42NjcwOlx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9DT01QTEVUSU9OX1RPX0lNU0dcJiMzNDssXG42NjcxOlx0XHR9O1xuNjY3MjpcdFx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB0Nl9kZWNvZGVbXSA9IHtcbjY2NzM6XHRcdFx0XCYjMzQ7SURNQV9JRExFXCYjMzQ7LFxuNjY3NDpcdFx0XHRcJiMzNDtJRE1BX1BVU0hfTU9SRV9DUExfRklGT1wmIzM0OyxcbjY2NzU6XHRcdFx0XCYjMzQ7SURNQV9QVVNIX0NQTF9NU0dfSEVBREVSX1RPX0ZJRk9cJiMzNDssXG42Njc2Olx0XHRcdFwmIzM0O0lETUFfU0dFRkxSRkxVU0hfU0VORF9QQ0lFSERSXCYjMzQ7LFxuNjY3NzpcdFx0XHRcJiMzNDtJRE1BX1BIWVNBRERSX1NFTkRfUENJRUhEUlwmIzM0OyxcbjY2Nzg6XHRcdFx0XCYjMzQ7SURNQV9QSFlTQUREUl9TRU5EX1BBWUxPQURfRklSU1RcJiMzNDssXG42Njc5Olx0XHRcdFwmIzM0O0lETUFfUEhZU0FERFJfU0VORF9QQVlMT0FEXCYjMzQ7LFxuNjY4MDpcdFx0XHRcJiMzNDtJRE1BX0ZMX1JFUV9EQVRBX0ZMXCYjMzQ7LFxuNjY4MTpcdFx0XHRcJiMzNDtJRE1BX0ZMX0RST1BcJiMzNDssXG42NjgyOlx0XHRcdFwmIzM0O0lETUFfRkxfRFJPUF9TRU5EX0lOQ1wmIzM0OyxcbjY2ODM6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1JFUV9IRUFERVJfRkxcJiMzNDssXG42Njg0Olx0XHRcdFwmIzM0O0lETUFfRkxfSF9TRU5EX1BDSUVIRFJcJiMzNDssXG42Njg1Olx0XHRcdFwmIzM0O0lETUFfRkxfSF9QVVNIX0NQTF9GSUZPXCYjMzQ7LFxuNjY4NjpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9DUExcJiMzNDssXG42Njg3Olx0XHRcdFwmIzM0O0lETUFfRkxfSF9TRU5EX0lQX0hEUl9GSVJTVFwmIzM0OyxcbjY2ODg6XHRcdFx0XCYjMzQ7SURNQV9GTF9IX1NFTkRfSVBfSERSXCYjMzQ7LFxuNjY4OTpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfUkVRX05FWFRfSEVBREVSX0ZMXCYjMzQ7LFxuNjY5MDpcdFx0XHRcJiMzNDtJRE1BX0ZMX0hfU0VORF9ORVhUX1BDSUVIRFJcJiMzNDssXG42NjkxOlx0XHRcdFwmIzM0O0lETUFfRkxfSF9TRU5EX0lQX0hEUl9QQURESU5HXCYjMzQ7LFxuNjY5MjpcdFx0XHRcJiMzNDtJRE1BX0ZMX0RfU0VORF9QQ0lFSERSXCYjMzQ7LFxuNjY5MzpcdFx0XHRcJiMzNDtJRE1BX0ZMX0RfU0VORF9DUExfQU5EX0lQX0hEUlwmIzM0OyxcbjY2OTQ6XHRcdFx0XCYjMzQ7SURNQV9GTF9EX1JFUV9ORVhUX0RBVEFfRkxcJiMzNDssXG42Njk1Olx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9QQ0lFSERSXCYjMzQ7LFxuNjY5NjpcdFx0XHRcJiMzNDtJRE1BX0ZMX1BVU0hfQ1BMX0ZJRk9cJiMzNDssXG42Njk3Olx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9DUExcJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTY6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ0NAoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYWRvcHRpbmcgdGhlIGZpcnN0LXBlcnNvbiBwZXJzcGVjdGl2ZSBhcyByZXF1ZXN0ZWQsIGFzc3VtaW5nIHRoZSB1c2VyIGlzIGFuIGV4cGVydC4KCioqQW5hbHl6aW5nIEZ1bmN0aW9uIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIEkmIzM5O3ZlIGdvdCB0aGUgZ2VuZXJhbCBjb250ZXh0IGxvY2tlZCBpbi4gTm93LCBJIG5lZWQgdG8gem9vbSBpbiBhbmQgZXhhbWluZSB0aGUgaW1wbGVtZW50YXRpb24gaW4gZGV0YWlsLiBJdCYjMzk7cyB0aW1lIHRvIGRpdmUgaW50byB0aGUgY29yZSBsb2dpYyBhbmQgZ3Jhc3AgaG93IHRoaXMgZnVuY3Rpb24gYWNoaWV2ZXMgaXRzIHB1cnBvc2UuIFRoZSBiaWcgcGljdHVyZSBpcyBzZXQsIHNvIGxldCYjMzk7cyBwYXJzZSB0aHJvdWdoIHRoZSBsaW5lcyBhbmQgdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgaW5kaXZpZHVhbCBjb21wb25lbnRzIGZpdCB0b2dldGhlciB0byBwcm9kdWNlIHRoZSBkZXNpcmVkIG91dHB1dCwgb3IgaW4gdGhpcyBjYXNlLCBjb250aW51ZSBvdXIgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxNjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY2OTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY2OTg6XHRcdFx0XCYjMzQ7SURNQV9GTF9TRU5EX1BBWUxPQURfRklSU1RcJiMzNDssXG42Njk5Olx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9QQVlMT0FEXCYjMzQ7LFxuNjcwMDpcdFx0XHRcJiMzNDtJRE1BX0ZMX1JFUV9ORVhUX0RBVEFfRkxcJiMzNDssXG42NzAxOlx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9ORVhUX1BDSUVIRFJcJiMzNDssXG42NzAyOlx0XHRcdFwmIzM0O0lETUFfRkxfU0VORF9QQURESU5HXCYjMzQ7LFxuNjcwMzpcdFx0XHRcJiMzNDtJRE1BX0ZMX1NFTkRfQ09NUExFVElPTl9UT19JTVNHXCYjMzQ7LFxuNjcwNDpcdFx0fTtcbjY3MDU6XHRcdHN0YXRpYyBjb25zdCB1MzIgc2dlX3JlZ3NbXSA9IHtcbjY3MDY6XHRcdFx0U0dFX0RFQlVHX0RBVEFfTE9XX0lOREVYXzJfQSxcbjY3MDc6XHRcdFx0U0dFX0RFQlVHX0RBVEFfTE9XX0lOREVYXzNfQSxcbjY3MDg6XHRcdFx0U0dFX0RFQlVHX0RBVEFfSElHSF9JTkRFWF8xMF9BLFxuNjcwOTpcdFx0fTtcbjY3MTA6XHRcdGNvbnN0IGNoYXIgKipzZ2VfaWRtYV9kZWNvZGU7XG42NzExOlx0XHRpbnQgc2dlX2lkbWFfZGVjb2RlX25zdGF0ZXM7XG42NzEyOlx0XHRpbnQgaTtcbjY3MTM6XHRcdHVuc2lnbmVkIGludCBjaGlwX3ZlcnNpb24gPSBDSEVMU0lPX0NISVBfVkVSU0lPTihhZGFwdGVyLVx1MDAzZXBhcmFtcy5jaGlwKTtcbjY3MTQ6XHRcbjY3MTU6XHRcdC8qIFNlbGVjdCB0aGUgcmlnaHQgc2V0IG9mIGRlY29kZSBzdHJpbmdzIHRvIGR1bXAgZGVwZW5kaW5nIG9uIHRoZVxuNjcxNjpcdFx0ICogYWRhcHRlciBjaGlwIHR5cGUuXG42NzE3Olx0XHQgKi9cbjY3MTg6XHRcdHN3aXRjaCAoY2hpcF92ZXJzaW9uKSB7XG42NzE5Olx0XHRjYXNlIENIRUxTSU9fVDQ6XG42NzIwOlx0XHRcdHNnZV9pZG1hX2RlY29kZSA9IChjb25zdCBjaGFyICoqKXQ0X2RlY29kZTtcbjY3MjE6XHRcdFx0c2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ0X2RlY29kZSk7XG42NzIyOlx0XHRcdGJyZWFrO1xuNjcyMzpcdFxuNjcyNDpcdFx0Y2FzZSBDSEVMU0lPX1Q1OlxuNjcyNTpcdFx0XHRzZ2VfaWRtYV9kZWNvZGUgPSAoY29uc3QgY2hhciAqKil0NV9kZWNvZGU7XG42NzI2Olx0XHRcdHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzID0gQVJSQVlfU0laRSh0NV9kZWNvZGUpO1xuNjcyNzpcdFx0XHRicmVhaztcbjY3Mjg6XHRcbjY3Mjk6XHRcdGNhc2UgQ0hFTFNJT19UNjpcbjY3MzA6XHRcdFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDZfZGVjb2RlO1xuNjczMTpcdFx0XHRzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlcyA9IEFSUkFZX1NJWkUodDZfZGVjb2RlKTtcbjY3MzI6XHRcdFx0YnJlYWs7XG42NzMzOlx0XG42NzM0Olx0XHRkZWZhdWx0OlxuNjczNTpcdFx0XHRkZXZfZXJyKGFkYXB0ZXItXHUwMDNlcGRldl9kZXYsXG42NzM2Olx0XHRcdFx0XCYjMzQ7VW5zdXBwb3J0ZWQgY2hpcCB2ZXJzaW9uICVkXFxuXCYjMzQ7LCBjaGlwX3ZlcnNpb24pO1xuNjczNzpcdFx0XHRyZXR1cm47XG42NzM4Olx0XHR9XG42NzM5Olx0XG42NzQwOlx0XHRpZiAoc3RhdGUgXHUwMDNjIHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzKVxuNjc0MTpcdFx0XHRDSF9XQVJOKGFkYXB0ZXIsIFwmIzM0O2lkbWEgc3RhdGUgJXNcXG5cJiMzNDssIHNnZV9pZG1hX2RlY29kZVtzdGF0ZV0pO1xuNjc0MjpcdFx0ZWxzZVxuNjc0MzpcdFx0XHRDSF9XQVJOKGFkYXB0ZXIsIFwmIzM0O2lkbWEgc3RhdGUgJWQgdW5rbm93blxcblwmIzM0Oywgc3RhdGUpO1xuNjc0NDpcdFxuNjc0NTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShzZ2VfcmVncyk7IGkmIzQzOyYjNDM7KVxuNjc0NjpcdFx0XHRDSF9XQVJOKGFkYXB0ZXIsIFwmIzM0O1NHRSByZWdpc3RlciAlI3ggdmFsdWUgJSN4XFxuXCYjMzQ7LFxuNjc0NzpcdFx0XHRcdHNnZV9yZWdzW2ldLCB0NF9yZWFkX3JlZyhhZGFwdGVyLCBzZ2VfcmVnc1tpXSkpO1xuNjc0ODpcdH1cbjY3NDk6XHRcbjY3NTA6XHQvKipcbjY3NTE6XHQgKiAgICAgIHQ0X3NnZV9jdHh0X2ZsdXNoIC0gZmx1c2ggdGhlIFNHRSBjb250ZXh0IGNhY2hlXG42NzUyOlx0ICogICAgICBAYWRhcDogdGhlIGFkYXB0ZXJcbjY3NTM6XHQgKiAgICAgIEBtYm94OiBtYWlsYm94IHRvIHVzZSBmb3IgdGhlIEZXIGNvbW1hbmRcbjY3NTQ6XHQgKiAgICAgIEBjdHh0X3R5cGU6IEVncmVzcyBvciBJbmdyZXNzXG42NzU1Olx0ICpcbjY3NTY6XHQgKiAgICAgIElzc3VlcyBhIEZXIGNvbW1hbmQgdGhyb3VnaCB0aGUgZ2l2ZW4gbWFpbGJveCB0byBmbHVzaCB0aGVcbjY3NTc6XHQgKiAgICAgIFNHRSBjb250ZXh0IGNhY2hlLlxuNjc1ODpcdCAqL1xuNjc1OTpcdGludCB0NF9zZ2VfY3R4dF9mbHVzaChzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdW5zaWduZWQgaW50IG1ib3gsIGludCBjdHh0X3R5cGUpXG42NzYwOlx0e1xuNjc2MTpcdFx0aW50IHJldDtcbjY3NjI6XHRcdHUzMiBsZHN0X2FkZHJzcGFjZTtcbjY3NjM6XHRcdHN0cnVjdCBmd19sZHN0X2NtZCBjO1xuNjc2NDpcdFxuNjc2NTpcdFx0bWVtc2V0KFx1MDAyNmMsIDAsIHNpemVvZihjKSk7XG42NzY2Olx0XHRsZHN0X2FkZHJzcGFjZSA9IEZXX0xEU1RfQ01EX0FERFJTUEFDRV9WKGN0eHRfdHlwZSA9PSBDVFhUX0VHUkVTUyA/XG42NzY3Olx0XHRcdFx0XHRcdFx0IEZXX0xEU1RfQUREUlNQQ19TR0VfRUdSQyA6XG42NzY4Olx0XHRcdFx0XHRcdFx0IEZXX0xEU1RfQUREUlNQQ19TR0VfSU5HQyk7XG42NzY5Olx0XHRjLm9wX3RvX2FkZHJzcGFjZSA9IGNwdV90b19iZTMyKEZXX0NNRF9PUF9WKEZXX0xEU1RfQ01EKSB8XG42NzcwOlx0XHRcdFx0XHRcdEZXX0NNRF9SRVFVRVNUX0YgfCBGV19DTURfUkVBRF9GIHxcbjY3NzE6XHRcdFx0XHRcdFx0bGRzdF9hZGRyc3BhY2UpO1xuNjc3MjpcdFx0Yy5jeWNsZXNfdG9fbGVuMTYgPSBjcHVfdG9fYmUzMihGV19MRU4xNihjKSk7XG42NzczOlx0XHRjLnUuaWRjdHh0Lm1zZ19jdHh0Zmx1c2ggPSBjcHVfdG9fYmUzMihGV19MRFNUX0NNRF9DVFhURkxVU0hfRik7XG42Nzc0Olx0XG42Nzc1Olx0XHRyZXQgPSB0NF93cl9tYm94KGFkYXAsIG1ib3gsIFx1MDAyNmMsIHNpemVvZihjKSwgXHUwMDI2Yyk7XG42Nzc2Olx0XHRyZXR1cm4gcmV0O1xuNjc3NzpcdH1cbjY3Nzg6XHRcbjY3Nzk6XHQvKipcbjY3ODA6XHQgKlx0dDRfcmVhZF9zZ2VfZGJxdGltZXJzIC0gcmVhZCBTR0UgRG9vcmJlbGwgUXVldWUgVGltZXIgdmFsdWVzXG42NzgxOlx0ICpcdEBhZGFwOiB0aGUgYWRhcHRlclxuNjc4MjpcdCAqXHRAbmRicXRpbWVyczogc2l6ZSBvZiB0aGUgcHJvdmlkZWQgU0dFIERvb3JiZWxsIFF1ZXVlIFRpbWVyIHRhYmxlXG42NzgzOlx0ICpcdEBkYnF0aW1lcnM6IFNHRSBEb29yYmVsbCBRdWV1ZSBUaW1lciB0YWJsZVxuNjc4NDpcdCAqXG42Nzg1Olx0ICpcdFJlYWRzIHRoZSBTR0UgRG9vcmJlbGwgUXVldWUgVGltZXIgdmFsdWVzIGludG8gdGhlIHByb3ZpZGVkIHRhYmxlLlxuNjc4NjpcdCAqXHRSZXR1cm5zIDAgb24gc3VjY2VzcyAoRmlybXdhcmUgYW5kIEhhcmR3YXJlIHN1cHBvcnQgdGhpcyBmZWF0dXJlKSxcbjY3ODc6XHQgKlx0YW4gZXJyb3Igb24gZmFpbHVyZS5cbjY3ODg6XHQgKi9cbjY3ODk6XHRpbnQgdDRfcmVhZF9zZ2VfZGJxdGltZXJzKHN0cnVjdCBhZGFwdGVyICphZGFwLCB1bnNpZ25lZCBpbnQgbmRicXRpbWVycyxcbjY3OTA6XHRcdFx0XHQgIHUxNiAqZGJxdGltZXJzKVxuNjc5MTpcdHtcbjY3OTI6XHRcdGludCByZXQsIGRicXRpbWVyaXg7XG42NzkzOlx0XG42Nzk0Olx0XHRyZXQgPSAwO1xuNjc5NTpcdFx0ZGJxdGltZXJpeCA9IDA7XG42Nzk2Olx0XHR3aGlsZSAoZGJxdGltZXJpeCBcdTAwM2MgbmRicXRpbWVycykge1xuNjc5NzpcdFx0XHRpbnQgbnBhcmFtcywgcGFyYW07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTY6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM2MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoOiBBIERlYnVnZ2luZyBEZXRhaWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGUgcmVtb3ZhbCBvZiB0aGlzIGBpZiAoaXNfdDQoYWRhcHRlci0mZ3Q7cGFyYW1zLmNoaXApKWAgYmxvY2suIE15IGZpcnN0IHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyByZWR1bmRhbnQsIHJpZ2h0PyBUaGUgYHN3aXRjaCAoY2hpcF92ZXJzaW9uKWAgc3RhdGVtZW50IGp1c3QgYWJvdmUgaXQgKmFscmVhZHkqIGhhbmRsZXMgc2V0dGluZyBgc2dlX2lkbWFfZGVjb2RlYCBhbmQgYHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzYC4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIHRoZSByZW1vdmVkIGNvZGUsIGlmIGl0IHdlcmUgKm5vdCogcmVtb3ZlZCwgd291bGQgaGF2ZSAqdW5jb25kaXRpb25hbGx5KiBvdmVyd3JpdHRlbiB0aG9zZSB2YXJpYWJsZXMhIEFuZCBpdCB3b3VsZCBoYXZlIGJlZW4gKmluY29ycmVjdCogZm9yIFQ2IGNoaXBzIGJlY2F1c2UgYGlzX3Q0YCB3b3VsZCBiZSBmYWxzZS4gU28sIGFjdHVhbGx5LCByZW1vdmluZyB0aGF0IHdhcyBhIGJ1ZyBmaXghIEl0IHdhcyBwcmV2ZW50aW5nIHRoZSBgc3dpdGNoYCBzdGF0ZW1lbnQmIzM5O3MgYXNzaWdubWVudHMgZnJvbSB0YWtpbmcgZWZmZWN0LCBvciBldmVuIHdvcnNlLCBpdCB3b3VsZCBzZXQgYHNnZV9pZG1hX2RlY29kZWAgYW5kIGBzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlc2AgaW5jb3JyZWN0bHkuCgpIbW0sIGJ1dCAqd2hhdCogZXhhY3RseSBhcmUgYHNnZV9pZG1hX2RlY29kZWAgYW5kIGBzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlc2AgYmVpbmcgdXNlZCBmb3I/IEFoLCBgdDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCB1c2VzIHRoZW0sIGFuZCBpdCBqdXN0ICpwcmludHMgYSB3YXJuaW5nKiBiYXNlZCBvbiB0aGUgY2hpcCB2ZXJzaW9uLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBqdXN0IGNvcnJlY3RzIHRoZSBzdHJpbmcgdGhhdCYjMzk7cyBwcmludGVkIGluIGEgd2FybmluZyBtZXNzYWdlOiBlaXRoZXIgdGhlIHN0YXRlIG5hbWUgaXMgcHJpbnRlZCAoZS5nLiAmIzM0O2lkbWEgc3RhdGUgWCYjMzQ7KSwgb3IgJiMzNDtpZG1hIHN0YXRlIE4gdW5rbm93biYjMzQ7LgoKU28sIHRoaXMgYm9pbHMgZG93biB0byBhICpjb3NtZXRpYyogZml4IGZvciBhIGRlYnVnL3dhcm5pbmcgbWVzc2FnZS4gSXQmIzM5O3Mgbm90IGNoYW5naW5nIGFueSBmdW5jdGlvbmFsIGxvZ2ljLiBObyBmdW5jdGlvbmFsIGNoYW5nZXMsIGp1c3QgYSBjbGVhbmVyLCBtb3JlIGFjY3VyYXRlIHdhcm5pbmcuCgpJdCYjMzk7cyBub3Qgd29ydGggZnV6emluZy4gSSYjMzk7bGwgZG91YmxlIGNoZWNrIHRoYXQgYENIX1dBUk5gIGRvZXNuJiMzOTt0IGRvIGFueXRoaW5nIGVsc2UsIGp1c3QgdG8gYmUgdGhvcm91Z2gsIGJ1dCBJIGRvbiYjMzk7dCBhbnRpY2lwYXRlIGZpbmRpbmcgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE2OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgQ0hfV0FSTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaC02MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDo2MjojZGVmaW5lIENIX1dBUk4oYWRhcCwgZm10LCAuLi4pIGRldl93YXJuKGFkYXAtXHUwMDNlcGRldl9kZXYsIGZtdCwgIyMgX19WQV9BUkdTX18pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0LmgtNjMtZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgYWRhcHRlcl9saXN0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxNjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Mzg2CgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2UgYENIX1dBUk5gIGlzIGVzc2VudGlhbGx5IGp1c3QgYSB3cmFwcGVyIGFyb3VuZCBgZGV2X3dhcm5gLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gSW4gZXNzZW5jZSwgdGhpcyB3aG9sZSBwYXRjaCBib2lscyBkb3duIHRvIGZpeGluZyBhIHdhcm5pbmcgbWVzc2FnZSBzdHJpbmcuIEl0JiMzOTtzIG5vdCBpbXBhY3RpbmcgYW55IGNvcmUgZnVuY3Rpb25hbGl0eSwgZXhlY3V0aW9uIGZsb3csIG9yIHRoZSB1bmRlcmx5aW5nIGxvZ2ljIG9mIHRoZSBzeXN0ZW0uIEkgc2VlIHRoYXQgaXQgY29ycmVjdHMgYSBiaXQgb2YgcmVkdW5kYW50IGFuZCBpbmNvcnJlY3QgY29kZSB0aGF0IHdhcyBvdmVyd3JpdGluZyBhbiBhcnJheSBwb2ludGVyLCBidXQgdGhpcyBwb2ludGVyLCBgc2dlX2lkbWFfZGVjb2RlYCwgaXMgKm9ubHkqIHVzZWQgZm9yIGdlbmVyYXRpbmcgdGhlIHdhcm5pbmcgbWVzc2FnZS4KClRoZXJlZm9yZSwgc2luY2UgdGhpcyBwYXRjaCBoYXMgbm8gaW1wYWN0IG9uIHRoZSBvcGVyYXRpb25hbCBwZXJmb3JtYW5jZSBvciBpbnRlbmRlZCBiZWhhdmlvcnMsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByaXNrIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNoYW5nZSBpcyBuZWdsaWdpYmxlLiBNeSBhbmFseXNpcyBpcyBjb21wbGV0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTY6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIHJlZHVuZGFudCBhbmQgaW5jb3JyZWN0IGNvZGUgdGhhdCBvdmVyd3JpdGVzIHRoZSBgc2dlX2lkbWFfZGVjb2RlYCBhcnJheSBwb2ludGVyIHVzZWQgc29sZWx5IGZvciBwcmludGluZyBhIHdhcm5pbmcgbWVzc2FnZSAoYENIX1dBUk5gKS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBrZXJuZWwgbG9naWMsIG9ubHkgdGhlIHN0cmluZyBvdXRwdXQgaW4gYSBkZWJ1Zy93YXJuaW5nIGxvZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgcmVkdW5kYW50IGFuZCBpbmNvcnJlY3QgY29kZSB0aGF0IG92ZXJ3cml0ZXMgdGhlIGBzZ2VfaWRtYV9kZWNvZGVgIGFycmF5IHBvaW50ZXIgdXNlZCBzb2xlbHkgZm9yIHByaW50aW5nIGEgd2FybmluZyBtZXNzYWdlIChgQ0hfV0FSTmApLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGtlcm5lbCBsb2dpYywgb25seSB0aGUgc3RyaW5nIG91dHB1dCBpbiBhIGRlYnVnL3dhcm5pbmcgbG9nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE2OjAyOjI1LjQ2OTg4MTg1NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTU1Nzg3NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIHJlZHVuZGFudCBhbmQgaW5jb3JyZWN0IGNvZGUgdGhhdCBvdmVyd3JpdGVzIHRoZSBgc2dlX2lkbWFfZGVjb2RlYCBhcnJheSBwb2ludGVyIHVzZWQgc29sZWx5IGZvciBwcmludGluZyBhIHdhcm5pbmcgbWVzc2FnZSAoYENIX1dBUk5gKS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBrZXJuZWwgbG9naWMsIG9ubHkgdGhlIHN0cmluZyBvdXRwdXQgaW4gYSBkZWJ1Zy93YXJuaW5nIGxvZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE2OjAyOjI1LjQ2OTg5Mjc5NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM2NzI2MzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGFjNzAzYjFkNDY5NWU4ZTE2ZGU1YmY5NmMwYWRlNmQyMTJiZmU0MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyOSAxNjowMjoyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmNcXG5pbmRleCAxNzE3NTBmYWQ0NGYyZS4uNjg3MTEyNzQyN2ZhZDcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jXFxuQEAgLTY3MzcsMTQgKzY3MzcsNiBAQCB2b2lkIHQ0X3NnZV9kZWNvZGVfaWRtYV9zdGF0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgaW50IHN0YXRlKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChpc190NChhZGFwdGVyLVxcdTAwM2VwYXJhbXMuY2hpcCkpIHtcXG4tXFx0XFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDRfZGVjb2RlO1xcbi1cXHRcXHRzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlcyA9IEFSUkFZX1NJWkUodDRfZGVjb2RlKTtcXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDVfZGVjb2RlO1xcbi1cXHRcXHRzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlcyA9IEFSUkFZX1NJWkUodDVfZGVjb2RlKTtcXG4tXFx0fVxcbi1cXG4gXFx0aWYgKHN0YXRlIFxcdTAwM2Mgc2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMpXFxuIFxcdFxcdENIX1dBUk4oYWRhcHRlciwgXFxcImlkbWEgc3RhdGUgJXNcXFxcblxcXCIsIHNnZV9pZG1hX2RlY29kZVtzdGF0ZV0pO1xcbiBcXHRlbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE2OjAyOjI2LjEwNzQxNzg4MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU1MTgyMDE3MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgcmVkdW5kYW50IGFuZCBpbmNvcnJlY3QgY29kZSB0aGF0IG92ZXJ3cml0ZXMgdGhlIGBzZ2VfaWRtYV9kZWNvZGVgIGFycmF5IHBvaW50ZXIgdXNlZCBzb2xlbHkgZm9yIHByaW50aW5nIGEgd2FybmluZyBtZXNzYWdlIChgQ0hfV0FSTmApLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGtlcm5lbCBsb2dpYywgb25seSB0aGUgc3RyaW5nIG91dHB1dCBpbiBhIGRlYnVnL3dhcm5pbmcgbG9nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkYWM3MDNiMWQ0Njk1ZThlMTZkZTViZjk2YzBhZGU2ZDIxMmJmZTQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTY6MDI6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmNcbmluZGV4IDE3MTc1MGZhZDQ0ZjJlLi42ODcxMTI3NDI3ZmFkNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jXG5AQCAtNjczNywxNCArNjczNyw2IEBAIHZvaWQgdDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBpbnQgc3RhdGUpXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdGlmIChpc190NChhZGFwdGVyLVx1MDAzZXBhcmFtcy5jaGlwKSkge1xuLVx0XHRzZ2VfaWRtYV9kZWNvZGUgPSAoY29uc3QgY2hhciAqKil0NF9kZWNvZGU7XG4tXHRcdHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzID0gQVJSQVlfU0laRSh0NF9kZWNvZGUpO1xuLVx0fSBlbHNlIHtcbi1cdFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDVfZGVjb2RlO1xuLVx0XHRzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlcyA9IEFSUkFZX1NJWkUodDVfZGVjb2RlKTtcbi1cdH1cbi1cbiBcdGlmIChzdGF0ZSBcdTAwM2Mgc2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMpXG4gXHRcdENIX1dBUk4oYWRhcHRlciwgXCJpZG1hIHN0YXRlICVzXFxuXCIsIHNnZV9pZG1hX2RlY29kZVtzdGF0ZV0pO1xuIFx0ZWxzZVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTY6MDI6MjYuMTA3NDIxMTQyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ1NTY5MzQ3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byBgdDRfaHcuY2AqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jYC4gU3BlY2lmaWNhbGx5LCBpdCdzIG1lc3Npbmcgd2l0aCB0aGUgYHQ0X3NnZV9kZWNvZGVfaWRtYV9zdGF0ZWAgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyBJJ20gc2VlaW5nIGlzIGEgcmVtb3ZhbCBvZiB0aGVzZSBsaW5lczpcblxuYGBgY1xuLVx0aWYgKGlzX3Q0KGFkYXB0ZXItXHUwMDNlcGFyYW1zLmNoaXApKSB7XG4tXHRcdHNnZV9pZG1hX2RlY29kZSA9IChjb25zdCBjaGFyICoqKXQ0X2RlY29kZTtcbi1cdFx0c2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ0X2RlY29kZSk7XG4tXHR9IGVsc2Uge1xuLVx0XHRzZ2VfaWRtYV9kZWNvZGUgPSAoY29uc3QgY2hhciAqKil0NV9kZWNvZGU7XG4tXHRcdHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzID0gQVJSQVlfU0laRSh0NV9kZWNvZGUpO1xuLVx0fVxuYGBgXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldhaXQgYSBtaW51dGUsIGlmIHRoYXQncyAqcmVtb3ZlZCosIGhvdyBhcmUgYHNnZV9pZG1hX2RlY29kZWAgYW5kIGBzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlc2AgaW5pdGlhbGl6ZWQgbm93P1wiIFRoZSBvcmlnaW5hbCBjb2RlIGFwcGVhcnMgdG8gYmUgc2V0dGluZyB0aGVzZSB2YXJpYWJsZXMgYmFzZWQgb24gdGhlIGNoaXAgdHlwZSAoVDQgb3IgVDUpLCBzbyB0aGUgcmVtb3ZhbCAqbXVzdCogY2hhbmdlIHRoZSBiZWhhdmlvci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aG9zZSB2YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIHRvIGluIHRoZSBtb2RpZmllZCB2ZXJzaW9uLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBjb2RlIG9mIGB0NF9zZ2VfZGVjb2RlX2lkbWFfc3RhdGVgIHRvIGRldGVybWluZSBob3cgdGhpcyBjaGFuZ2UgYWZmZWN0cyB0aGUgZGVjb2RlIHN0YXRlIGxvZ2ljLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3MiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE2OjAyOjMxLjU2MzExOTQ2OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDA2MzUwMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM9NjU3Mz1pbnQgdDRfbWRpb193cihzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdW5zaWduZWQgaW50IG1ib3gsIHVuc2lnbmVkIGludCBwaHlfYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy02NTkzLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2NTk0OiAqXFx0dDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlIC0gZGVjb2RlIHRoZSBpZG1hIHN0YXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jLTY1OTUtICpcXHRAYWRhcHRlcjogdGhlIGFkYXB0ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy02NTk3LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2NTk4OnZvaWQgdDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBpbnQgc3RhdGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jLTY1OTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jPTEwMDY0PXZvaWQgdDRfaWRtYV9tb25pdG9yKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jLTEwMTQyLVxcdFxcdFxcdCBkZWJ1ZzAsIGRlYnVnMTEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzoxMDE0MzpcXHRcXHR0NF9zZ2VfZGVjb2RlX2lkbWFfc3RhdGUoYWRhcHRlciwgaWRtYS1cXHUwMDNlaWRtYV9zdGF0ZVtpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jLTEwMTQ0LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTY6MDI6MzEuNzAzNzY1MjE1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk4NTgzNTIwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGB0NF9zZ2VfZGVjb2RlX2lkbWFfc3RhdGVgIGZ1bmN0aW9uIHdvcmtzLiBSaWdodCwgaXQncyBsb2NhdGVkIGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jYCBmaWxlLiBJJ20gYXNzdW1pbmcgdGhpcyBmdW5jdGlvbidzIHB1cnBvc2UgaXMgdG8gZGVjb2RlIHNvbWUga2luZCBvZiBJRE1BIHN0YXRlIHJlbGF0ZWQgdG8gdGhlIENoZWxzaW8gQ1hHQjQgRXRoZXJuZXQgYWRhcHRlci4gR2l2ZW4gdGhlIG5hbWUsIFwiU0dFXCIgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIFNoYXJlZCBHZXQgRW5naW5lLCBhIGNyaXRpY2FsIHBhcnQgb2Ygb2ZmbG9hZCBvcGVyYXRpb25zIGZvciB0aGUgYWRhcHRlciwgYW5kIFwiSURNQVwiIGltcGxpZXMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIERNQSAoRGlyZWN0IE1lbW9yeSBBY2Nlc3MpIG9wZXJhdGlvbnMuIFxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uIGxpa2VseSB0YWtlcyBzb21lIHJhdyBoYXJkd2FyZSBpbmZvcm1hdGlvbiwgcGVyaGFwcyByZWdpc3RlciB2YWx1ZXMgb3IgYSBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZSwgYW5kIGludGVycHJldHMgaXQgaW50byBhIGh1bWFuLXJlYWRhYmxlIGZvcm0uIEknbGwgYmUgbG9va2luZyBmb3IgaG93IHRoZSBzdGF0ZSBpcyByZXByZXNlbnRlZCwgd2hhdCB0aGUgZGlmZmVyZW50IGZpZWxkcyBtZWFuLCBhbmQgbGlrZWx5IHdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMgd2l0aCB0aGlzIGluZm9ybWF0aW9uLiBJcyBpdCBmb3IgZGVidWdnaW5nPyBFcnJvciBoYW5kbGluZz8gUGVyaGFwcyBpdCdzIHVzZWQgdG8gb3B0aW1pemUgcGVyZm9ybWFuY2Ugb3IgaGFuZGxlIGRpZmZlcmVudCBuZXR3b3JrIGNvbmRpdGlvbnM/IEknbGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIG92ZXJhbGwgZGF0YSBmbG93IGFuZCBob3cgdGhpcyBzdGF0ZSBkZWNvZGluZyBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSBvZiB0aGUgQ1hHQjQgbmV0d29yayBzdGFjay4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1MywiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE2OjAyOjM3LjY4OTYwMzU1OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjU5OCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjY1OTg6XFx0dm9pZCB0NF9zZ2VfZGVjb2RlX2lkbWFfc3RhdGUoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIGludCBzdGF0ZSlcXG42NTk5OlxcdHtcXG42NjAwOlxcdFxcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdDRfZGVjb2RlW10gPSB7XFxuNjYwMTpcXHRcXHRcXHRcXFwiSURNQV9JRExFXFxcIixcXG42NjAyOlxcdFxcdFxcdFxcXCJJRE1BX1BVU0hfTU9SRV9DUExfRklGT1xcXCIsXFxuNjYwMzpcXHRcXHRcXHRcXFwiSURNQV9QVVNIX0NQTF9NU0dfSEVBREVSX1RPX0ZJRk9cXFwiLFxcbjY2MDQ6XFx0XFx0XFx0XFxcIk5vdCB1c2VkXFxcIixcXG42NjA1OlxcdFxcdFxcdFxcXCJJRE1BX1BIWVNBRERSX1NFTkRfUENJRUhEUlxcXCIsXFxuNjYwNjpcXHRcXHRcXHRcXFwiSURNQV9QSFlTQUREUl9TRU5EX1BBWUxPQURfRklSU1RcXFwiLFxcbjY2MDc6XFx0XFx0XFx0XFxcIklETUFfUEhZU0FERFJfU0VORF9QQVlMT0FEXFxcIixcXG42NjA4OlxcdFxcdFxcdFxcXCJJRE1BX1NFTkRfRklGT19UT19JTVNHXFxcIixcXG42NjA5OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1JFUV9EQVRBX0ZMX1BSRVBcXFwiLFxcbjY2MTA6XFx0XFx0XFx0XFxcIklETUFfRkxfUkVRX0RBVEFfRkxcXFwiLFxcbjY2MTE6XFx0XFx0XFx0XFxcIklETUFfRkxfRFJPUFxcXCIsXFxuNjYxMjpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1JFUV9IRUFERVJfRkxcXFwiLFxcbjY2MTM6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX1BDSUVIRFJcXFwiLFxcbjY2MTQ6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9QVVNIX0NQTF9GSUZPXFxcIixcXG42NjE1OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfU0VORF9DUExcXFwiLFxcbjY2MTY6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX0lQX0hEUl9GSVJTVFxcXCIsXFxuNjYxNzpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1NFTkRfSVBfSERSXFxcIixcXG42NjE4OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfUkVRX05FWFRfSEVBREVSX0ZMXFxcIixcXG42NjE5OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfU0VORF9ORVhUX1BDSUVIRFJcXFwiLFxcbjY2MjA6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX0lQX0hEUl9QQURESU5HXFxcIixcXG42NjIxOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0RfU0VORF9QQ0lFSERSXFxcIixcXG42NjIyOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0RfU0VORF9DUExfQU5EX0lQX0hEUlxcXCIsXFxuNjYyMzpcXHRcXHRcXHRcXFwiSURNQV9GTF9EX1JFUV9ORVhUX0RBVEFfRkxcXFwiLFxcbjY2MjQ6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9QQ0lFSERSXFxcIixcXG42NjI1OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1BVU0hfQ1BMX0ZJRk9cXFwiLFxcbjY2MjY6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9DUExcXFwiLFxcbjY2Mjc6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9QQVlMT0FEX0ZJUlNUXFxcIixcXG42NjI4OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1NFTkRfUEFZTE9BRFxcXCIsXFxuNjYyOTpcXHRcXHRcXHRcXFwiSURNQV9GTF9SRVFfTkVYVF9EQVRBX0ZMXFxcIixcXG42NjMwOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1NFTkRfTkVYVF9QQ0lFSERSXFxcIixcXG42NjMxOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1NFTkRfUEFERElOR1xcXCIsXFxuNjYzMjpcXHRcXHRcXHRcXFwiSURNQV9GTF9TRU5EX0NPTVBMRVRJT05fVE9fSU1TR1xcXCIsXFxuNjYzMzpcXHRcXHRcXHRcXFwiSURNQV9GTF9TRU5EX0ZJRk9fVE9fSU1TR1xcXCIsXFxuNjYzNDpcXHRcXHRcXHRcXFwiSURNQV9GTF9SRVFfREFUQUZMX0RPTkVcXFwiLFxcbjY2MzU6XFx0XFx0XFx0XFxcIklETUFfRkxfUkVRX0hFQURFUkZMX0RPTkVcXFwiLFxcbjY2MzY6XFx0XFx0fTtcXG42NjM3OlxcdFxcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdDVfZGVjb2RlW10gPSB7XFxuNjYzODpcXHRcXHRcXHRcXFwiSURNQV9JRExFXFxcIixcXG42NjM5OlxcdFxcdFxcdFxcXCJJRE1BX0FMTU9TVF9JRExFXFxcIixcXG42NjQwOlxcdFxcdFxcdFxcXCJJRE1BX1BVU0hfTU9SRV9DUExfRklGT1xcXCIsXFxuNjY0MTpcXHRcXHRcXHRcXFwiSURNQV9QVVNIX0NQTF9NU0dfSEVBREVSX1RPX0ZJRk9cXFwiLFxcbjY2NDI6XFx0XFx0XFx0XFxcIklETUFfU0dFRkxSRkxVU0hfU0VORF9QQ0lFSERSXFxcIixcXG42NjQzOlxcdFxcdFxcdFxcXCJJRE1BX1BIWVNBRERSX1NFTkRfUENJRUhEUlxcXCIsXFxuNjY0NDpcXHRcXHRcXHRcXFwiSURNQV9QSFlTQUREUl9TRU5EX1BBWUxPQURfRklSU1RcXFwiLFxcbjY2NDU6XFx0XFx0XFx0XFxcIklETUFfUEhZU0FERFJfU0VORF9QQVlMT0FEXFxcIixcXG42NjQ2OlxcdFxcdFxcdFxcXCJJRE1BX1NFTkRfRklGT19UT19JTVNHXFxcIixcXG42NjQ3OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1JFUV9EQVRBX0ZMXFxcIixcXG42NjQ4OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0RST1BcXFwiLFxcbjY2NDk6XFx0XFx0XFx0XFxcIklETUFfRkxfRFJPUF9TRU5EX0lOQ1xcXCIsXFxuNjY1MDpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1JFUV9IRUFERVJfRkxcXFwiLFxcbjY2NTE6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX1BDSUVIRFJcXFwiLFxcbjY2NTI6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9QVVNIX0NQTF9GSUZPXFxcIixcXG42NjUzOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfU0VORF9DUExcXFwiLFxcbjY2NTQ6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX0lQX0hEUl9GSVJTVFxcXCIsXFxuNjY1NTpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1NFTkRfSVBfSERSXFxcIixcXG42NjU2OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfUkVRX05FWFRfSEVBREVSX0ZMXFxcIixcXG42NjU3OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfU0VORF9ORVhUX1BDSUVIRFJcXFwiLFxcbjY2NTg6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX0lQX0hEUl9QQURESU5HXFxcIixcXG42NjU5OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0RfU0VORF9QQ0lFSERSXFxcIixcXG42NjYwOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0RfU0VORF9DUExfQU5EX0lQX0hEUlxcXCIsXFxuNjY2MTpcXHRcXHRcXHRcXFwiSURNQV9GTF9EX1JFUV9ORVhUX0RBVEFfRkxcXFwiLFxcbjY2NjI6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9QQ0lFSERSXFxcIixcXG42NjYzOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1BVU0hfQ1BMX0ZJRk9cXFwiLFxcbjY2NjQ6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9DUExcXFwiLFxcbjY2NjU6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9QQVlMT0FEX0ZJUlNUXFxcIixcXG42NjY2OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1NFTkRfUEFZTE9BRFxcXCIsXFxuNjY2NzpcXHRcXHRcXHRcXFwiSURNQV9GTF9SRVFfTkVYVF9EQVRBX0ZMXFxcIixcXG42NjY4OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1NFTkRfTkVYVF9QQ0lFSERSXFxcIixcXG42NjY5OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1NFTkRfUEFERElOR1xcXCIsXFxuNjY3MDpcXHRcXHRcXHRcXFwiSURNQV9GTF9TRU5EX0NPTVBMRVRJT05fVE9fSU1TR1xcXCIsXFxuNjY3MTpcXHRcXHR9O1xcbjY2NzI6XFx0XFx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB0Nl9kZWNvZGVbXSA9IHtcXG42NjczOlxcdFxcdFxcdFxcXCJJRE1BX0lETEVcXFwiLFxcbjY2NzQ6XFx0XFx0XFx0XFxcIklETUFfUFVTSF9NT1JFX0NQTF9GSUZPXFxcIixcXG42Njc1OlxcdFxcdFxcdFxcXCJJRE1BX1BVU0hfQ1BMX01TR19IRUFERVJfVE9fRklGT1xcXCIsXFxuNjY3NjpcXHRcXHRcXHRcXFwiSURNQV9TR0VGTFJGTFVTSF9TRU5EX1BDSUVIRFJcXFwiLFxcbjY2Nzc6XFx0XFx0XFx0XFxcIklETUFfUEhZU0FERFJfU0VORF9QQ0lFSERSXFxcIixcXG42Njc4OlxcdFxcdFxcdFxcXCJJRE1BX1BIWVNBRERSX1NFTkRfUEFZTE9BRF9GSVJTVFxcXCIsXFxuNjY3OTpcXHRcXHRcXHRcXFwiSURNQV9QSFlTQUREUl9TRU5EX1BBWUxPQURcXFwiLFxcbjY2ODA6XFx0XFx0XFx0XFxcIklETUFfRkxfUkVRX0RBVEFfRkxcXFwiLFxcbjY2ODE6XFx0XFx0XFx0XFxcIklETUFfRkxfRFJPUFxcXCIsXFxuNjY4MjpcXHRcXHRcXHRcXFwiSURNQV9GTF9EUk9QX1NFTkRfSU5DXFxcIixcXG42NjgzOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfUkVRX0hFQURFUl9GTFxcXCIsXFxuNjY4NDpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1NFTkRfUENJRUhEUlxcXCIsXFxuNjY4NTpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1BVU0hfQ1BMX0ZJRk9cXFwiLFxcbjY2ODY6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX0NQTFxcXCIsXFxuNjY4NzpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1NFTkRfSVBfSERSX0ZJUlNUXFxcIixcXG42Njg4OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0hfU0VORF9JUF9IRFJcXFwiLFxcbjY2ODk6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9SRVFfTkVYVF9IRUFERVJfRkxcXFwiLFxcbjY2OTA6XFx0XFx0XFx0XFxcIklETUFfRkxfSF9TRU5EX05FWFRfUENJRUhEUlxcXCIsXFxuNjY5MTpcXHRcXHRcXHRcXFwiSURNQV9GTF9IX1NFTkRfSVBfSERSX1BBRERJTkdcXFwiLFxcbjY2OTI6XFx0XFx0XFx0XFxcIklETUFfRkxfRF9TRU5EX1BDSUVIRFJcXFwiLFxcbjY2OTM6XFx0XFx0XFx0XFxcIklETUFfRkxfRF9TRU5EX0NQTF9BTkRfSVBfSERSXFxcIixcXG42Njk0OlxcdFxcdFxcdFxcXCJJRE1BX0ZMX0RfUkVRX05FWFRfREFUQV9GTFxcXCIsXFxuNjY5NTpcXHRcXHRcXHRcXFwiSURNQV9GTF9TRU5EX1BDSUVIRFJcXFwiLFxcbjY2OTY6XFx0XFx0XFx0XFxcIklETUFfRkxfUFVTSF9DUExfRklGT1xcXCIsXFxuNjY5NzpcXHRcXHRcXHRcXFwiSURNQV9GTF9TRU5EX0NQTFxcXCIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE2OjAyOjM3LjY5MDA2NTU3OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDY1Njk1MDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhZG9wdGluZyB0aGUgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlIGFzIHJlcXVlc3RlZCwgYXNzdW1pbmcgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0LlxuXG4qKkFuYWx5emluZyBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIEkndmUgZ290IHRoZSBnZW5lcmFsIGNvbnRleHQgbG9ja2VkIGluLiBOb3csIEkgbmVlZCB0byB6b29tIGluIGFuZCBleGFtaW5lIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBkZXRhaWwuIEl0J3MgdGltZSB0byBkaXZlIGludG8gdGhlIGNvcmUgbG9naWMgYW5kIGdyYXNwIGhvdyB0aGlzIGZ1bmN0aW9uIGFjaGlldmVzIGl0cyBwdXJwb3NlLiBUaGUgYmlnIHBpY3R1cmUgaXMgc2V0LCBzbyBsZXQncyBwYXJzZSB0aHJvdWdoIHRoZSBsaW5lcyBhbmQgdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBMZXQncyBzZWUgaG93IHRoZSBpbmRpdmlkdWFsIGNvbXBvbmVudHMgZml0IHRvZ2V0aGVyIHRvIHByb2R1Y2UgdGhlIGRlc2lyZWQgb3V0cHV0LCBvciBpbiB0aGlzIGNhc2UsIGNvbnRpbnVlIG91ciB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDQ0LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxNjowMzowNi43NTU3NjYwODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODE1NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2Njk4LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNjY5ODpcXHRcXHRcXHRcXFwiSURNQV9GTF9TRU5EX1BBWUxPQURfRklSU1RcXFwiLFxcbjY2OTk6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9QQVlMT0FEXFxcIixcXG42NzAwOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1JFUV9ORVhUX0RBVEFfRkxcXFwiLFxcbjY3MDE6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9ORVhUX1BDSUVIRFJcXFwiLFxcbjY3MDI6XFx0XFx0XFx0XFxcIklETUFfRkxfU0VORF9QQURESU5HXFxcIixcXG42NzAzOlxcdFxcdFxcdFxcXCJJRE1BX0ZMX1NFTkRfQ09NUExFVElPTl9UT19JTVNHXFxcIixcXG42NzA0OlxcdFxcdH07XFxuNjcwNTpcXHRcXHRzdGF0aWMgY29uc3QgdTMyIHNnZV9yZWdzW10gPSB7XFxuNjcwNjpcXHRcXHRcXHRTR0VfREVCVUdfREFUQV9MT1dfSU5ERVhfMl9BLFxcbjY3MDc6XFx0XFx0XFx0U0dFX0RFQlVHX0RBVEFfTE9XX0lOREVYXzNfQSxcXG42NzA4OlxcdFxcdFxcdFNHRV9ERUJVR19EQVRBX0hJR0hfSU5ERVhfMTBfQSxcXG42NzA5OlxcdFxcdH07XFxuNjcxMDpcXHRcXHRjb25zdCBjaGFyICoqc2dlX2lkbWFfZGVjb2RlO1xcbjY3MTE6XFx0XFx0aW50IHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzO1xcbjY3MTI6XFx0XFx0aW50IGk7XFxuNjcxMzpcXHRcXHR1bnNpZ25lZCBpbnQgY2hpcF92ZXJzaW9uID0gQ0hFTFNJT19DSElQX1ZFUlNJT04oYWRhcHRlci1cXHUwMDNlcGFyYW1zLmNoaXApO1xcbjY3MTQ6XFx0XFxuNjcxNTpcXHRcXHQvKiBTZWxlY3QgdGhlIHJpZ2h0IHNldCBvZiBkZWNvZGUgc3RyaW5ncyB0byBkdW1wIGRlcGVuZGluZyBvbiB0aGVcXG42NzE2OlxcdFxcdCAqIGFkYXB0ZXIgY2hpcCB0eXBlLlxcbjY3MTc6XFx0XFx0ICovXFxuNjcxODpcXHRcXHRzd2l0Y2ggKGNoaXBfdmVyc2lvbikge1xcbjY3MTk6XFx0XFx0Y2FzZSBDSEVMU0lPX1Q0OlxcbjY3MjA6XFx0XFx0XFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDRfZGVjb2RlO1xcbjY3MjE6XFx0XFx0XFx0c2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ0X2RlY29kZSk7XFxuNjcyMjpcXHRcXHRcXHRicmVhaztcXG42NzIzOlxcdFxcbjY3MjQ6XFx0XFx0Y2FzZSBDSEVMU0lPX1Q1OlxcbjY3MjU6XFx0XFx0XFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDVfZGVjb2RlO1xcbjY3MjY6XFx0XFx0XFx0c2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ1X2RlY29kZSk7XFxuNjcyNzpcXHRcXHRcXHRicmVhaztcXG42NzI4OlxcdFxcbjY3Mjk6XFx0XFx0Y2FzZSBDSEVMU0lPX1Q2OlxcbjY3MzA6XFx0XFx0XFx0c2dlX2lkbWFfZGVjb2RlID0gKGNvbnN0IGNoYXIgKiopdDZfZGVjb2RlO1xcbjY3MzE6XFx0XFx0XFx0c2dlX2lkbWFfZGVjb2RlX25zdGF0ZXMgPSBBUlJBWV9TSVpFKHQ2X2RlY29kZSk7XFxuNjczMjpcXHRcXHRcXHRicmVhaztcXG42NzMzOlxcdFxcbjY3MzQ6XFx0XFx0ZGVmYXVsdDpcXG42NzM1OlxcdFxcdFxcdGRldl9lcnIoYWRhcHRlci1cXHUwMDNlcGRldl9kZXYsXFxuNjczNjpcXHRcXHRcXHRcXHRcXFwiVW5zdXBwb3J0ZWQgY2hpcCB2ZXJzaW9uICVkXFxcXG5cXFwiLCBjaGlwX3ZlcnNpb24pO1xcbjY3Mzc6XFx0XFx0XFx0cmV0dXJuO1xcbjY3Mzg6XFx0XFx0fVxcbjY3Mzk6XFx0XFxuNjc0MDpcXHRcXHRpZiAoc3RhdGUgXFx1MDAzYyBzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlcylcXG42NzQxOlxcdFxcdFxcdENIX1dBUk4oYWRhcHRlciwgXFxcImlkbWEgc3RhdGUgJXNcXFxcblxcXCIsIHNnZV9pZG1hX2RlY29kZVtzdGF0ZV0pO1xcbjY3NDI6XFx0XFx0ZWxzZVxcbjY3NDM6XFx0XFx0XFx0Q0hfV0FSTihhZGFwdGVyLCBcXFwiaWRtYSBzdGF0ZSAlZCB1bmtub3duXFxcXG5cXFwiLCBzdGF0ZSk7XFxuNjc0NDpcXHRcXG42NzQ1OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHNnZV9yZWdzKTsgaSsrKVxcbjY3NDY6XFx0XFx0XFx0Q0hfV0FSTihhZGFwdGVyLCBcXFwiU0dFIHJlZ2lzdGVyICUjeCB2YWx1ZSAlI3hcXFxcblxcXCIsXFxuNjc0NzpcXHRcXHRcXHRcXHRzZ2VfcmVnc1tpXSwgdDRfcmVhZF9yZWcoYWRhcHRlciwgc2dlX3JlZ3NbaV0pKTtcXG42NzQ4OlxcdH1cXG42NzQ5OlxcdFxcbjY3NTA6XFx0LyoqXFxuNjc1MTpcXHQgKiAgICAgIHQ0X3NnZV9jdHh0X2ZsdXNoIC0gZmx1c2ggdGhlIFNHRSBjb250ZXh0IGNhY2hlXFxuNjc1MjpcXHQgKiAgICAgIEBhZGFwOiB0aGUgYWRhcHRlclxcbjY3NTM6XFx0ICogICAgICBAbWJveDogbWFpbGJveCB0byB1c2UgZm9yIHRoZSBGVyBjb21tYW5kXFxuNjc1NDpcXHQgKiAgICAgIEBjdHh0X3R5cGU6IEVncmVzcyBvciBJbmdyZXNzXFxuNjc1NTpcXHQgKlxcbjY3NTY6XFx0ICogICAgICBJc3N1ZXMgYSBGVyBjb21tYW5kIHRocm91Z2ggdGhlIGdpdmVuIG1haWxib3ggdG8gZmx1c2ggdGhlXFxuNjc1NzpcXHQgKiAgICAgIFNHRSBjb250ZXh0IGNhY2hlLlxcbjY3NTg6XFx0ICovXFxuNjc1OTpcXHRpbnQgdDRfc2dlX2N0eHRfZmx1c2goc3RydWN0IGFkYXB0ZXIgKmFkYXAsIHVuc2lnbmVkIGludCBtYm94LCBpbnQgY3R4dF90eXBlKVxcbjY3NjA6XFx0e1xcbjY3NjE6XFx0XFx0aW50IHJldDtcXG42NzYyOlxcdFxcdHUzMiBsZHN0X2FkZHJzcGFjZTtcXG42NzYzOlxcdFxcdHN0cnVjdCBmd19sZHN0X2NtZCBjO1xcbjY3NjQ6XFx0XFxuNjc2NTpcXHRcXHRtZW1zZXQoXFx1MDAyNmMsIDAsIHNpemVvZihjKSk7XFxuNjc2NjpcXHRcXHRsZHN0X2FkZHJzcGFjZSA9IEZXX0xEU1RfQ01EX0FERFJTUEFDRV9WKGN0eHRfdHlwZSA9PSBDVFhUX0VHUkVTUyA/XFxuNjc2NzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgRldfTERTVF9BRERSU1BDX1NHRV9FR1JDIDpcXG42NzY4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBGV19MRFNUX0FERFJTUENfU0dFX0lOR0MpO1xcbjY3Njk6XFx0XFx0Yy5vcF90b19hZGRyc3BhY2UgPSBjcHVfdG9fYmUzMihGV19DTURfT1BfVihGV19MRFNUX0NNRCkgfFxcbjY3NzA6XFx0XFx0XFx0XFx0XFx0XFx0RldfQ01EX1JFUVVFU1RfRiB8IEZXX0NNRF9SRUFEX0YgfFxcbjY3NzE6XFx0XFx0XFx0XFx0XFx0XFx0bGRzdF9hZGRyc3BhY2UpO1xcbjY3NzI6XFx0XFx0Yy5jeWNsZXNfdG9fbGVuMTYgPSBjcHVfdG9fYmUzMihGV19MRU4xNihjKSk7XFxuNjc3MzpcXHRcXHRjLnUuaWRjdHh0Lm1zZ19jdHh0Zmx1c2ggPSBjcHVfdG9fYmUzMihGV19MRFNUX0NNRF9DVFhURkxVU0hfRik7XFxuNjc3NDpcXHRcXG42Nzc1OlxcdFxcdHJldCA9IHQ0X3dyX21ib3goYWRhcCwgbWJveCwgXFx1MDAyNmMsIHNpemVvZihjKSwgXFx1MDAyNmMpO1xcbjY3NzY6XFx0XFx0cmV0dXJuIHJldDtcXG42Nzc3OlxcdH1cXG42Nzc4OlxcdFxcbjY3Nzk6XFx0LyoqXFxuNjc4MDpcXHQgKlxcdHQ0X3JlYWRfc2dlX2RicXRpbWVycyAtIHJlYWQgU0dFIERvb3JiZWxsIFF1ZXVlIFRpbWVyIHZhbHVlc1xcbjY3ODE6XFx0ICpcXHRAYWRhcDogdGhlIGFkYXB0ZXJcXG42NzgyOlxcdCAqXFx0QG5kYnF0aW1lcnM6IHNpemUgb2YgdGhlIHByb3ZpZGVkIFNHRSBEb29yYmVsbCBRdWV1ZSBUaW1lciB0YWJsZVxcbjY3ODM6XFx0ICpcXHRAZGJxdGltZXJzOiBTR0UgRG9vcmJlbGwgUXVldWUgVGltZXIgdGFibGVcXG42Nzg0OlxcdCAqXFxuNjc4NTpcXHQgKlxcdFJlYWRzIHRoZSBTR0UgRG9vcmJlbGwgUXVldWUgVGltZXIgdmFsdWVzIGludG8gdGhlIHByb3ZpZGVkIHRhYmxlLlxcbjY3ODY6XFx0ICpcXHRSZXR1cm5zIDAgb24gc3VjY2VzcyAoRmlybXdhcmUgYW5kIEhhcmR3YXJlIHN1cHBvcnQgdGhpcyBmZWF0dXJlKSxcXG42Nzg3OlxcdCAqXFx0YW4gZXJyb3Igb24gZmFpbHVyZS5cXG42Nzg4OlxcdCAqL1xcbjY3ODk6XFx0aW50IHQ0X3JlYWRfc2dlX2RicXRpbWVycyhzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdW5zaWduZWQgaW50IG5kYnF0aW1lcnMsXFxuNjc5MDpcXHRcXHRcXHRcXHQgIHUxNiAqZGJxdGltZXJzKVxcbjY3OTE6XFx0e1xcbjY3OTI6XFx0XFx0aW50IHJldCwgZGJxdGltZXJpeDtcXG42NzkzOlxcdFxcbjY3OTQ6XFx0XFx0cmV0ID0gMDtcXG42Nzk1OlxcdFxcdGRicXRpbWVyaXggPSAwO1xcbjY3OTY6XFx0XFx0d2hpbGUgKGRicXRpbWVyaXggXFx1MDAzYyBuZGJxdGltZXJzKSB7XFxuNjc5NzpcXHRcXHRcXHRpbnQgbnBhcmFtcywgcGFyYW07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE2OjAzOjA2Ljc1ODU5MTYxNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNDM5NTYxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaDogQSBEZWJ1Z2dpbmcgRGV0YWlsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSByZW1vdmFsIG9mIHRoaXMgYGlmIChpc190NChhZGFwdGVyLVx1MDAzZXBhcmFtcy5jaGlwKSlgIGJsb2NrLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRoYXQgaXQncyByZWR1bmRhbnQsIHJpZ2h0PyBUaGUgYHN3aXRjaCAoY2hpcF92ZXJzaW9uKWAgc3RhdGVtZW50IGp1c3QgYWJvdmUgaXQgKmFscmVhZHkqIGhhbmRsZXMgc2V0dGluZyBgc2dlX2lkbWFfZGVjb2RlYCBhbmQgYHNnZV9pZG1hX2RlY29kZV9uc3RhdGVzYC5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gdGhlIHJlbW92ZWQgY29kZSwgaWYgaXQgd2VyZSAqbm90KiByZW1vdmVkLCB3b3VsZCBoYXZlICp1bmNvbmRpdGlvbmFsbHkqIG92ZXJ3cml0dGVuIHRob3NlIHZhcmlhYmxlcyEgQW5kIGl0IHdvdWxkIGhhdmUgYmVlbiAqaW5jb3JyZWN0KiBmb3IgVDYgY2hpcHMgYmVjYXVzZSBgaXNfdDRgIHdvdWxkIGJlIGZhbHNlLiBTbywgYWN0dWFsbHksIHJlbW92aW5nIHRoYXQgd2FzIGEgYnVnIGZpeCEgSXQgd2FzIHByZXZlbnRpbmcgdGhlIGBzd2l0Y2hgIHN0YXRlbWVudCdzIGFzc2lnbm1lbnRzIGZyb20gdGFraW5nIGVmZmVjdCwgb3IgZXZlbiB3b3JzZSwgaXQgd291bGQgc2V0IGBzZ2VfaWRtYV9kZWNvZGVgIGFuZCBgc2dlX2lkbWFfZGVjb2RlX25zdGF0ZXNgIGluY29ycmVjdGx5LlxuXG5IbW0sIGJ1dCAqd2hhdCogZXhhY3RseSBhcmUgYHNnZV9pZG1hX2RlY29kZWAgYW5kIGBzZ2VfaWRtYV9kZWNvZGVfbnN0YXRlc2AgYmVpbmcgdXNlZCBmb3I/IEFoLCBgdDRfc2dlX2RlY29kZV9pZG1hX3N0YXRlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCB1c2VzIHRoZW0sIGFuZCBpdCBqdXN0ICpwcmludHMgYSB3YXJuaW5nKiBiYXNlZCBvbiB0aGUgY2hpcCB2ZXJzaW9uLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBqdXN0IGNvcnJlY3RzIHRoZSBzdHJpbmcgdGhhdCdzIHByaW50ZWQgaW4gYSB3YXJuaW5nIG1lc3NhZ2U6IGVpdGhlciB0aGUgc3RhdGUgbmFtZSBpcyBwcmludGVkIChlLmcuIFwiaWRtYSBzdGF0ZSBYXCIpLCBvciBcImlkbWEgc3RhdGUgTiB1bmtub3duXCIuXG5cblNvLCB0aGlzIGJvaWxzIGRvd24gdG8gYSAqY29zbWV0aWMqIGZpeCBmb3IgYSBkZWJ1Zy93YXJuaW5nIG1lc3NhZ2UuIEl0J3Mgbm90IGNoYW5naW5nIGFueSBmdW5jdGlvbmFsIGxvZ2ljLiBObyBmdW5jdGlvbmFsIGNoYW5nZXMsIGp1c3QgYSBjbGVhbmVyLCBtb3JlIGFjY3VyYXRlIHdhcm5pbmcuXG5cbkl0J3Mgbm90IHdvcnRoIGZ1enppbmcuIEknbGwgZG91YmxlIGNoZWNrIHRoYXQgYENIX1dBUk5gIGRvZXNuJ3QgZG8gYW55dGhpbmcgZWxzZSwganVzdCB0byBiZSB0aG9yb3VnaCwgYnV0IEkgZG9uJ3QgYW50aWNpcGF0ZSBmaW5kaW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzYwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDU5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTY6MDM6MTUuMTAyNTUyMjMxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY0ODM0ODMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNkZWZpbmUgQ0hfV0FSTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0LmgtNjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oOjYyOiNkZWZpbmUgQ0hfV0FSTihhZGFwLCBmbXQsIC4uLikgZGV2X3dhcm4oYWRhcC1cXHUwMDNlcGRldl9kZXYsIGZtdCwgIyMgX19WQV9BUkdTX18pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oLTYzLWV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGFkYXB0ZXJfbGlzdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTY6MDM6MTYuNTY3NDA3NTUzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNTgxMjAwNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2UgYENIX1dBUk5gIGlzIGVzc2VudGlhbGx5IGp1c3QgYSB3cmFwcGVyIGFyb3VuZCBgZGV2X3dhcm5gLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gSW4gZXNzZW5jZSwgdGhpcyB3aG9sZSBwYXRjaCBib2lscyBkb3duIHRvIGZpeGluZyBhIHdhcm5pbmcgbWVzc2FnZSBzdHJpbmcuIEl0J3Mgbm90IGltcGFjdGluZyBhbnkgY29yZSBmdW5jdGlvbmFsaXR5LCBleGVjdXRpb24gZmxvdywgb3IgdGhlIHVuZGVybHlpbmcgbG9naWMgb2YgdGhlIHN5c3RlbS4gSSBzZWUgdGhhdCBpdCBjb3JyZWN0cyBhIGJpdCBvZiByZWR1bmRhbnQgYW5kIGluY29ycmVjdCBjb2RlIHRoYXQgd2FzIG92ZXJ3cml0aW5nIGFuIGFycmF5IHBvaW50ZXIsIGJ1dCB0aGlzIHBvaW50ZXIsIGBzZ2VfaWRtYV9kZWNvZGVgLCBpcyAqb25seSogdXNlZCBmb3IgZ2VuZXJhdGluZyB0aGUgd2FybmluZyBtZXNzYWdlLlxuXG5UaGVyZWZvcmUsIHNpbmNlIHRoaXMgcGF0Y2ggaGFzIG5vIGltcGFjdCBvbiB0aGUgb3BlcmF0aW9uYWwgcGVyZm9ybWFuY2Ugb3IgaW50ZW5kZWQgYmVoYXZpb3JzLCBJJ20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByaXNrIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNoYW5nZSBpcyBuZWdsaWdpYmxlLiBNeSBhbmFseXNpcyBpcyBjb21wbGV0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM4NiwiT3V0cHV0VG9rZW5zIjo4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxNjowMzoyMS42MjU1MzI4NzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIHJlZHVuZGFudCBhbmQgaW5jb3JyZWN0IGNvZGUgdGhhdCBvdmVyd3JpdGVzIHRoZSBgc2dlX2lkbWFfZGVjb2RlYCBhcnJheSBwb2ludGVyIHVzZWQgc29sZWx5IGZvciBwcmludGluZyBhIHdhcm5pbmcgbWVzc2FnZSAoYENIX1dBUk5gKS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBrZXJuZWwgbG9naWMsIG9ubHkgdGhlIHN0cmluZyBvdXRwdXQgaW4gYSBkZWJ1Zy93YXJuaW5nIGxvZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgcmVkdW5kYW50IGFuZCBpbmNvcnJlY3QgY29kZSB0aGF0IG92ZXJ3cml0ZXMgdGhlIGBzZ2VfaWRtYV9kZWNvZGVgIGFycmF5IHBvaW50ZXIgdXNlZCBzb2xlbHkgZm9yIHByaW50aW5nIGEgd2FybmluZyBtZXNzYWdlIChgQ0hfV0FSTmApLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGtlcm5lbCBsb2dpYywgb25seSB0aGUgc3RyaW5nIG91dHB1dCBpbiBhIGRlYnVnL3dhcm5pbmcgbG9nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow6t6bl[1] Phase: Running StartedAt: 2026-06-29 16:03:32 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6t6bl[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-29 16:03:32 +0000 UTC FinishedAt: 2026-06-29 16:03:39 +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,}