Name: series-workflow9xwtk Phase: Failed StartedAt: 2026-08-24 02:55:00 +0000 UTC FinishedAt: 2026-08-24 03:11:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9xwtk[0] Phase: Succeeded StartedAt: 2026-08-24 02:55:00 +0000 UTC FinishedAt: 2026-08-24 03:11:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9xwtk[0].run-triage Phase: Succeeded StartedAt: 2026-08-24 02:55:00 +0000 UTC FinishedAt: 2026-08-24 03:11:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGtob19vdXRfZmR0X3NldHVwYCBpbiBga2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY2AgdG8gYWRkIHByb3BlciBlcnJvciBjaGVja2luZyB0byBsaWJmZHQgY2FsbHMuIFRoaXMgZnVuY3Rpb24gaXMgbWFya2VkIGFzIGBfX2luaXRgIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIGR1cmluZyBrZXJuZWwgYm9vdCB2aWEgYGZzX2luaXRjYWxsKGtob19pbml0KWAuIEl0IHRha2VzIG5vIHVzZXIgaW5wdXQgYW5kIHNpbXBseSBpbml0aWFsaXplcyBhIHN0YXRpYyBGbGF0dGVuZWQgRGV2aWNlIFRyZWUgKEZEVCkgaW4gYSBwcmUtYWxsb2NhdGVkIGJ1ZmZlci4gQmVjYXVzZSBpdCBpcyBleGVjdXRlZCBvbmx5IG9uY2UgYXQgYm9vdCB0aW1lIGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIG9yIGluZmx1ZW5jZWQgYnkgdXNlciBzcGFjZSBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiwgaXQgaXMgbm90IHJlYWNoYWJsZSBieSB0aGUgZnV6emVyIGFuZCB0aGVyZWZvcmUgbm90IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjA5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2UxNjViMmQzMjEwYzczM2MzZDNlOGQ4OTc0MzgzOWQ3MTI4M2VhMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDAzOjA5OjU3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jXG5pbmRleCAxNzVjMDhhNmU0MWUzLi45MzQ0M2FkODQ1M2QyIDEwMDY0NFxuLS0tIGEva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1xuQEAgLTE0MzgsMjAgJiM0MzsxNDM4LDM0IEBAIHN0YXRpYyBfX2luaXQgaW50IGtob19vdXRfZmR0X3NldHVwKHZvaWQpXG4gXHRpbnQgZXJyO1xuIFxuIFx0ZXJyID0gZmR0X2NyZWF0ZShyb290LCBQQUdFX1NJWkUpO1xuLVx0ZXJyIHw9IGZkdF9maW5pc2hfcmVzZXJ2ZW1hcChyb290KTtcbi1cdGVyciB8PSBmZHRfYmVnaW5fbm9kZShyb290LCBcJiMzNDtcJiMzNDspO1xuLVx0ZXJyIHw9IGZkdF9wcm9wZXJ0eV9zdHJpbmcocm9vdCwgXCYjMzQ7Y29tcGF0aWJsZVwmIzM0OywgS0hPX0ZEVF9DT01QQVRJQkxFKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRlcnIgPSBmZHRfZmluaXNoX3Jlc2VydmVtYXAocm9vdCk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0ZXJyID0gZmR0X2JlZ2luX25vZGUocm9vdCwgXCYjMzQ7XCYjMzQ7KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRlcnIgPSBmZHRfcHJvcGVydHlfc3RyaW5nKHJvb3QsIFwmIzM0O2NvbXBhdGlibGVcJiMzNDssIEtIT19GRFRfQ09NUEFUSUJMRSk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4gXG4gXHRwcmVzZXJ2ZWRfbWVtX3RyZWVfcGEgPSB2aXJ0X3RvX3BoeXModHJlZS1cdTAwM2Vyb290KTtcbiBcbi1cdGVyciB8PSBmZHRfcHJvcGVydHkocm9vdCwgS0hPX0ZEVF9NRU1PUllfTUFQX1BST1BfTkFNRSxcbi1cdFx0XHQgICAgXHUwMDI2cHJlc2VydmVkX21lbV90cmVlX3BhLFxuLVx0XHRcdCAgICBzaXplb2YocHJlc2VydmVkX21lbV90cmVlX3BhKSk7XG4mIzQzO1x0ZXJyID0gZmR0X3Byb3BlcnR5KHJvb3QsIEtIT19GRFRfTUVNT1JZX01BUF9QUk9QX05BTUUsXG4mIzQzO1x0XHRcdCAgIFx1MDAyNnByZXNlcnZlZF9tZW1fdHJlZV9wYSxcbiYjNDM7XHRcdFx0ICAgc2l6ZW9mKHByZXNlcnZlZF9tZW1fdHJlZV9wYSkpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuIFxuLVx0ZXJyIHw9IGZkdF9lbmRfbm9kZShyb290KTtcbi1cdGVyciB8PSBmZHRfZmluaXNoKHJvb3QpO1xuJiM0MztcdGVyciA9IGZkdF9lbmRfbm9kZShyb290KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRlcnIgPSBmZHRfZmluaXNoKHJvb3QpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuIFxuLVx0cmV0dXJuIGVycjtcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgX19pbml0IGtob19pbl9rZXhlY19tZXRhZGF0YSh2b2lkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBga2hvX291dF9mZHRfc2V0dXBgIGluIGBrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jYCB0byBhZGQgcHJvcGVyIGVycm9yIGNoZWNraW5nIHRvIGxpYmZkdCBjYWxscy4gVGhpcyBmdW5jdGlvbiBpcyBtYXJrZWQgYXMgYF9faW5pdGAgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2UgZHVyaW5nIGtlcm5lbCBib290IHZpYSBgZnNfaW5pdGNhbGwoa2hvX2luaXQpYC4gSXQgdGFrZXMgbm8gdXNlciBpbnB1dCBhbmQgc2ltcGx5IGluaXRpYWxpemVzIGEgc3RhdGljIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSAoRkRUKSBpbiBhIHByZS1hbGxvY2F0ZWQgYnVmZmVyLiBCZWNhdXNlIGl0IGlzIGV4ZWN1dGVkIG9ubHkgb25jZSBhdCBib290IHRpbWUgYW5kIGNhbm5vdCBiZSB0cmlnZ2VyZWQgb3IgaW5mbHVlbmNlZCBieSB1c2VyIHNwYWNlIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLCBpdCBpcyBub3QgcmVhY2hhYmxlIGJ5IHRoZSBmdXp6ZXIgYW5kIHRoZXJlZm9yZSBub3Qgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3ZTE2NWIyZDMyMTBjNzMzYzNkM2U4ZDg5NzQzODM5ZDcxMjgzZWEyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMjQgMDM6MDk6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jIGIva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYwppbmRleCAxNzVjMDhhNmU0MWUzLi45MzQ0M2FkODQ1M2QyIDEwMDY0NAotLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMKQEAgLTE0MzgsMjAgJiM0MzsxNDM4LDM0IEBAIHN0YXRpYyBfX2luaXQgaW50IGtob19vdXRfZmR0X3NldHVwKHZvaWQpCiAJaW50IGVycjsKIAogCWVyciA9IGZkdF9jcmVhdGUocm9vdCwgUEFHRV9TSVpFKTsKLQllcnIgfD0gZmR0X2ZpbmlzaF9yZXNlcnZlbWFwKHJvb3QpOwotCWVyciB8PSBmZHRfYmVnaW5fbm9kZShyb290LCAmIzM0OyYjMzQ7KTsKLQllcnIgfD0gZmR0X3Byb3BlcnR5X3N0cmluZyhyb290LCAmIzM0O2NvbXBhdGlibGUmIzM0OywgS0hPX0ZEVF9DT01QQVRJQkxFKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CWVyciA9IGZkdF9maW5pc2hfcmVzZXJ2ZW1hcChyb290KTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CWVyciA9IGZkdF9iZWdpbl9ub2RlKHJvb3QsICYjMzQ7JiMzNDspOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsJZXJyID0gZmR0X3Byb3BlcnR5X3N0cmluZyhyb290LCAmIzM0O2NvbXBhdGlibGUmIzM0OywgS0hPX0ZEVF9DT01QQVRJQkxFKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiAKIAlwcmVzZXJ2ZWRfbWVtX3RyZWVfcGEgPSB2aXJ0X3RvX3BoeXModHJlZS0mZ3Q7cm9vdCk7CiAKLQllcnIgfD0gZmR0X3Byb3BlcnR5KHJvb3QsIEtIT19GRFRfTUVNT1JZX01BUF9QUk9QX05BTUUsCi0JCQkgICAgJmFtcDtwcmVzZXJ2ZWRfbWVtX3RyZWVfcGEsCi0JCQkgICAgc2l6ZW9mKHByZXNlcnZlZF9tZW1fdHJlZV9wYSkpOwomIzQzOwllcnIgPSBmZHRfcHJvcGVydHkocm9vdCwgS0hPX0ZEVF9NRU1PUllfTUFQX1BST1BfTkFNRSwKJiM0MzsJCQkgICAmYW1wO3ByZXNlcnZlZF9tZW1fdHJlZV9wYSwKJiM0MzsJCQkgICBzaXplb2YocHJlc2VydmVkX21lbV90cmVlX3BhKSk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwogCi0JZXJyIHw9IGZkdF9lbmRfbm9kZShyb290KTsKLQllcnIgfD0gZmR0X2ZpbmlzaChyb290KTsKJiM0MzsJZXJyID0gZmR0X2VuZF9ub2RlKHJvb3QpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsJZXJyID0gZmR0X2ZpbmlzaChyb290KTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiAKLQlyZXR1cm4gZXJyOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgX19pbml0IGtob19pbl9rZXhlY19tZXRhZGF0YSh2b2lkKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzY2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogRkRUIFNldHVwIGZvciBMaXZlIFVwZGF0ZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jYCwgc3BlY2lmaWNhbGx5IHRoZSBga2hvX291dF9mZHRfc2V0dXBgIGZ1bmN0aW9uLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxvb2tzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0JiMzOTtzIHJlcGxhY2luZyBlcnJvciBhY2N1bXVsYXRpb24gd2l0aCBpbW1lZGlhdGUgZXJyb3IgcmV0dXJucyB3aXRoaW4gdGhlIEZsYXQgRGV2aWNlIFRyZWUgKEZEVCkgc2V0dXAuIEluc3RlYWQgb2YgaGF2aW5nIG11bHRpcGxlIGBlcnIgfD0gZmR0Xy4uLmAgbGluZXMsIGl0JiMzOTtzIG5vdyBgZXJyID0gZmR0Xy4uLjsgaWYgKGVycikgcmV0dXJuIGVycjtgLgoKVGhpcyBpcyBpbnRlcmVzdGluZy4gVGhlIHByZXZpb3VzIGFwcHJvYWNoIG9mIGNvbnRpbnVpbmcgZXhlY3V0aW9uIGFmdGVyIGFuIEZEVCBmdW5jdGlvbiBmYWlscyBpcyBkZWZpbml0ZWx5IHJpc2t5LiBBY2N1bXVsYXRpbmcgZXJyb3JzIGFuZCBwdXNoaW5nIGZvcndhcmQgY291bGQgYWJzb2x1dGVseSBsZWFkIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBvciBldmVuIG91dHJpZ2h0IGNyYXNoZXMgZG93bnN0cmVhbSBpZiBgZmR0X2NyZWF0ZWAgYmFpbHMgb3V0LCBidXQgc3Vic2VxdWVudCBjb2RlIHRoYXQgZXhwZWN0cyBhIHZhbGlkIEZEVCBzdHJ1Y3R1cmUgY29udGludWVzIHRvIHJ1bi4gVGhpcyBpcyBhIGNsYXNzaWMgZXhhbXBsZSBvZiBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIHByZXZlbnRpbmcgY2FzY2FkaW5nIGZhaWx1cmVzLiBBIHNpbmdsZSBgZmR0YCBmYWlsdXJlIHNob3VsZCBoYWx0IHRoZSBwcm9jZXNzLgoKTm93LCBJIHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgaXRzZWxmLiBMZXQgbWUgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlZSBob3cgYGtob19vdXRfZmR0X3NldHVwYCBpcyBhY3R1YWxseSB1c2VkLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgcmVhbGx5IGhlbHAgbWUgYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgYW5kIHdoZXRoZXIgaXQmIzM5O3MgdHJ1bHkgYSBjcml0aWNhbCBpbXByb3ZlbWVudCBmb3Igc3RhYmlsaXR5IGR1cmluZyBsaXZlIHVwZGF0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDM6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2hvX291dF9mZHRfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MTQxMT1zdGF0aWMgaW50IF9faW5pdCBraG9fbWVtX3JldHJpZXZlKGNvbnN0IHZvaWQgKmZkdClcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE0MzItXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE0MzM6c3RhdGljIF9faW5pdCBpbnQga2hvX291dF9mZHRfc2V0dXAodm9pZClcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTQzNC17XG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYz0xNTYxPXN0YXRpYyBfX2luaXQgaW50IGtob19pbml0KHZvaWQpXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNTg5LVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNTkwOlx0ZXJyID0ga2hvX291dF9mZHRfc2V0dXAoKTtcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTU5MS1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDM6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA2NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIEtITyBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGtob19vdXRfZmR0X3NldHVwYCBoZXJlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYGtob19pbml0YC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRvIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nLCBJIG5lZWQgdG8gdHJhY2UgdGhlIGZsb3cuIFNvLCBJIG5lZWQgdG8gZGlnIGludG8gYGtob19pbml0YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgdGhlIGluaXRpYWxpemF0aW9uIGlzIHNlcXVlbmNlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBgZmR0X3NldHVwYCBjYWxsLiBXaGF04oCZcyB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSB3aGVuIGBraG9fb3V0X2ZkdF9zZXR1cGAgaXMgdHJpZ2dlcmVkPyBXaGF0IGtleSBkYXRhIGlzIGluaXRpYWxpemVkIGJlZm9yZSwgb3IgcG90ZW50aWFsbHkgdXNlZCBhZnRlcj8gR290dGEgdW5kZXJzdGFuZCB0aGF0IHJlbGF0aW9uc2hpcC4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBwYXJ0aWN1bGFyIGBmZHRfc2V0dXBgIGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBLSE8gc3lzdGVtIHN0YXJ0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDM6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2hvX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MzY4PUVYUE9SVF9TWU1CT0xfR1BMKGtob19yYWRpeF93YWxrX3RyZWUpO1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzcwLS8qIEZvciBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgMC1vcmRlciBwYWdlcy4gKi9cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MzcxOnN0YXRpYyB2b2lkIGtob19pbml0X3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0zNzIte1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzc5LVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzozODA6c3RhdGljIHZvaWQga2hvX2luaXRfZm9saW8oc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcilcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzgxLXtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTM5Nz1zdGF0aWMgc3RydWN0IHBhZ2UgKmtob19yZXN0b3JlX3BhZ2UocGh5c19hZGRyX3QgcGh5cywgYm9vbCBpc19mb2xpbylcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTQxOS1cdGlmIChpc19mb2xpbylcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6NDIwOlx0XHRraG9faW5pdF9mb2xpbyhwYWdlLCBpbmZvLm9yZGVyKTtcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDIxLVx0ZWxzZVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzo0MjI6XHRcdGtob19pbml0X3BhZ2VzKHBhZ2UsIG5yX3BhZ2VzKTtcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDIzLVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MTU0NT1zdGF0aWMgaW50IF9faW5pdCBraG9fa2V4ZWNfbWV0YWRhdGFfaW5pdChjb25zdCB2b2lkICpmZHQpXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNTYwLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNTYxOnN0YXRpYyBfX2luaXQgaW50IGtob19pbml0KHZvaWQpXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE1NjIte1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTY0My19XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE2NDQ6ZnNfaW5pdGNhbGwoa2hvX2luaXQpO1xua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNjQ1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NjkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLSE8gSW5pdGlhbGl6YXRpb24gUHJvY2VzcyoqCgpPa2F5LCBzbyBga2hvX2luaXRgIGlzIGFuIGBmc19pbml0Y2FsbGAsIG1lYW5pbmcgaXQmIzM5O3MgdHJpZ2dlcmVkIGR1cmluZyB0aGUgc3lzdGVtIGJvb3Qgc2VxdWVuY2UuIEFuZCBoYW5nIG9uLCBga2hvX291dF9mZHRfc2V0dXBgIGlzIG1hcmtlZCBhcyBgX19pbml0YD8gVGhhdCYjMzk7cyB0eXBpY2FsbHkgYSByZWQgZmxhZyBmb3IgZnV6emluZywgaXNuJiMzOTt0IGl0PyBUaGVzZSBraW5kcyBvZiBmdW5jdGlvbnMgYXJlIGRlc2lnbmVkIHRvIHJ1biBvbmNlLCBhdCBib290IHRpbWUsIGFuZCBhcmVuJiMzOTt0IGdlbmVyYWxseSBhY2Nlc3NpYmxlIGZyb20gdXNlciBzcGFjZSwgd2hpY2ggaXMgd2hlcmUgd2UgdHlwaWNhbGx5IGZvY3VzIG91ciBmdXp6aW5nIGVmZm9ydHMg4oCTIHN5c2NhbGxzLCBpb2N0bHMsIG5ldHdvcmsgcGFja2V0cywgZXRjLiBTeXprYWxsZXIgKmRvZXMqIHNvbWV0aW1lcyBsb29rIGF0IGJvb3QtdGltZSBzdHVmZiBpZiBpdCYjMzk7cyB0aWVkIHRvIGRldmljZSB0cmVlcyBvciByZWxhdGVkIGluaXRpYWxpemF0aW9ucywgYnV0IGdlbmVyYWxseSwgYF9faW5pdGAgZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBvbmNlIGFuZCB0aGVuIGZvcmdvdHRlbi4KCkhtbSwgYGtob19vdXRfZmR0X3NldHVwYCBpcyBjYWxsZWQgZnJvbSBga2hvX2luaXRgLCBhbmQgYGtob19pbml0YCBpcyBjYWxsZWQgdmlhIGBmc19pbml0Y2FsbChraG9faW5pdClgLiBTbywgdGhlIGVudGlyZSBjaGFpbiBleGVjdXRlcyBkdXJpbmcga2VybmVsIGluaXRpYWxpemF0aW9uLiBDYW4gSSB0cmlnZ2VyIHRoaXMgc2VxdWVuY2UgZnJvbSB1c2VyIHNwYWNlIGRpcmVjdGx5PyBObywgZGVmaW5pdGVseSBub3QuIGBmc19pbml0Y2FsbGAgbWVhbnMgaXQgcnVucyBiZWZvcmUgZXZlbiB1c2VyIHNwYWNlIGlzIGluaXRpYWxpemVkLgoKV2FpdCwgd2hhdCBhYm91dCBrZXhlYz8gQ291bGQgYSBrZXJuZWwgaW1hZ2UgcmVsb2FkIHNvbWVob3cgdHJpZ2dlciB0aGlzPyBJdCYjMzk7cyB3b3J0aCBpbnZlc3RpZ2F0aW5nLiBMZXQgbWUgc2VlIGlmIGBraG9fb3V0X2ZkdF9zZXR1cGAgaXMgdXNlZCBhbnl3aGVyZSBlbHNlIGluIHRoZSBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCBjb21wbGV0ZWx5IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDM6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2hvX291dF9mZHRfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYz0xNDExPXN0YXRpYyBpbnQgX19pbml0IGtob19tZW1fcmV0cmlldmUoY29uc3Qgdm9pZCAqZmR0KVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTQzMi1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTQzMzpzdGF0aWMgX19pbml0IGludCBraG9fb3V0X2ZkdF9zZXR1cCh2b2lkKVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDM0LXtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE1NjE9c3RhdGljIF9faW5pdCBpbnQga2hvX2luaXQodm9pZClcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE1ODktXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE1OTA6XHRlcnIgPSBraG9fb3V0X2ZkdF9zZXR1cCgpO1xua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNTkxLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjQ3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBraG9fb3V0X2ZkdF9zZXR1cGAgRHVyaW5nIEtleGVjIEZ1enppbmcqKgoKT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhpcyBga2hvX291dF9mZHRfc2V0dXBgIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBraG9faW5pdGAsIHdoaWNoIGlzLCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIGFuIGBmc19pbml0Y2FsbGAuIFRoYXQgbWVhbnMgaXQmIzM5O3MgYW4gYF9faW5pdGAgZnVuY3Rpb24sIHNvIGl0cyBtZW1vcnkgaXMgZnJlZWQgYWZ0ZXIgdGhlIGJvb3QgcHJvY2Vzcy4gSXQgd291bGRuJiMzOTt0IGJlIGFjY2Vzc2libGUgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24sIG9yLCBpbXBvcnRhbnRseSwgZHVyaW5nIGEgZnV6emluZyBsb29wLiBOb3csIGRvZXMgU3l6a2FsbGVyIGV2ZW4gdHJ5IHRvIGZ1enogYGtleGVjYD8gWWVzLCBvZiBjb3Vyc2UgaXQgZG9lcywgdGhyb3VnaCBga2V4ZWNfbG9hZGAgYW5kIGBrZXhlY19maWxlX2xvYWRgIHN5c2NhbGxzLiBCdXQgc2luY2UgYGtob19pbml0YCBpcyBhbiBgZnNfaW5pdGNhbGxgLCBpdCBydW5zICpvbmx5KiBhdCBib290LgoKU28sIHRoZSBxdWVzdGlvbiBpczogaXMgYGtob19vdXRfZmR0X3NldHVwYCByZWFjaGFibGUgdmlhIGEga2V4ZWMgc2VxdWVuY2U/IE5vLCBsb2dpY2FsbHksIGl0IHNob3VsZG4mIzM5O3QgYmUuIEl0JiMzOTtzIG1hcmtlZCBhcyBgX19pbml0YCwgc28gaXQgZ2V0cyBkaXNjYXJkZWQgcG9zdC1ib290LiBUaGF0IG1lYW5zIGl0IGFic29sdXRlbHkgKmNhbm5vdCogYmUgY2FsbGVkIGR1cmluZyBhIGtleGVjIGV4ZWN1dGlvbi4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLCB0aGF0IGBraG9faW5pdGAgcmVhbGx5IGlzIGFuIGBmc19pbml0Y2FsbGAuIFl1cCwgYGZzX2luaXRjYWxsKGtob19pbml0KTtgIGNvbmZpcm1zIGl0LiBTbywgYGtob19vdXRfZmR0X3NldHVwYCBleGVjdXRlcyBwcmVjaXNlbHkgb25jZSwgYXQgYm9vdC4KCkdlbmVyYWxseSBzcGVha2luZywgU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGR5bmFtaWNhbGx5IGZ1enogYm9vdCBjb2RlIGR1cmluZyBpdHMgbm9ybWFsIGZ1enppbmcgbG9vcCB1bmxlc3MgaXQmIzM5O3MgdHJpZ2dlcmVkIGJ5IGEgbW9kdWxlIGxvYWQgb3Igc29tZXRoaW5nIHNpbWlsYXIuIEJ1dCB0aGlzIGlzIGJ1aWx0LWluIChgZnNfaW5pdGNhbGxgKSwgc28gaXQmIzM5O3MgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBzaXR1YXRpb24uIE9uZSBsYXN0IHRob3VnaHQ6IGlzIGBrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jYCBhIG1vZHVsZT8gTGV0IG1lIGNoZWNrIGl0cyBgTWFrZWZpbGVgIG9yIGBLY29uZmlnYCBmb3IgY29uZmlybWF0aW9uLCBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2tleGVjX2hhbmRvdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2xpdmV1cGRhdGUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9saXZldXBkYXRlL01ha2VmaWxlPTM9bHVvLXkgOj1cdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9NYWtlZmlsZS05LVxua2VybmVsL2xpdmV1cGRhdGUvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0tFWEVDX0hBTkRPVkVSKVx0XHQmIzQzOz0ga2V4ZWNfaGFuZG92ZXIub1xua2VybmVsL2xpdmV1cGRhdGUvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0tFWEVDX0hBTkRPVkVSX0RFQlVHKVx0JiM0Mzs9IGtleGVjX2hhbmRvdmVyX2RlYnVnLm9cbmtlcm5lbC9saXZldXBkYXRlL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19LRVhFQ19IQU5ET1ZFUl9ERUJVR0ZTKVx0JiM0Mzs9IGtleGVjX2hhbmRvdmVyX2RlYnVnZnMub1xua2VybmVsL2xpdmV1cGRhdGUvTWFrZWZpbGUtMTMtXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0yLS8qXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjM6ICoga2V4ZWNfaGFuZG92ZXIuYyAtIGtleGVjIGhhbmRvdmVyIG1ldGFkYXRhIHByb2Nlc3Npbmdcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNC0gKiBDb3B5cmlnaHQgKEMpIDIwMjMgQWxleGFuZGVyIEdyYWYgXHUwMDNjZ3JhZkBhbWF6b24uY29tXHUwMDNlXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9rZXhlYy5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE5OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2tleGVjX2hhbmRvdmVyLmhcdTAwM2Vcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMjAtI2luY2x1ZGUgXHUwMDNjbGludXgva2hvX3JhZGl4X3RyZWUuaFx1MDAzZVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0yMS0jaW5jbHVkZSBcdTAwM2NsaW51eC91dHNuYW1lLmhcdTAwM2Vcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MjI6I2luY2x1ZGUgXHUwMDNjbGludXgva2hvL2FiaS9rZXhlY19oYW5kb3Zlci5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTIzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2toby9hYmkva2V4ZWNfbWV0YWRhdGEuaFx1MDAzZVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzgtI2luY2x1ZGUgXCYjMzQ7Li4va2V4ZWNfaW50ZXJuYWwuaFwmIzM0O1xua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzozOTojaW5jbHVkZSBcJiMzNDtrZXhlY19oYW5kb3Zlcl9pbnRlcm5hbC5oXCYjMzQ7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTQwLVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnLmMtMi0vKlxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfZGVidWcuYzozOiAqIGtleGVjX2hhbmRvdmVyX2RlYnVnLmMgLSBrZXhlYyBoYW5kb3ZlciBvcHRpb25hbCBkZWJ1ZyBmdW5jdGlvbmFsaXR5XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Zy5jLTQtICogQ29weXJpZ2h0IChDKSAyMDI1IEdvb2dsZSBMTEMsIFBhc2hhIFRhdGFzaGluIFx1MDAzY3Bhc2hhLnRhdGFzaGluQHNvbGVlbi5jb21cdTAwM2Vcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Zy5jLTgtXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Zy5jOjk6I2luY2x1ZGUgXCYjMzQ7a2V4ZWNfaGFuZG92ZXJfaW50ZXJuYWwuaFwmIzM0O1xua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfZGVidWcuYy0xMC1cbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Z2ZzLmMtMi0vKlxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfZGVidWdmcy5jOjM6ICoga2V4ZWNfaGFuZG92ZXJfZGVidWdmcy5jIC0ga2V4ZWMgaGFuZG92ZXIgZGVidWdmcyBpbnRlcmZhY2VzXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Z2ZzLmMtNC0gKiBDb3B5cmlnaHQgKEMpIDIwMjMgQWxleGFuZGVyIEdyYWYgXHUwMDNjZ3JhZkBhbWF6b24uY29tXHUwMDNlXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfZGVidWdmcy5jLTE1LSNpbmNsdWRlIFx1MDAzY2xpbnV4L21tLmhcdTAwM2Vcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnZnMuYzoxNjojaW5jbHVkZSBcdTAwM2NsaW51eC9raG8vYWJpL2tleGVjX2hhbmRvdmVyLmhcdTAwM2Vcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnZnMuYzoxNzojaW5jbHVkZSBcJiMzNDtrZXhlY19oYW5kb3Zlcl9pbnRlcm5hbC5oXCYjMzQ7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Z2ZzLmMtMTgtXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfaW50ZXJuYWwuaC00LVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfaW50ZXJuYWwuaDo1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2tleGVjX2hhbmRvdmVyLmhcdTAwM2Vcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2ludGVybmFsLmgtNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2Vcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9raG9fYmxvY2suYy0yMy0jaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9raG9fYmxvY2suYzoyNDojaW5jbHVkZSBcdTAwM2NsaW51eC9rZXhlY19oYW5kb3Zlci5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9raG9fYmxvY2suYy0yNS0jaW5jbHVkZSBcdTAwM2NsaW51eC9raG8vYWJpL2Jsb2NrLmhcdTAwM2Vcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fY29yZS5jLTUzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fY29yZS5jOjU0OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2tleGVjX2hhbmRvdmVyLmhcdTAwM2Vcbmtlcm5lbC9saXZldXBkYXRlL2x1b19jb3JlLmMtNTUtI2luY2x1ZGUgXHUwMDNjbGludXgva2hvL2FiaS9sdW8uaFx1MDAzZVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19jb3JlLmMtNjMtXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fY29yZS5jOjY0OiNpbmNsdWRlIFwmIzM0O2tleGVjX2hhbmRvdmVyX2ludGVybmFsLmhcJiMzNDtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19jb3JlLmMtNjUtI2luY2x1ZGUgXCYjMzQ7bHVvX2ludGVybmFsLmhcJiMzNDtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTEwNC0jaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjEwNTojaW5jbHVkZSBcdTAwM2NsaW51eC9rZXhlY19oYW5kb3Zlci5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTEwNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9raG8vYWJpL2x1by5oXHUwMDNlXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZsYi5jLTQ0LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvLmhcdTAwM2Vcbmtlcm5lbC9saXZldXBkYXRlL2x1b19mbGIuYzo0NTojaW5jbHVkZSBcdTAwM2NsaW51eC9rZXhlY19oYW5kb3Zlci5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmxiLmMtNDYtI2luY2x1ZGUgXHUwMDNjbGludXgva2hvL2FiaS9sdW8uaFx1MDAzZVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19zZXNzaW9uLmMtOTEtI2luY2x1ZGUgXHUwMDNjbGludXgvaW8uaFx1MDAzZVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX3Nlc3Npb24uYzo5MjojaW5jbHVkZSBcdTAwM2NsaW51eC9rZXhlY19oYW5kb3Zlci5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fc2Vzc2lvbi5jLTkzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2tob19ibG9jay5oXHUwMDNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MTYKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtleGVjIEhhbmRvdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYnVpbGQgZmlsZSBhbmQgaXQgc2VlbXMgdGhlIGBDT05GSUdfS0VYRUNfSEFORE9WRVJgIG9wdGlvbiBpcyB3aGF0IGNvbnRyb2xzIHdoZXRoZXIgYSBzcGVjaWZpYyBmaWxlIGdldHMgaW5jbHVkZWQuIFJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBpdCBsb29rcyBsaWtlIGBrZXhlY19oYW5kb3Zlci5vYCBnZXRzIGFkZGVkIHRvIHRoZSBidWlsZCBvYmplY3QgbGlzdC4gTm93LCBpcyB0aGlzIGEgbW9kdWxlPyBUaGUgc3ludGF4IGhlcmUsIGBvYmotJChDT05GSUdfS0VYRUNfSEFORE9WRVIpICYjNDM7PSBrZXhlY19oYW5kb3Zlci5vYCwgdXN1YWxseSBtZWFucyBpdCYjMzk7cyBhIG1vZHVsZSwgYnVpbHQgaWYgdGhlIGNvbmZpZyBvcHRpb24gaXMgZW5hYmxlZC4gQnV0IHdhaXQuLi4gaWYgYENPTkZJR19LRVhFQ19IQU5ET1ZFUmAgaXMgYSBib29sZWFuLCB0aGVuIHRoaXMgd2lsbCBhbHdheXMgYmUgYnVpbHQtaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGl0IGlzLiBBbHJpZ2h0LCBiZXN0IHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBLRVhFQ19IQU5ET1ZFUmAgYW5kIGdldCBhIGRlZmluaXRpdmUgYW5zd2VyLiBJIG5lZWQgdG8gc2VlIHdoYXQgdGhhdCBjb25maWcgb3B0aW9uIGFjdHVhbGx5IGRlZmluZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLRVhFQ19IQU5ET1ZFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnPTM9bWVudSBcJiMzNDtMaXZlIFVwZGF0ZSBhbmQgS2V4ZWMgSGFuZE92ZXJcJiMzNDtcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctNC1cbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWc6NTpjb25maWcgS0VYRUNfSEFORE9WRVJcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7a2V4ZWMgaGFuZG92ZXJcJiMzNDtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnLTE3LVxua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZzoxODpjb25maWcgS0VYRUNfSEFORE9WRVJfREVCVUdcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctMTktXHRib29sIFwmIzM0O0VuYWJsZSBLZXhlYyBIYW5kb3ZlciBkZWJ1ZyBjaGVja3NcJiMzNDtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnLTI2LVxua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZzoyNzpjb25maWcgS0VYRUNfSEFORE9WRVJfREVCVUdGU1xua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7a2V4ZWMgaGFuZG92ZXIgZGVidWdmcyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnLTM3LVxua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZzozODpjb25maWcgS0VYRUNfSEFORE9WRVJfRU5BQkxFX0RFRkFVTFRcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctMzktXHRib29sIFwmIzM0O0VuYWJsZSBrZXhlYyBoYW5kb3ZlciBieSBkZWZhdWx0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNTYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBraG9fb3V0X2ZkdF9zZXR1cGAqKgoKQWxyaWdodCwgYSBgYm9vbGAuIFRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkOyBpdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGRhdGEgdHlwZSwgcHJvYmFibHkgaGFuZGxlZCBlZmZpY2llbnRseSBhdCB0aGUgaGFyZHdhcmUgbGV2ZWwuIE5vdywgSSYjMzk7bSBhc3N1bWluZywgYmFzZWQgb24gdGhlIG5hbWluZyBjb252ZW50aW9uLCB0aGF0IGBraG9fb3V0X2ZkdF9zZXR1cGAgaXMgYW4gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIHNwZWNpZmljYWxseSBhbiBgX19pbml0YCBpbiB0aGlzIGNvbnRleHQuIElmIHNvLCB0aGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIGl0JiMzOTtzIGV4ZWN1dGVkIGR1cmluZyB0aGUgc3lzdGVtIGJvb3Qgc2VxdWVuY2UuIEhvd2V2ZXIsIEkgbmVlZCB0byBjb25maXJtIHRoaXMgYXNzdW1wdGlvbiBiZWZvcmUgcHJvY2VlZGluZy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzICpvbmx5KiBjYWxsZWQgZHVyaW5nIGJvb3QuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBga2hvX2luaXRgIGlzLCBpbiBmYWN0LCB0aGUgKnNvbGUqIGNhbGxlci4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBvZiB0aGlzIGV4ZWN1dGlvbiBjb250ZXh0IGJlZm9yZSBJIGNhbiBlZmZlY3RpdmVseSBhc3Nlc3MgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb24gdGhlIHN5c3RlbS4gQW55IG90aGVyIGNhbGwgcGF0aHMgd291bGQgZHJhc3RpY2FsbHkgY2hhbmdlIGhvdyBJIGFwcHJvYWNoIGl0cyBhbmFseXNpcy4gTGV0IG1lIGNoZWNrIHRoZSBjYWxsIGdyYXBoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtraG9fb3V0X2ZkdF9zZXR1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE0MTE9c3RhdGljIGludCBfX2luaXQga2hvX21lbV9yZXRyaWV2ZShjb25zdCB2b2lkICpmZHQpXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDMyLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNDMzOnN0YXRpYyBfX2luaXQgaW50IGtob19vdXRfZmR0X3NldHVwKHZvaWQpXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE0MzQte1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MTU2MT1zdGF0aWMgX19pbml0IGludCBraG9faW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTU4OS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTU5MDpcdGVyciA9IGtob19vdXRfZmR0X3NldHVwKCk7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE1OTEtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODk3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgYSBLZXJuZWwgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgY2hhbmdlIEkmIzM5O20gbG9va2luZyBhdCwgaXQmIzM5O3Mgb25seSBjYWxsZWQgZnJvbSBga2hvX2luaXRgLCByaWdodD8gQW5kIGBraG9faW5pdGAgaXMgYW4gYGZzX2luaXRjYWxsYCwgbWVhbmluZyBpdCYjMzk7cyBhIGZpbGUgc3lzdGVtIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gYSB1c2VyIHNvbWVob3cgdHJpZ2dlciB0aGlzIGZyb20gdXNlcnNwYWNlPyBObywgdGhhdCBzZWVtcyB1bmxpa2VseSwgYW5kIHRoYXQmIzM5O3MgZ29vZC4gTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGNoYW5nZSBoYXMgYW55IGZ1bmN0aW9uYWwgaW1wYWN0IHRoYXQmIzM5O3Mgd29ydGggZnV6emluZy4KCkxldCYjMzk7cyBzZWXigKYgSXQmIzM5O3MgYW4gYF9faW5pdGAgZnVuY3Rpb24sIHNvIGl0IHJ1bnMgKm9uY2UqLCBkdXJpbmcgYm9vdC4gSWYgdGhlIGZ1bmN0aW9uIGVuY291bnRlcnMgYW4gZXJyb3IsIGl0IHJldHVybnMgYW4gZXJyb3IgdmFsdWUuIE9rYXksIHdoYXQgaGFwcGVucyB3aGVuIGl0IHJldHVybnMgYW4gZXJyb3I/IFdpbGwgaXQgYmUgaWdub3JlZCwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIHN1YnRsZSBidWcgbGF0ZXIsIG9yIHdpbGwgaXQgY2F1c2UgYSBib290IGZhaWx1cmU/IFdhaXQgYSBtaW51dGUsIGBraG9faW5pdGAgKmRvZXMqIHJldHVybiBhbiBlcnJvciB2YWx1ZS4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGF0IGBraG9faW5pdGAgYWN0dWFsbHkgKmRvZXMqIHdpdGggdGhhdCBlcnJvciByZXR1cm4gdmFsdWUgdG8gZGV0ZXJtaW5lIGhvdyBzaWduaWZpY2FudCB0aGlzIGNoYW5nZSBhY3R1YWxseSBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDM6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2hvX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MzY4PUVYUE9SVF9TWU1CT0xfR1BMKGtob19yYWRpeF93YWxrX3RyZWUpO1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzcwLS8qIEZvciBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgMC1vcmRlciBwYWdlcy4gKi9cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MzcxOnN0YXRpYyB2b2lkIGtob19pbml0X3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0zNzIte1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzc5LVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzozODA6c3RhdGljIHZvaWQga2hvX2luaXRfZm9saW8oc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcilcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzgxLXtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTM5Nz1zdGF0aWMgc3RydWN0IHBhZ2UgKmtob19yZXN0b3JlX3BhZ2UocGh5c19hZGRyX3QgcGh5cywgYm9vbCBpc19mb2xpbylcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTQxOS1cdGlmIChpc19mb2xpbylcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6NDIwOlx0XHRraG9faW5pdF9mb2xpbyhwYWdlLCBpbmZvLm9yZGVyKTtcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDIxLVx0ZWxzZVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzo0MjI6XHRcdGtob19pbml0X3BhZ2VzKHBhZ2UsIG5yX3BhZ2VzKTtcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDIzLVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MTU0NT1zdGF0aWMgaW50IF9faW5pdCBraG9fa2V4ZWNfbWV0YWRhdGFfaW5pdChjb25zdCB2b2lkICpmZHQpXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNTYwLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNTYxOnN0YXRpYyBfX2luaXQgaW50IGtob19pbml0KHZvaWQpXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE1NjIte1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTY0My19XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE2NDQ6ZnNfaW5pdGNhbGwoa2hvX2luaXQpO1xua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNjQ1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODIxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipFdmFsdWF0aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBga2hvX2luaXRgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGJlZm9yZSBJIGV2ZW4gY29uc2lkZXIgZnV6emluZyBzb21ldGhpbmcgaXMgZmlndXJlIG91dCBpZiBpdCYjMzk7cyBldmVuICp3b3J0aCogdGhlIGVmZm9ydC4gSXMgYGtob19pbml0YCBhIGxpa2VseSBjYW5kaWRhdGU/IERvZXMgaXQgaGFuZGxlIGV4dGVybmFsIGlucHV0cywgcHJvY2VzcyBkYXRhLCBwZXJmb3JtIGFueSBraW5kIG9mIG5vbi10cml2aWFsIG9wZXJhdGlvbiB0aGF0IG1pZ2h0IGJlIHN1c2NlcHRpYmxlIHRvIHZ1bG5lcmFiaWxpdGllcz8gT3IgaXMgaXQganVzdCBzb21lIGludGVybmFsIHNldHVwIHJvdXRpbmUgdGhhdCYjMzk7cyB1bmxpa2VseSB0byByZXZlYWwgYW55dGhpbmcgaW50ZXJlc3RpbmcgdGhyb3VnaCBmdXp6aW5nPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcmVhZCB0aGUgc291cmNlIGNvZGUgb2YgYGtob19pbml0YC4gQSBxdWljayBnbGFuY2Ugc2hvdWxkIHRlbGwgbWUgaWYgaXQmIzM5O3Mgd29ydGggaW52ZXN0aW5nIGZ1cnRoZXIgdGltZSBpbiB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24gZm9yIGZ1enppbmcuIElmIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCB1c2VyLXN1cHBsaWVkIGRhdGEgb3IgYW55IGtpbmQgb2YgZXh0ZXJuYWwgZGF0YSwgdGhlbiB3ZSBtaWdodCBoYXZlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSWYgbm90LCB0aGVuIHdlJiMzOTtsbCBzYXZlIG91ciB0aW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTYxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNTYxOlx0c3RhdGljIF9faW5pdCBpbnQga2hvX2luaXQodm9pZClcbjE1NjI6XHR7XG4xNTYzOlx0XHRzdHJ1Y3Qga2hvX3JhZGl4X3RyZWUgKnRyZWUgPSBcdTAwMjZraG9fb3V0LnJhZGl4X3RyZWU7XG4xNTY0Olx0XHRjb25zdCB2b2lkICpmZHQgPSBraG9fZ2V0X2ZkdCgpO1xuMTU2NTpcdFx0aW50IGVyciA9IDA7XG4xNTY2Olx0XG4xNTY3Olx0XHRpZiAoIWtob19lbmFibGUpXG4xNTY4Olx0XHRcdHJldHVybiAwO1xuMTU2OTpcdFxuMTU3MDpcdFx0dHJlZS1cdTAwM2Vyb290ID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO1xuMTU3MTpcdFx0aWYgKCF0cmVlLVx1MDAzZXJvb3QpIHtcbjE1NzI6XHRcdFx0ZXJyID0gLUVOT01FTTtcbjE1NzM6XHRcdFx0Z290byBlcnJfZnJlZV9zY3JhdGNoO1xuMTU3NDpcdFx0fVxuMTU3NTpcdFxuMTU3NjpcdFx0a2hvX291dC5mZHQgPSBraG9fYWxsb2NfcHJlc2VydmUoUEFHRV9TSVpFKTtcbjE1Nzc6XHRcdGlmIChJU19FUlIoa2hvX291dC5mZHQpKSB7XG4xNTc4Olx0XHRcdGVyciA9IFBUUl9FUlIoa2hvX291dC5mZHQpO1xuMTU3OTpcdFx0XHRnb3RvIGVycl9mcmVlX2tob19yYWRpeF90cmVlX3Jvb3Q7XG4xNTgwOlx0XHR9XG4xNTgxOlx0XG4xNTgyOlx0XHRlcnIgPSBraG9fZGVidWdmc19pbml0KCk7XG4xNTgzOlx0XHRpZiAoZXJyKVxuMTU4NDpcdFx0XHRnb3RvIGVycl9mcmVlX2ZkdDtcbjE1ODU6XHRcbjE1ODY6XHRcdGVyciA9IGtob19vdXRfZGVidWdmc19pbml0KFx1MDAyNmtob19vdXQuZGJnKTtcbjE1ODc6XHRcdGlmIChlcnIpXG4xNTg4Olx0XHRcdGdvdG8gZXJyX2ZyZWVfZmR0O1xuMTU4OTpcdFxuMTU5MDpcdFx0ZXJyID0ga2hvX291dF9mZHRfc2V0dXAoKTtcbjE1OTE6XHRcdGlmIChlcnIpXG4xNTkyOlx0XHRcdGdvdG8gZXJyX2ZyZWVfZmR0O1xuMTU5MzpcdFxuMTU5NDpcdFx0ZXJyID0ga2hvX2tleGVjX21ldGFkYXRhX2luaXQoZmR0KTtcbjE1OTU6XHRcdGlmIChlcnIpXG4xNTk2Olx0XHRcdGdvdG8gZXJyX2ZyZWVfZmR0O1xuMTU5NzpcdFxuMTU5ODpcdFx0aWYgKGZkdCkge1xuMTU5OTpcdFx0XHRraG9faW5fZGVidWdmc19pbml0KFx1MDAyNmtob19pbi5kYmcsIGZkdCk7XG4xNjAwOlx0XHRcdHJldHVybiAwO1xuMTYwMTpcdFx0fVxuMTYwMjpcdFxuMTYwMzpcdFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIGtob19zY3JhdGNoX2NudDsgaSYjNDM7JiM0MzspIHtcbjE2MDQ6XHRcdFx0dW5zaWduZWQgbG9uZyBiYXNlX3BmbiA9IFBIWVNfUEZOKGtob19zY3JhdGNoW2ldLmFkZHIpO1xuMTYwNTpcdFx0XHR1bnNpZ25lZCBsb25nIGNvdW50ID0ga2hvX3NjcmF0Y2hbaV0uc2l6ZSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVDtcbjE2MDY6XHRcdFx0dW5zaWduZWQgbG9uZyBwZm47XG4xNjA3Olx0XG4xNjA4Olx0XHRcdC8qXG4xNjA5Olx0XHRcdCAqIFdoZW4gZGVidWdfcGFnZWFsbG9jIGlzIGVuYWJsZWQsIF9fZnJlZV9wYWdlcygpIGNsZWFycyB0aGVcbjE2MTA6XHRcdFx0ICogY29ycmVzcG9uZGluZyBQUkVTRU5UIGJpdCBpbiB0aGUga2VybmVsIHBhZ2UgdGFibGUuXG4xNjExOlx0XHRcdCAqIFN1YnNlcXVlbnQga21lbWxlYWsgc2NhbnMgb2YgdGhlc2UgcGFnZXMgY2F1c2UgdGhlXG4xNjEyOlx0XHRcdCAqIG5vbi1QUkVTRU5UIHBhZ2UgZmF1bHRzLlxuMTYxMzpcdFx0XHQgKiBNYXJrIHNjcmF0Y2ggYXJlYXMgd2l0aCBrbWVtbGVha19pZ25vcmVfcGh5cygpIHRvIGV4Y2x1ZGVcbjE2MTQ6XHRcdFx0ICogdGhlbSBmcm9tIGttZW1sZWFrIHNjYW5uaW5nLlxuMTYxNTpcdFx0XHQgKi9cbjE2MTY6XHRcdFx0a21lbWxlYWtfaWdub3JlX3BoeXMoa2hvX3NjcmF0Y2hbaV0uYWRkcik7XG4xNjE3Olx0XHRcdGZvciAocGZuID0gYmFzZV9wZm47IHBmbiBcdTAwM2MgYmFzZV9wZm4gJiM0MzsgY291bnQ7XG4xNjE4Olx0XHRcdCAgICAgcGZuICYjNDM7PSBwYWdlYmxvY2tfbnJfcGFnZXMpXG4xNjE5Olx0XHRcdFx0aW5pdF9jbWFfcmVzZXJ2ZWRfcGFnZWJsb2NrKHBmbl90b19wYWdlKHBmbikpO1xuMTYyMDpcdFx0fVxuMTYyMTpcdFxuMTYyMjpcdFx0V0FSTl9PTl9PTkNFKGtob19kZWJ1Z2ZzX2Jsb2JfYWRkKFx1MDAyNmtob19vdXQuZGJnLCBcJiMzNDtmZHRcJiMzNDssXG4xNjIzOlx0XHRcdFx0XHRcdCAga2hvX291dC5mZHQsXG4xNjI0Olx0XHRcdFx0XHRcdCAgZmR0X3RvdGFsc2l6ZShraG9fb3V0LmZkdCksIHRydWUpKTtcbjE2MjU6XHRcbjE2MjY6XHRcdHJldHVybiAwO1xuMTYyNzpcdFxuMTYyODpcdGVycl9mcmVlX2ZkdDpcbjE2Mjk6XHRcdGtob191bnByZXNlcnZlX2ZyZWUoa2hvX291dC5mZHQpO1xuMTYzMDpcdGVycl9mcmVlX2tob19yYWRpeF90cmVlX3Jvb3Q6XG4xNjMxOlx0XHRrZnJlZSh0cmVlLVx1MDAzZXJvb3QpO1xuMTYzMjpcdFx0dHJlZS1cdTAwM2Vyb290ID0gTlVMTDtcbjE2MzM6XHRlcnJfZnJlZV9zY3JhdGNoOlxuMTYzNDpcdFx0a2hvX291dC5mZHQgPSBOVUxMO1xuMTYzNTpcdFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIGtob19zY3JhdGNoX2NudDsgaSYjNDM7JiM0MzspIHtcbjE2MzY6XHRcdFx0dm9pZCAqc3RhcnQgPSBfX3ZhKGtob19zY3JhdGNoW2ldLmFkZHIpO1xuMTYzNzpcdFx0XHR2b2lkICplbmQgPSBzdGFydCAmIzQzOyBraG9fc2NyYXRjaFtpXS5zaXplO1xuMTYzODpcdFxuMTYzOTpcdFx0XHRmcmVlX3Jlc2VydmVkX2FyZWEoc3RhcnQsIGVuZCwgLTEsIFwmIzM0O1wmIzM0Oyk7XG4xNjQwOlx0XHR9XG4xNjQxOlx0XHRraG9fZW5hYmxlID0gZmFsc2U7XG4xNjQyOlx0XHRyZXR1cm4gZXJyO1xuMTY0MzpcdH1cbjE2NDQ6XHRmc19pbml0Y2FsbChraG9faW5pdCk7XG4xNjQ1Olx0XG4xNjQ2Olx0dm9pZCBfX2luaXQga2hvX21lbW9yeV9pbml0KHZvaWQpXG4xNjQ3Olx0e1xuMTY0ODpcdFx0aWYgKGtob19pbi5zY3JhdGNoX3BoeXMpIHtcbjE2NDk6XHRcdFx0a2hvX3NjcmF0Y2ggPSBwaHlzX3RvX3ZpcnQoa2hvX2luLnNjcmF0Y2hfcGh5cyk7XG4xNjUwOlx0XG4xNjUxOlx0XHRcdGlmIChraG9fbWVtX3JldHJpZXZlKGtob19nZXRfZmR0KCkpKVxuMTY1MjpcdFx0XHRcdGtob19pbi5mZHRfcGh5cyA9IDA7XG4xNjUzOlx0XHR9IGVsc2Uge1xuMTY1NDpcdFx0XHRraG9fcmVzZXJ2ZV9zY3JhdGNoKCk7XG4xNjU1Olx0XHR9XG4xNjU2Olx0fVxuMTY1NzpcdFxuMTY1ODpcdHZvaWQgX19pbml0IGtob19wb3B1bGF0ZShwaHlzX2FkZHJfdCBmZHRfcGh5cywgdTY0IGZkdF9sZW4sXG4xNjU5Olx0XHRcdFx0IHBoeXNfYWRkcl90IHNjcmF0Y2hfcGh5cywgdTY0IHNjcmF0Y2hfbGVuKVxuMTY2MDpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDM6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1OTAKCQkJCQkJCW91dHB1dDogMTYyCgkJCQkJCQl0aG91Z2h0czogMTAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQ6IGBraG9fb3V0X2ZkdF9zZXR1cGAqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBxdWlja2x5IGFzc2VzcyBpZiB0aGlzIHBhdGNoIGluIGBraG9fb3V0X2ZkdF9zZXR1cGDigJRjYWxsZWQgYnkgYGtob19pbml0YCwgd2hpY2ggaXMgYW4gYGZzX2luaXRjYWxsYOKAlG1lcml0ZWQgZnV6emluZy4gVGhlIGtleSBoZXJlIGlzIHRoYXQgaXQgcnVucyBhdCBib290LiBTeXprYWxsZXIsIGluIGl0cyBzdGFuZGFyZCBjb25maWd1cmF0aW9uLCB0eXBpY2FsbHkgZG9lc24mIzM5O3QgdGFyZ2V0IGJvb3QtdGltZSBjb2RlIHVubGVzcyB0aGVyZSYjMzk7cyBhIGNsZWFyIHBhdGh3YXkgdG8gdHJpZ2dlciBpdCBsYXRlciwgbGlrZSB0aHJvdWdoIG1vZHVsZSBsb2FkaW5nLgoKQnV0IHdhaXQsIGBraG9faW5pdGAgaXMgYSBzZXQtYW5kLWZvcmdldCBmdW5jdGlvbiEgSXQmIzM5O3Mgbm90IHRha2luZyBhbnkgdXNlciBpbnB1dC4gSXQmIzM5O3MganVzdCBzZXR0aW5nIHVwIHNvbWUgRkRUIHByb3BlcnRpZXMuIE9rYXksIGRpZ2dpbmcgZGVlcGVyLCB0aGUgd29yayBpcyBkb25lIHdpdGhpbiB0aGUgbGliZmR0IGxpYnJhcnkgZnVuY3Rpb25zIChgZmR0X2NyZWF0ZWAsIGBmZHRfZmluaXNoX3Jlc2VydmVtYXBgLCBldGMuKS4gVGhlIHBhdGNoIGlzIHNpbXBseSBhZGRpbmcgbW9yZSBleHBsaWNpdCBlcnJvciBoYW5kbGluZyBhcm91bmQgdGhvc2UgbGliZmR0IGNhbGxzLiBTdGlsbCwgbm8gdXNlciBpbnB1dCwganVzdCBpbnRlcm5hbCBvcGVyYXRpb25zLgoKYGtob19vdXRfZmR0X3NldHVwYCBjcmVhdGVzIGEgbmV3IEZEVCBpbiBga2hvX291dC5mZHRgLiBUaGlzIEZEVCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGtob19hbGxvY19wcmVzZXJ2ZWAuIEl0IGFwcGVhcnMgdG8gYmUgYW4gZW1wdHkgRkRULCB3aXRoIGEgc2luZ2xlIGBjb21wYXRpYmxlYCBwcm9wZXJ0eSBhbmQgYSBtZW1vcnkgbWFwLiBObyB1c2VyIGludGVyYWN0aW9uIGhlcmUgYXQgYWxsLCBpdCYjMzk7cyBhbGwgc3RhdGljLgoKQ291bGQgdGhpcyBmYWlsPyBQb3RlbnRpYWxseSwgYGZkdF9jcmVhdGVgIGNvdWxkIGZhaWwgaWYgdGhlIGFsbG9jYXRlZCBidWZmZXIgKGBQQUdFX1NJWkVgKSBpcyB0b28gc21hbGwuIEJ1dCB0aGF0JiMzOTtzIGhpZ2hseSB1bmxpa2VseSB3aXRoIGFuIGVtcHR5IEZEVDsgYFBBR0VfU0laRWAgaXMgbW9yZSB0aGFuIHN1ZmZpY2llbnQuIFRoZSBwYXRjaCBtYWlubHkgYWRkcyBleHBsaWNpdCBlcnJvciBjaGVja2luZyB0byB0aGUgbGliZmR0IGNhbGxzLgoKU28sIHNpbmNlIHRoaXMgY29kZSBpcyBvbmx5IHJ1biBhdCBib290LCBkb2VzbiYjMzk7dCB0YWtlIGlucHV0LCBhbmQgaXMganVzdCBjb25zdHJ1Y3RpbmcgYSBzdGF0aWMgRkRUIHN0cnVjdHVyZSwgSSYjMzk7bSBwcmV0dHkgY29uZmlkZW50IHRoYXQgaXQmIzM5O3MgY29tcGxldGVseSB1bnJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgZHVyaW5nIG5vcm1hbCBleGVjdXRpb24gYW5kIHRodXMsIG5vdCBkeW5hbWljYWxseSBmdXp6YWJsZS4gSXQmIzM5O3Mgbm90IHdvcnRoIHRoZSBlZmZvcnQuCgpMZXQgbWUgZG91YmxlLWNoZWNrIGZvciBhbnkgaG9va3MsIHN5c2ZzIG9yIGRlYnVnZnMgbWlnaHQgcHJvdmlkZSBhbiB1bmV4cGVjdGVkIHdheSB0byBhY2Nlc3MgdGhpcy4gTm90aGluZyB0byBiZSBmb3VuZCwgYGtob19pbml0YCBpcyBhbiBgZnNfaW5pdGNhbGxgIGFuZCBydW5zIGV4YWN0bHkgb25jZS4gSSYjMzk7dmUgZ3JlcHBlZCBmb3IgYGtob19vdXRfZmR0X3NldHVwYCBhbmQgY29uZmlybWVkIHRoZSBjYWxsc2l0ZS4gQW5kIGl0JiMzOTtzIGJ1aWx0LWluLCBzbyBubyBtb2R1bGUgcmVsb2FkaW5nLiBJdCYjMzk7cyBydW4gZXhhY3RseSBvbmNlIGF0IGJvb3QuIFN5emthbGxlciBpcyBub3QgZ29pbmcgdG8gYmUgYWJsZSB0byByZWFjaCB0aGlzLgoKQWxyaWdodCwgbGV0JiMzOTtzIHJldmlldyB0aGUgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBjcml0ZXJpYS4gVGhlIGNoYW5nZXMgaGVyZSBhcmUgbm90IHJlbGF0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29kZSBjb21tZW50cywgb3IgZGVjb3JhdGl2ZSBsb2dnaW5nLiBUaGV5IGFyZW4mIzM5O3QgbnVtZXJpYyBjb25zdGFudHMgdGhhdCBjaGFuZ2UgZXhlY3V0aW9uIGZsb3cuIEFuZCBjcnVjaWFsbHksIHRoaXMgY29kZSBwYXRoIGlzIGVmZmVjdGl2ZWx5IGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gSXQgcnVucyBkdXJpbmcgYm9vdCwgaXMgdW5yZWFjaGFibGUsIGFuZCBoYXMgbm8gdXNlci1zcGFjZSBpbnB1dC4KClllcywgYm9vdC10aW1lIGNvZGUgKmlzKiBjb25zaWRlcmVkICYjMzQ7aW1wb3NzaWJsZSB0byByZWFjaCYjMzQ7IGluIHRoZSBjb250ZXh0IG9mIHRoZSBmdXp6ZXIgKHN5emthbGxlcikgYmVjYXVzZSBib290LXRpbWUgZXhlY3V0aW9uIG9jY3VycyBiZWZvcmUgdGhlIGZ1enppbmcgbG9vcCBzdGFydHMuIFRoZSBmdXp6ZXIgY2Fubm90IGNvbnRyb2wgaXQuIFRoaXMgZnVuY3Rpb24gaGFzIG5vIGRhdGEgZGVwZW5kZW5jeSBvbiB1c2VyIHNwYWNlIG9yIGV4dGVybmFsIGRldmljZXMsIGZ1cnRoZXIgc29saWRpZnlpbmcgdGhpcyBjb25jbHVzaW9uLgoKU28sIHRoZSBkZWZpbml0aXZlIGFuc3dlciBpcyAqbm90IHdvcnRoIGZ1enppbmcqLgoKTGV0IG1lIHN1bW1hcml6ZSB0aGUgcmVhc29uaW5nIGluIGRldGFpbC4gVGhlIHBhdGNoIG1vZGlmaWVzIGBraG9fb3V0X2ZkdF9zZXR1cGAgaW4gYGtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNgIHRvIGFkZCBwcm9wZXIgZXJyb3IgY2hlY2tpbmcgdG8gbGliZmR0IGNhbGxzLiBUaGlzIGZ1bmN0aW9uIGlzIG1hcmtlZCBhcyBgX19pbml0YCBhbmQgaXMgb25seSBjYWxsZWQgb25jZSBkdXJpbmcga2VybmVsIGJvb3QgdmlhIGBmc19pbml0Y2FsbChraG9faW5pdClgLiBJdCB0YWtlcyBubyB1c2VyIGlucHV0IGFuZCBzaW1wbHkgaW5pdGlhbGl6ZXMgYSBzdGF0aWMgRmxhdHRlbmVkIERldmljZSBUcmVlIChGRFQpIGluIGEgcHJlLWFsbG9jYXRlZCBidWZmZXIuIEJlY2F1c2UgaXQgaXMgZXhlY3V0ZWQgb25seSBvbmNlIGF0IGJvb3QgdGltZSBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciBpbmZsdWVuY2VkIGJ5IHVzZXIgc3BhY2UgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24sIGl0IGlzIG5vdCByZWFjaGFibGUgYnkgdGhlIGZ1enplciBhbmQgdGhlcmVmb3JlIG5vdCB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBraG9fb3V0X2ZkdF9zZXR1cGAgaW4gYGtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNgIHRvIGFkZCBwcm9wZXIgZXJyb3IgY2hlY2tpbmcgdG8gbGliZmR0IGNhbGxzLiBUaGlzIGZ1bmN0aW9uIGlzIG1hcmtlZCBhcyBgX19pbml0YCBhbmQgaXMgb25seSBjYWxsZWQgb25jZSBkdXJpbmcga2VybmVsIGJvb3QgdmlhIGBmc19pbml0Y2FsbChraG9faW5pdClgLiBJdCB0YWtlcyBubyB1c2VyIGlucHV0IGFuZCBzaW1wbHkgaW5pdGlhbGl6ZXMgYSBzdGF0aWMgRmxhdHRlbmVkIERldmljZSBUcmVlIChGRFQpIGluIGEgcHJlLWFsbG9jYXRlZCBidWZmZXIuIEJlY2F1c2UgaXQgaXMgZXhlY3V0ZWQgb25seSBvbmNlIGF0IGJvb3QgdGltZSBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciBpbmZsdWVuY2VkIGJ5IHVzZXIgc3BhY2UgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24sIGl0IGlzIG5vdCByZWFjaGFibGUgYnkgdGhlIGZ1enplciBhbmQgdGhlcmVmb3JlIG5vdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGtob19vdXRfZmR0X3NldHVwYCBpbiBga2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY2AgdG8gYWRkIHByb3BlciBlcnJvciBjaGVja2luZyB0byBsaWJmZHQgY2FsbHMuIFRoaXMgZnVuY3Rpb24gaXMgbWFya2VkIGFzIGBfX2luaXRgIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIGR1cmluZyBrZXJuZWwgYm9vdCB2aWEgYGZzX2luaXRjYWxsKGtob19pbml0KWAuIEl0IHRha2VzIG5vIHVzZXIgaW5wdXQgYW5kIHNpbXBseSBpbml0aWFsaXplcyBhIHN0YXRpYyBGbGF0dGVuZWQgRGV2aWNlIFRyZWUgKEZEVCkgaW4gYSBwcmUtYWxsb2NhdGVkIGJ1ZmZlci4gQmVjYXVzZSBpdCBpcyBleGVjdXRlZCBvbmx5IG9uY2UgYXQgYm9vdCB0aW1lIGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIG9yIGluZmx1ZW5jZWQgYnkgdXNlciBzcGFjZSBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiwgaXQgaXMgbm90IHJlYWNoYWJsZSBieSB0aGUgZnV6emVyIGFuZCB0aGVyZWZvcmUgbm90IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzoxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MDk6NTguMzkzNDg1NTk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA2NjY5NDkzMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBga2hvX291dF9mZHRfc2V0dXBgIGluIGBrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jYCB0byBhZGQgcHJvcGVyIGVycm9yIGNoZWNraW5nIHRvIGxpYmZkdCBjYWxscy4gVGhpcyBmdW5jdGlvbiBpcyBtYXJrZWQgYXMgYF9faW5pdGAgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2UgZHVyaW5nIGtlcm5lbCBib290IHZpYSBgZnNfaW5pdGNhbGwoa2hvX2luaXQpYC4gSXQgdGFrZXMgbm8gdXNlciBpbnB1dCBhbmQgc2ltcGx5IGluaXRpYWxpemVzIGEgc3RhdGljIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSAoRkRUKSBpbiBhIHByZS1hbGxvY2F0ZWQgYnVmZmVyLiBCZWNhdXNlIGl0IGlzIGV4ZWN1dGVkIG9ubHkgb25jZSBhdCBib290IHRpbWUgYW5kIGNhbm5vdCBiZSB0cmlnZ2VyZWQgb3IgaW5mbHVlbmNlZCBieSB1c2VyIHNwYWNlIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLCBpdCBpcyBub3QgcmVhY2hhYmxlIGJ5IHRoZSBmdXp6ZXIgYW5kIHRoZXJlZm9yZSBub3Qgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAzOjA5OjU4LjM5MzQ5MjQ5NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg2NjQ1Njc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgN2UxNjViMmQzMjEwYzczM2MzZDNlOGQ4OTc0MzgzOWQ3MTI4M2VhMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAyNCAwMzowOTo1NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jIGIva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1xcbmluZGV4IDE3NWMwOGE2ZTQxZTMuLjkzNDQzYWQ4NDUzZDIgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1xcbisrKyBiL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcXG5AQCAtMTQzOCwyMCArMTQzOCwzNCBAQCBzdGF0aWMgX19pbml0IGludCBraG9fb3V0X2ZkdF9zZXR1cCh2b2lkKVxcbiBcXHRpbnQgZXJyO1xcbiBcXG4gXFx0ZXJyID0gZmR0X2NyZWF0ZShyb290LCBQQUdFX1NJWkUpO1xcbi1cXHRlcnIgfD0gZmR0X2ZpbmlzaF9yZXNlcnZlbWFwKHJvb3QpO1xcbi1cXHRlcnIgfD0gZmR0X2JlZ2luX25vZGUocm9vdCwgXFxcIlxcXCIpO1xcbi1cXHRlcnIgfD0gZmR0X3Byb3BlcnR5X3N0cmluZyhyb290LCBcXFwiY29tcGF0aWJsZVxcXCIsIEtIT19GRFRfQ09NUEFUSUJMRSk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcdGVyciA9IGZkdF9maW5pc2hfcmVzZXJ2ZW1hcChyb290KTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0ZXJyID0gZmR0X2JlZ2luX25vZGUocm9vdCwgXFxcIlxcXCIpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRlcnIgPSBmZHRfcHJvcGVydHlfc3RyaW5nKHJvb3QsIFxcXCJjb21wYXRpYmxlXFxcIiwgS0hPX0ZEVF9DT01QQVRJQkxFKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuIFxcdHByZXNlcnZlZF9tZW1fdHJlZV9wYSA9IHZpcnRfdG9fcGh5cyh0cmVlLVxcdTAwM2Vyb290KTtcXG4gXFxuLVxcdGVyciB8PSBmZHRfcHJvcGVydHkocm9vdCwgS0hPX0ZEVF9NRU1PUllfTUFQX1BST1BfTkFNRSxcXG4tXFx0XFx0XFx0ICAgIFxcdTAwMjZwcmVzZXJ2ZWRfbWVtX3RyZWVfcGEsXFxuLVxcdFxcdFxcdCAgICBzaXplb2YocHJlc2VydmVkX21lbV90cmVlX3BhKSk7XFxuK1xcdGVyciA9IGZkdF9wcm9wZXJ0eShyb290LCBLSE9fRkRUX01FTU9SWV9NQVBfUFJPUF9OQU1FLFxcbitcXHRcXHRcXHQgICBcXHUwMDI2cHJlc2VydmVkX21lbV90cmVlX3BhLFxcbitcXHRcXHRcXHQgICBzaXplb2YocHJlc2VydmVkX21lbV90cmVlX3BhKSk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuIFxcbi1cXHRlcnIgfD0gZmR0X2VuZF9ub2RlKHJvb3QpO1xcbi1cXHRlcnIgfD0gZmR0X2ZpbmlzaChyb290KTtcXG4rXFx0ZXJyID0gZmR0X2VuZF9ub2RlKHJvb3QpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRlcnIgPSBmZHRfZmluaXNoKHJvb3QpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4tXFx0cmV0dXJuIGVycjtcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIF9faW5pdCBraG9faW5fa2V4ZWNfbWV0YWRhdGEodm9pZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MDk6NTguODgxNDU0NjU5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjAxNzg5NjYxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBraG9fb3V0X2ZkdF9zZXR1cGAgaW4gYGtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNgIHRvIGFkZCBwcm9wZXIgZXJyb3IgY2hlY2tpbmcgdG8gbGliZmR0IGNhbGxzLiBUaGlzIGZ1bmN0aW9uIGlzIG1hcmtlZCBhcyBgX19pbml0YCBhbmQgaXMgb25seSBjYWxsZWQgb25jZSBkdXJpbmcga2VybmVsIGJvb3QgdmlhIGBmc19pbml0Y2FsbChraG9faW5pdClgLiBJdCB0YWtlcyBubyB1c2VyIGlucHV0IGFuZCBzaW1wbHkgaW5pdGlhbGl6ZXMgYSBzdGF0aWMgRmxhdHRlbmVkIERldmljZSBUcmVlIChGRFQpIGluIGEgcHJlLWFsbG9jYXRlZCBidWZmZXIuIEJlY2F1c2UgaXQgaXMgZXhlY3V0ZWQgb25seSBvbmNlIGF0IGJvb3QgdGltZSBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciBpbmZsdWVuY2VkIGJ5IHVzZXIgc3BhY2UgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24sIGl0IGlzIG5vdCByZWFjaGFibGUgYnkgdGhlIGZ1enplciBhbmQgdGhlcmVmb3JlIG5vdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2UxNjViMmQzMjEwYzczM2MzZDNlOGQ4OTc0MzgzOWQ3MTI4M2VhMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDAzOjA5OjU3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYyBiL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcbmluZGV4IDE3NWMwOGE2ZTQxZTMuLjkzNDQzYWQ4NDUzZDIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jXG4rKysgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jXG5AQCAtMTQzOCwyMCArMTQzOCwzNCBAQCBzdGF0aWMgX19pbml0IGludCBraG9fb3V0X2ZkdF9zZXR1cCh2b2lkKVxuIFx0aW50IGVycjtcbiBcbiBcdGVyciA9IGZkdF9jcmVhdGUocm9vdCwgUEFHRV9TSVpFKTtcbi1cdGVyciB8PSBmZHRfZmluaXNoX3Jlc2VydmVtYXAocm9vdCk7XG4tXHRlcnIgfD0gZmR0X2JlZ2luX25vZGUocm9vdCwgXCJcIik7XG4tXHRlcnIgfD0gZmR0X3Byb3BlcnR5X3N0cmluZyhyb290LCBcImNvbXBhdGlibGVcIiwgS0hPX0ZEVF9DT01QQVRJQkxFKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXHRlcnIgPSBmZHRfZmluaXNoX3Jlc2VydmVtYXAocm9vdCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1x0ZXJyID0gZmR0X2JlZ2luX25vZGUocm9vdCwgXCJcIik7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1x0ZXJyID0gZmR0X3Byb3BlcnR5X3N0cmluZyhyb290LCBcImNvbXBhdGlibGVcIiwgS0hPX0ZEVF9DT01QQVRJQkxFKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4gXG4gXHRwcmVzZXJ2ZWRfbWVtX3RyZWVfcGEgPSB2aXJ0X3RvX3BoeXModHJlZS1cdTAwM2Vyb290KTtcbiBcbi1cdGVyciB8PSBmZHRfcHJvcGVydHkocm9vdCwgS0hPX0ZEVF9NRU1PUllfTUFQX1BST1BfTkFNRSxcbi1cdFx0XHQgICAgXHUwMDI2cHJlc2VydmVkX21lbV90cmVlX3BhLFxuLVx0XHRcdCAgICBzaXplb2YocHJlc2VydmVkX21lbV90cmVlX3BhKSk7XG4rXHRlcnIgPSBmZHRfcHJvcGVydHkocm9vdCwgS0hPX0ZEVF9NRU1PUllfTUFQX1BST1BfTkFNRSxcbitcdFx0XHQgICBcdTAwMjZwcmVzZXJ2ZWRfbWVtX3RyZWVfcGEsXG4rXHRcdFx0ICAgc2l6ZW9mKHByZXNlcnZlZF9tZW1fdHJlZV9wYSkpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGVyciB8PSBmZHRfZW5kX25vZGUocm9vdCk7XG4tXHRlcnIgfD0gZmR0X2ZpbmlzaChyb290KTtcbitcdGVyciA9IGZkdF9lbmRfbm9kZShyb290KTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXHRlcnIgPSBmZHRfZmluaXNoKHJvb3QpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbiBcbi1cdHJldHVybiBlcnI7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgX19pbml0IGtob19pbl9rZXhlY19tZXRhZGF0YSh2b2lkKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MDk6NTguODgxNDU3MDk5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE2NDMyMzA4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IEZEVCBTZXR1cCBmb3IgTGl2ZSBVcGRhdGUqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jYCwgc3BlY2lmaWNhbGx5IHRoZSBga2hvX291dF9mZHRfc2V0dXBgIGZ1bmN0aW9uLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxvb2tzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0J3MgcmVwbGFjaW5nIGVycm9yIGFjY3VtdWxhdGlvbiB3aXRoIGltbWVkaWF0ZSBlcnJvciByZXR1cm5zIHdpdGhpbiB0aGUgRmxhdCBEZXZpY2UgVHJlZSAoRkRUKSBzZXR1cC4gSW5zdGVhZCBvZiBoYXZpbmcgbXVsdGlwbGUgYGVyciB8PSBmZHRfLi4uYCBsaW5lcywgaXQncyBub3cgYGVyciA9IGZkdF8uLi47IGlmIChlcnIpIHJldHVybiBlcnI7YC5cblxuVGhpcyBpcyBpbnRlcmVzdGluZy4gVGhlIHByZXZpb3VzIGFwcHJvYWNoIG9mIGNvbnRpbnVpbmcgZXhlY3V0aW9uIGFmdGVyIGFuIEZEVCBmdW5jdGlvbiBmYWlscyBpcyBkZWZpbml0ZWx5IHJpc2t5LiBBY2N1bXVsYXRpbmcgZXJyb3JzIGFuZCBwdXNoaW5nIGZvcndhcmQgY291bGQgYWJzb2x1dGVseSBsZWFkIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBvciBldmVuIG91dHJpZ2h0IGNyYXNoZXMgZG93bnN0cmVhbSBpZiBgZmR0X2NyZWF0ZWAgYmFpbHMgb3V0LCBidXQgc3Vic2VxdWVudCBjb2RlIHRoYXQgZXhwZWN0cyBhIHZhbGlkIEZEVCBzdHJ1Y3R1cmUgY29udGludWVzIHRvIHJ1bi4gVGhpcyBpcyBhIGNsYXNzaWMgZXhhbXBsZSBvZiBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIHByZXZlbnRpbmcgY2FzY2FkaW5nIGZhaWx1cmVzLiBBIHNpbmdsZSBgZmR0YCBmYWlsdXJlIHNob3VsZCBoYWx0IHRoZSBwcm9jZXNzLlxuXG5Ob3csIEkgd2FudCB0byB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSBpdHNlbGYuIExldCBtZSBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIGhvdyBga2hvX291dF9mZHRfc2V0dXBgIGlzIGFjdHVhbGx5IHVzZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCByZWFsbHkgaGVscCBtZSBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSBhbmQgd2hldGhlciBpdCdzIHRydWx5IGEgY3JpdGljYWwgaW1wcm92ZW1lbnQgZm9yIHN0YWJpbGl0eSBkdXJpbmcgbGl2ZSB1cGRhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzY2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MTA6MDQuMDQ1NzgyMTExWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MTM1NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImtob19vdXRfZmR0X3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYz0xNDExPXN0YXRpYyBpbnQgX19pbml0IGtob19tZW1fcmV0cmlldmUoY29uc3Qgdm9pZCAqZmR0KVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDMyLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTQzMzpzdGF0aWMgX19pbml0IGludCBraG9fb3V0X2ZkdF9zZXR1cCh2b2lkKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTQzNC17XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE1NjE9c3RhdGljIF9faW5pdCBpbnQga2hvX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTU4OS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE1OTA6XFx0ZXJyID0ga2hvX291dF9mZHRfc2V0dXAoKTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE1OTEtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MTA6MDQuMTIxOTI2MTE5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyMTgzMTk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgS0hPIEluaXRpYWxpemF0aW9uIFNlcXVlbmNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGtob19vdXRfZmR0X3NldHVwYCBoZXJlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQncyBjYWxsZWQgZnJvbSBga2hvX2luaXRgLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUbyByZWFsbHkgdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nLCBJIG5lZWQgdG8gdHJhY2UgdGhlIGZsb3cuIFNvLCBJIG5lZWQgdG8gZGlnIGludG8gYGtob19pbml0YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgdGhlIGluaXRpYWxpemF0aW9uIGlzIHNlcXVlbmNlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBgZmR0X3NldHVwYCBjYWxsLiBXaGF04oCZcyB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSB3aGVuIGBraG9fb3V0X2ZkdF9zZXR1cGAgaXMgdHJpZ2dlcmVkPyBXaGF0IGtleSBkYXRhIGlzIGluaXRpYWxpemVkIGJlZm9yZSwgb3IgcG90ZW50aWFsbHkgdXNlZCBhZnRlcj8gR290dGEgdW5kZXJzdGFuZCB0aGF0IHJlbGF0aW9uc2hpcC4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBwYXJ0aWN1bGFyIGBmZHRfc2V0dXBgIGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBLSE8gc3lzdGVtIHN0YXJ0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMzoxMDowNy4yNDM3NjIxNDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgxOTA4MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2hvX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTM2OD1FWFBPUlRfU1lNQk9MX0dQTChraG9fcmFkaXhfd2Fsa190cmVlKTtcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzcwLS8qIEZvciBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgMC1vcmRlciBwYWdlcy4gKi9cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjM3MTpzdGF0aWMgdm9pZCBraG9faW5pdF9wYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBucl9wYWdlcylcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTM3Mi17XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTM3OS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjM4MDpzdGF0aWMgdm9pZCBraG9faW5pdF9mb2xpbyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzgxLXtcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9Mzk3PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqa2hvX3Jlc3RvcmVfcGFnZShwaHlzX2FkZHJfdCBwaHlzLCBib29sIGlzX2ZvbGlvKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00MTktXFx0aWYgKGlzX2ZvbGlvKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6NDIwOlxcdFxcdGtob19pbml0X2ZvbGlvKHBhZ2UsIGluZm8ub3JkZXIpO1xcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDIxLVxcdGVsc2VcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjQyMjpcXHRcXHRraG9faW5pdF9wYWdlcyhwYWdlLCBucl9wYWdlcyk7XFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00MjMtXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE1NDU9c3RhdGljIGludCBfX2luaXQga2hvX2tleGVjX21ldGFkYXRhX2luaXQoY29uc3Qgdm9pZCAqZmR0KVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNTYwLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTU2MTpzdGF0aWMgX19pbml0IGludCBraG9faW5pdCh2b2lkKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTU2Mi17XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE2NDMtfVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTY0NDpmc19pbml0Y2FsbChraG9faW5pdCk7XFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNjQ1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMzoxMDowNy4zMjE5NTkzNDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzA2MjMwMDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS0hPIEluaXRpYWxpemF0aW9uIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBga2hvX2luaXRgIGlzIGFuIGBmc19pbml0Y2FsbGAsIG1lYW5pbmcgaXQncyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSBzeXN0ZW0gYm9vdCBzZXF1ZW5jZS4gQW5kIGhhbmcgb24sIGBraG9fb3V0X2ZkdF9zZXR1cGAgaXMgbWFya2VkIGFzIGBfX2luaXRgPyBUaGF0J3MgdHlwaWNhbGx5IGEgcmVkIGZsYWcgZm9yIGZ1enppbmcsIGlzbid0IGl0PyBUaGVzZSBraW5kcyBvZiBmdW5jdGlvbnMgYXJlIGRlc2lnbmVkIHRvIHJ1biBvbmNlLCBhdCBib290IHRpbWUsIGFuZCBhcmVuJ3QgZ2VuZXJhbGx5IGFjY2Vzc2libGUgZnJvbSB1c2VyIHNwYWNlLCB3aGljaCBpcyB3aGVyZSB3ZSB0eXBpY2FsbHkgZm9jdXMgb3VyIGZ1enppbmcgZWZmb3J0cyDigJMgc3lzY2FsbHMsIGlvY3RscywgbmV0d29yayBwYWNrZXRzLCBldGMuIFN5emthbGxlciAqZG9lcyogc29tZXRpbWVzIGxvb2sgYXQgYm9vdC10aW1lIHN0dWZmIGlmIGl0J3MgdGllZCB0byBkZXZpY2UgdHJlZXMgb3IgcmVsYXRlZCBpbml0aWFsaXphdGlvbnMsIGJ1dCBnZW5lcmFsbHksIGBfX2luaXRgIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgb25jZSBhbmQgdGhlbiBmb3Jnb3R0ZW4uXG5cbkhtbSwgYGtob19vdXRfZmR0X3NldHVwYCBpcyBjYWxsZWQgZnJvbSBga2hvX2luaXRgLCBhbmQgYGtob19pbml0YCBpcyBjYWxsZWQgdmlhIGBmc19pbml0Y2FsbChraG9faW5pdClgLiBTbywgdGhlIGVudGlyZSBjaGFpbiBleGVjdXRlcyBkdXJpbmcga2VybmVsIGluaXRpYWxpemF0aW9uLiBDYW4gSSB0cmlnZ2VyIHRoaXMgc2VxdWVuY2UgZnJvbSB1c2VyIHNwYWNlIGRpcmVjdGx5PyBObywgZGVmaW5pdGVseSBub3QuIGBmc19pbml0Y2FsbGAgbWVhbnMgaXQgcnVucyBiZWZvcmUgZXZlbiB1c2VyIHNwYWNlIGlzIGluaXRpYWxpemVkLlxuXG5XYWl0LCB3aGF0IGFib3V0IGtleGVjPyBDb3VsZCBhIGtlcm5lbCBpbWFnZSByZWxvYWQgc29tZWhvdyB0cmlnZ2VyIHRoaXM/IEl0J3Mgd29ydGggaW52ZXN0aWdhdGluZy4gTGV0IG1lIHNlZSBpZiBga2hvX291dF9mZHRfc2V0dXBgIGlzIHVzZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggY29tcGxldGVseSB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODY5LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAzOjEwOjEzLjAyODE5MjAwMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTkyNzc4NjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImtob19vdXRfZmR0X3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE0MTE9c3RhdGljIGludCBfX2luaXQga2hvX21lbV9yZXRyaWV2ZShjb25zdCB2b2lkICpmZHQpXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE0MzItXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNDMzOnN0YXRpYyBfX2luaXQgaW50IGtob19vdXRfZmR0X3NldHVwKHZvaWQpXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDM0LXtcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MTU2MT1zdGF0aWMgX19pbml0IGludCBraG9faW5pdCh2b2lkKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNTg5LVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTU5MDpcXHRlcnIgPSBraG9fb3V0X2ZkdF9zZXR1cCgpO1xcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTU5MS1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMzoxMDoxNS42MjA5NzYwMzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njc3NjEzOTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBraG9fb3V0X2ZkdF9zZXR1cGAgRHVyaW5nIEtleGVjIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGlzIGBraG9fb3V0X2ZkdF9zZXR1cGAgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYGtob19pbml0YCwgd2hpY2ggaXMsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgYW4gYGZzX2luaXRjYWxsYC4gVGhhdCBtZWFucyBpdCdzIGFuIGBfX2luaXRgIGZ1bmN0aW9uLCBzbyBpdHMgbWVtb3J5IGlzIGZyZWVkIGFmdGVyIHRoZSBib290IHByb2Nlc3MuIEl0IHdvdWxkbid0IGJlIGFjY2Vzc2libGUgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24sIG9yLCBpbXBvcnRhbnRseSwgZHVyaW5nIGEgZnV6emluZyBsb29wLiBOb3csIGRvZXMgU3l6a2FsbGVyIGV2ZW4gdHJ5IHRvIGZ1enogYGtleGVjYD8gWWVzLCBvZiBjb3Vyc2UgaXQgZG9lcywgdGhyb3VnaCBga2V4ZWNfbG9hZGAgYW5kIGBrZXhlY19maWxlX2xvYWRgIHN5c2NhbGxzLiBCdXQgc2luY2UgYGtob19pbml0YCBpcyBhbiBgZnNfaW5pdGNhbGxgLCBpdCBydW5zICpvbmx5KiBhdCBib290LlxuXG5TbywgdGhlIHF1ZXN0aW9uIGlzOiBpcyBga2hvX291dF9mZHRfc2V0dXBgIHJlYWNoYWJsZSB2aWEgYSBrZXhlYyBzZXF1ZW5jZT8gTm8sIGxvZ2ljYWxseSwgaXQgc2hvdWxkbid0IGJlLiBJdCdzIG1hcmtlZCBhcyBgX19pbml0YCwgc28gaXQgZ2V0cyBkaXNjYXJkZWQgcG9zdC1ib290LiBUaGF0IG1lYW5zIGl0IGFic29sdXRlbHkgKmNhbm5vdCogYmUgY2FsbGVkIGR1cmluZyBhIGtleGVjIGV4ZWN1dGlvbi5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2gsIHRoYXQgYGtob19pbml0YCByZWFsbHkgaXMgYW4gYGZzX2luaXRjYWxsYC4gWXVwLCBgZnNfaW5pdGNhbGwoa2hvX2luaXQpO2AgY29uZmlybXMgaXQuIFNvLCBga2hvX291dF9mZHRfc2V0dXBgIGV4ZWN1dGVzIHByZWNpc2VseSBvbmNlLCBhdCBib290LlxuXG5HZW5lcmFsbHkgc3BlYWtpbmcsIFN5emthbGxlciBkb2Vzbid0IGR5bmFtaWNhbGx5IGZ1enogYm9vdCBjb2RlIGR1cmluZyBpdHMgbm9ybWFsIGZ1enppbmcgbG9vcCB1bmxlc3MgaXQncyB0cmlnZ2VyZWQgYnkgYSBtb2R1bGUgbG9hZCBvciBzb21ldGhpbmcgc2ltaWxhci4gQnV0IHRoaXMgaXMgYnVpbHQtaW4gKGBmc19pbml0Y2FsbGApLCBzbyBpdCdzIGEgY29tcGxldGVseSBkaWZmZXJlbnQgc2l0dWF0aW9uLiBPbmUgbGFzdCB0aG91Z2h0OiBpcyBga2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY2AgYSBtb2R1bGU/IExldCBtZSBjaGVjayBpdHMgYE1ha2VmaWxlYCBvciBgS2NvbmZpZ2AgZm9yIGNvbmZpcm1hdGlvbiwganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjQ3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAzOjEwOjIyLjI5ODU5MzI2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTcyNTQyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrZXhlY19oYW5kb3ZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvbGl2ZXVwZGF0ZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2xpdmV1cGRhdGUvTWFrZWZpbGU9Mz1sdW8teSA6PVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL01ha2VmaWxlLTktXFxua2VybmVsL2xpdmV1cGRhdGUvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0tFWEVDX0hBTkRPVkVSKVxcdFxcdCs9IGtleGVjX2hhbmRvdmVyLm9cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfS0VYRUNfSEFORE9WRVJfREVCVUcpXFx0Kz0ga2V4ZWNfaGFuZG92ZXJfZGVidWcub1xcbmtlcm5lbC9saXZldXBkYXRlL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19LRVhFQ19IQU5ET1ZFUl9ERUJVR0ZTKVxcdCs9IGtleGVjX2hhbmRvdmVyX2RlYnVnZnMub1xcbmtlcm5lbC9saXZldXBkYXRlL01ha2VmaWxlLTEzLVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0yLS8qXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzozOiAqIGtleGVjX2hhbmRvdmVyLmMgLSBrZXhlYyBoYW5kb3ZlciBtZXRhZGF0YSBwcm9jZXNzaW5nXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00LSAqIENvcHlyaWdodCAoQykgMjAyMyBBbGV4YW5kZXIgR3JhZiBcXHUwMDNjZ3JhZkBhbWF6b24uY29tXFx1MDAzZVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xOC0jaW5jbHVkZSBcXHUwMDNjbGludXgva2V4ZWMuaFxcdTAwM2VcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE5OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXhlY19oYW5kb3Zlci5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMjAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tob19yYWRpeF90cmVlLmhcXHUwMDNlXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0yMS0jaW5jbHVkZSBcXHUwMDNjbGludXgvdXRzbmFtZS5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MjI6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2toby9hYmkva2V4ZWNfaGFuZG92ZXIuaFxcdTAwM2VcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTIzLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9raG8vYWJpL2tleGVjX21ldGFkYXRhLmhcXHUwMDNlXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTM4LSNpbmNsdWRlIFxcXCIuLi9rZXhlY19pbnRlcm5hbC5oXFxcIlxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6Mzk6I2luY2x1ZGUgXFxcImtleGVjX2hhbmRvdmVyX2ludGVybmFsLmhcXFwiXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00MC1cXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnLmMtMi0vKlxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnLmM6MzogKiBrZXhlY19oYW5kb3Zlcl9kZWJ1Zy5jIC0ga2V4ZWMgaGFuZG92ZXIgb3B0aW9uYWwgZGVidWcgZnVuY3Rpb25hbGl0eVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnLmMtNC0gKiBDb3B5cmlnaHQgKEMpIDIwMjUgR29vZ2xlIExMQywgUGFzaGEgVGF0YXNoaW4gXFx1MDAzY3Bhc2hhLnRhdGFzaGluQHNvbGVlbi5jb21cXHUwMDNlXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Zy5jLTgtXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfZGVidWcuYzo5OiNpbmNsdWRlIFxcXCJrZXhlY19oYW5kb3Zlcl9pbnRlcm5hbC5oXFxcIlxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnLmMtMTAtXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Z2ZzLmMtMi0vKlxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnZnMuYzozOiAqIGtleGVjX2hhbmRvdmVyX2RlYnVnZnMuYyAtIGtleGVjIGhhbmRvdmVyIGRlYnVnZnMgaW50ZXJmYWNlc1xcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnZnMuYy00LSAqIENvcHlyaWdodCAoQykgMjAyMyBBbGV4YW5kZXIgR3JhZiBcXHUwMDNjZ3JhZkBhbWF6b24uY29tXFx1MDAzZVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfZGVidWdmcy5jLTE1LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbS5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnZnMuYzoxNjojaW5jbHVkZSBcXHUwMDNjbGludXgva2hvL2FiaS9rZXhlY19oYW5kb3Zlci5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnZnMuYzoxNzojaW5jbHVkZSBcXFwia2V4ZWNfaGFuZG92ZXJfaW50ZXJuYWwuaFxcXCJcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Z2ZzLmMtMTgtXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9pbnRlcm5hbC5oLTQtXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfaW50ZXJuYWwuaDo1OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXhlY19oYW5kb3Zlci5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2ludGVybmFsLmgtNi0jaW5jbHVkZSBcXHUwMDNjbGludXgvbGlzdC5oXFx1MDAzZVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2hvX2Jsb2NrLmMtMjMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvLmhcXHUwMDNlXFxua2VybmVsL2xpdmV1cGRhdGUva2hvX2Jsb2NrLmM6MjQ6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tleGVjX2hhbmRvdmVyLmhcXHUwMDNlXFxua2VybmVsL2xpdmV1cGRhdGUva2hvX2Jsb2NrLmMtMjUtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2toby9hYmkvYmxvY2suaFxcdTAwM2VcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19jb3JlLmMtNTMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19jb3JlLmM6NTQ6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tleGVjX2hhbmRvdmVyLmhcXHUwMDNlXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2NvcmUuYy01NS0jaW5jbHVkZSBcXHUwMDNjbGludXgva2hvL2FiaS9sdW8uaFxcdTAwM2VcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19jb3JlLmMtNjMtXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2NvcmUuYzo2NDojaW5jbHVkZSBcXFwia2V4ZWNfaGFuZG92ZXJfaW50ZXJuYWwuaFxcXCJcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fY29yZS5jLTY1LSNpbmNsdWRlIFxcXCJsdW9faW50ZXJuYWwuaFxcXCJcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMTA0LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pby5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6MTA1OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXhlY19oYW5kb3Zlci5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMTA2LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9raG8vYWJpL2x1by5oXFx1MDAzZVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZsYi5jLTQ0LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pby5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19mbGIuYzo0NTojaW5jbHVkZSBcXHUwMDNjbGludXgva2V4ZWNfaGFuZG92ZXIuaFxcdTAwM2VcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmxiLmMtNDYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2toby9hYmkvbHVvLmhcXHUwMDNlXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fc2Vzc2lvbi5jLTkxLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pby5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19zZXNzaW9uLmM6OTI6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tleGVjX2hhbmRvdmVyLmhcXHUwMDNlXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX3Nlc3Npb24uYy05My0jaW5jbHVkZSBcXHUwMDNjbGludXgva2hvX2Jsb2NrLmhcXHUwMDNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAzOjEwOjIyLjM2ODMyMzgxOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjA2NzM2NjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2V4ZWMgSGFuZG92ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYnVpbGQgZmlsZSBhbmQgaXQgc2VlbXMgdGhlIGBDT05GSUdfS0VYRUNfSEFORE9WRVJgIG9wdGlvbiBpcyB3aGF0IGNvbnRyb2xzIHdoZXRoZXIgYSBzcGVjaWZpYyBmaWxlIGdldHMgaW5jbHVkZWQuIFJpZ2h0LCBsZXQncyBzZWUsIGl0IGxvb2tzIGxpa2UgYGtleGVjX2hhbmRvdmVyLm9gIGdldHMgYWRkZWQgdG8gdGhlIGJ1aWxkIG9iamVjdCBsaXN0LiBOb3csIGlzIHRoaXMgYSBtb2R1bGU/IFRoZSBzeW50YXggaGVyZSwgYG9iai0kKENPTkZJR19LRVhFQ19IQU5ET1ZFUikgKz0ga2V4ZWNfaGFuZG92ZXIub2AsIHVzdWFsbHkgbWVhbnMgaXQncyBhIG1vZHVsZSwgYnVpbHQgaWYgdGhlIGNvbmZpZyBvcHRpb24gaXMgZW5hYmxlZC4gQnV0IHdhaXQuLi4gaWYgYENPTkZJR19LRVhFQ19IQU5ET1ZFUmAgaXMgYSBib29sZWFuLCB0aGVuIHRoaXMgd2lsbCBhbHdheXMgYmUgYnVpbHQtaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGl0IGlzLiBBbHJpZ2h0LCBiZXN0IHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBLRVhFQ19IQU5ET1ZFUmAgYW5kIGdldCBhIGRlZmluaXRpdmUgYW5zd2VyLiBJIG5lZWQgdG8gc2VlIHdoYXQgdGhhdCBjb25maWcgb3B0aW9uIGFjdHVhbGx5IGRlZmluZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MTYsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMzoxMDoyNS41NzUwNjI1ODdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzgzOTgyNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtFWEVDX0hBTkRPVkVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnPTM9bWVudSBcXFwiTGl2ZSBVcGRhdGUgYW5kIEtleGVjIEhhbmRPdmVyXFxcIlxcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctNC1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnOjU6Y29uZmlnIEtFWEVDX0hBTkRPVkVSXFxua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZy02LVxcdGJvb2wgXFxcImtleGVjIGhhbmRvdmVyXFxcIlxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZy0xNy1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnOjE4OmNvbmZpZyBLRVhFQ19IQU5ET1ZFUl9ERUJVR1xcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctMTktXFx0Ym9vbCBcXFwiRW5hYmxlIEtleGVjIEhhbmRvdmVyIGRlYnVnIGNoZWNrc1xcXCJcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctMjYtXFxua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZzoyNzpjb25maWcgS0VYRUNfSEFORE9WRVJfREVCVUdGU1xcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctMjgtXFx0Ym9vbCBcXFwia2V4ZWMgaGFuZG92ZXIgZGVidWdmcyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnLTM3LVxcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWc6Mzg6Y29uZmlnIEtFWEVDX0hBTkRPVkVSX0VOQUJMRV9ERUZBVUxUXFxua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJFbmFibGUga2V4ZWMgaGFuZG92ZXIgYnkgZGVmYXVsdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MTA6MjcuOTUzNDY3NDY1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODk3ODE5MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYGtob19vdXRfZmR0X3NldHVwYCoqXG5cbkFscmlnaHQsIGEgYGJvb2xgLiBUaGF0J3Mgc3RyYWlnaHRmb3J3YXJkOyBpdCdzIGEgZnVuZGFtZW50YWwgZGF0YSB0eXBlLCBwcm9iYWJseSBoYW5kbGVkIGVmZmljaWVudGx5IGF0IHRoZSBoYXJkd2FyZSBsZXZlbC4gTm93LCBJJ20gYXNzdW1pbmcsIGJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiwgdGhhdCBga2hvX291dF9mZHRfc2V0dXBgIGlzIGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgYW4gYF9faW5pdGAgaW4gdGhpcyBjb250ZXh0LiBJZiBzbywgdGhhdCBzdHJvbmdseSBzdWdnZXN0cyBpdCdzIGV4ZWN1dGVkIGR1cmluZyB0aGUgc3lzdGVtIGJvb3Qgc2VxdWVuY2UuIEhvd2V2ZXIsIEkgbmVlZCB0byBjb25maXJtIHRoaXMgYXNzdW1wdGlvbiBiZWZvcmUgcHJvY2VlZGluZy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyAqb25seSogY2FsbGVkIGR1cmluZyBib290LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYGtob19pbml0YCBpcywgaW4gZmFjdCwgdGhlICpzb2xlKiBjYWxsZXIuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gb2YgdGhpcyBleGVjdXRpb24gY29udGV4dCBiZWZvcmUgSSBjYW4gZWZmZWN0aXZlbHkgYXNzZXNzIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBzeXN0ZW0uIEFueSBvdGhlciBjYWxsIHBhdGhzIHdvdWxkIGRyYXN0aWNhbGx5IGNoYW5nZSBob3cgSSBhcHByb2FjaCBpdHMgYW5hbHlzaXMuIExldCBtZSBjaGVjayB0aGUgY2FsbCBncmFwaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM1NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAzOjEwOjMxLjc0MzI1MjA3NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxNzAwMzU1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJraG9fb3V0X2ZkdF9zZXR1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYz0xNDExPXN0YXRpYyBpbnQgX19pbml0IGtob19tZW1fcmV0cmlldmUoY29uc3Qgdm9pZCAqZmR0KVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDMyLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTQzMzpzdGF0aWMgX19pbml0IGludCBraG9fb3V0X2ZkdF9zZXR1cCh2b2lkKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTQzNC17XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE1NjE9c3RhdGljIF9faW5pdCBpbnQga2hvX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTU4OS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE1OTA6XFx0ZXJyID0ga2hvX291dF9mZHRfc2V0dXAoKTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE1OTEtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MTA6MzQuMDYwMjYwMjA1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzYyMTE3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBhIEtlcm5lbCBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIGNoYW5nZSBJJ20gbG9va2luZyBhdCwgaXQncyBvbmx5IGNhbGxlZCBmcm9tIGBraG9faW5pdGAsIHJpZ2h0PyBBbmQgYGtob19pbml0YCBpcyBhbiBgZnNfaW5pdGNhbGxgLCBtZWFuaW5nIGl0J3MgYSBmaWxlIHN5c3RlbSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIGEgdXNlciBzb21laG93IHRyaWdnZXIgdGhpcyBmcm9tIHVzZXJzcGFjZT8gTm8sIHRoYXQgc2VlbXMgdW5saWtlbHksIGFuZCB0aGF0J3MgZ29vZC4gTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGNoYW5nZSBoYXMgYW55IGZ1bmN0aW9uYWwgaW1wYWN0IHRoYXQncyB3b3J0aCBmdXp6aW5nLlxuXG5MZXQncyBzZWXigKYgSXQncyBhbiBgX19pbml0YCBmdW5jdGlvbiwgc28gaXQgcnVucyAqb25jZSosIGR1cmluZyBib290LiBJZiB0aGUgZnVuY3Rpb24gZW5jb3VudGVycyBhbiBlcnJvciwgaXQgcmV0dXJucyBhbiBlcnJvciB2YWx1ZS4gT2theSwgd2hhdCBoYXBwZW5zIHdoZW4gaXQgcmV0dXJucyBhbiBlcnJvcj8gV2lsbCBpdCBiZSBpZ25vcmVkLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGEgc3VidGxlIGJ1ZyBsYXRlciwgb3Igd2lsbCBpdCBjYXVzZSBhIGJvb3QgZmFpbHVyZT8gV2FpdCBhIG1pbnV0ZSwgYGtob19pbml0YCAqZG9lcyogcmV0dXJuIGFuIGVycm9yIHZhbHVlLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBhbmQgc2VlIHdoYXQgYGtob19pbml0YCBhY3R1YWxseSAqZG9lcyogd2l0aCB0aGF0IGVycm9yIHJldHVybiB2YWx1ZSB0byBkZXRlcm1pbmUgaG93IHNpZ25pZmljYW50IHRoaXMgY2hhbmdlIGFjdHVhbGx5IGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODk3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAzOjEwOjM4LjA5NjQ3NTEyMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg4NTI0OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2hvX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTM2OD1FWFBPUlRfU1lNQk9MX0dQTChraG9fcmFkaXhfd2Fsa190cmVlKTtcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzcwLS8qIEZvciBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgMC1vcmRlciBwYWdlcy4gKi9cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjM3MTpzdGF0aWMgdm9pZCBraG9faW5pdF9wYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBucl9wYWdlcylcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTM3Mi17XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTM3OS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjM4MDpzdGF0aWMgdm9pZCBraG9faW5pdF9mb2xpbyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzgxLXtcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9Mzk3PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqa2hvX3Jlc3RvcmVfcGFnZShwaHlzX2FkZHJfdCBwaHlzLCBib29sIGlzX2ZvbGlvKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00MTktXFx0aWYgKGlzX2ZvbGlvKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6NDIwOlxcdFxcdGtob19pbml0X2ZvbGlvKHBhZ2UsIGluZm8ub3JkZXIpO1xcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDIxLVxcdGVsc2VcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjQyMjpcXHRcXHRraG9faW5pdF9wYWdlcyhwYWdlLCBucl9wYWdlcyk7XFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00MjMtXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE1NDU9c3RhdGljIGludCBfX2luaXQga2hvX2tleGVjX21ldGFkYXRhX2luaXQoY29uc3Qgdm9pZCAqZmR0KVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNTYwLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTU2MTpzdGF0aWMgX19pbml0IGludCBraG9faW5pdCh2b2lkKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTU2Mi17XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE2NDMtfVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTY0NDpmc19pbml0Y2FsbChraG9faW5pdCk7XFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNjQ1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMzoxMDozOC4xNjUzMzE4NzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA5MDQzNjY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFdmFsdWF0aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBga2hvX2luaXRgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gVGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIGZ1enppbmcgc29tZXRoaW5nIGlzIGZpZ3VyZSBvdXQgaWYgaXQncyBldmVuICp3b3J0aCogdGhlIGVmZm9ydC4gSXMgYGtob19pbml0YCBhIGxpa2VseSBjYW5kaWRhdGU/IERvZXMgaXQgaGFuZGxlIGV4dGVybmFsIGlucHV0cywgcHJvY2VzcyBkYXRhLCBwZXJmb3JtIGFueSBraW5kIG9mIG5vbi10cml2aWFsIG9wZXJhdGlvbiB0aGF0IG1pZ2h0IGJlIHN1c2NlcHRpYmxlIHRvIHZ1bG5lcmFiaWxpdGllcz8gT3IgaXMgaXQganVzdCBzb21lIGludGVybmFsIHNldHVwIHJvdXRpbmUgdGhhdCdzIHVubGlrZWx5IHRvIHJldmVhbCBhbnl0aGluZyBpbnRlcmVzdGluZyB0aHJvdWdoIGZ1enppbmc/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byByZWFkIHRoZSBzb3VyY2UgY29kZSBvZiBga2hvX2luaXRgLiBBIHF1aWNrIGdsYW5jZSBzaG91bGQgdGVsbCBtZSBpZiBpdCdzIHdvcnRoIGludmVzdGluZyBmdXJ0aGVyIHRpbWUgaW4gdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGZvciBmdXp6aW5nLiBJZiBpdCdzIGRlYWxpbmcgd2l0aCB1c2VyLXN1cHBsaWVkIGRhdGEgb3IgYW55IGtpbmQgb2YgZXh0ZXJuYWwgZGF0YSwgdGhlbiB3ZSBtaWdodCBoYXZlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSWYgbm90LCB0aGVuIHdlJ2xsIHNhdmUgb3VyIHRpbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MjEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMzoxMDo0NS4yNTU3NzE0ODdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM3NDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTU2MSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE1NjE6XFx0c3RhdGljIF9faW5pdCBpbnQga2hvX2luaXQodm9pZClcXG4xNTYyOlxcdHtcXG4xNTYzOlxcdFxcdHN0cnVjdCBraG9fcmFkaXhfdHJlZSAqdHJlZSA9IFxcdTAwMjZraG9fb3V0LnJhZGl4X3RyZWU7XFxuMTU2NDpcXHRcXHRjb25zdCB2b2lkICpmZHQgPSBraG9fZ2V0X2ZkdCgpO1xcbjE1NjU6XFx0XFx0aW50IGVyciA9IDA7XFxuMTU2NjpcXHRcXG4xNTY3OlxcdFxcdGlmICgha2hvX2VuYWJsZSlcXG4xNTY4OlxcdFxcdFxcdHJldHVybiAwO1xcbjE1Njk6XFx0XFxuMTU3MDpcXHRcXHR0cmVlLVxcdTAwM2Vyb290ID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO1xcbjE1NzE6XFx0XFx0aWYgKCF0cmVlLVxcdTAwM2Vyb290KSB7XFxuMTU3MjpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjE1NzM6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9zY3JhdGNoO1xcbjE1NzQ6XFx0XFx0fVxcbjE1NzU6XFx0XFxuMTU3NjpcXHRcXHRraG9fb3V0LmZkdCA9IGtob19hbGxvY19wcmVzZXJ2ZShQQUdFX1NJWkUpO1xcbjE1Nzc6XFx0XFx0aWYgKElTX0VSUihraG9fb3V0LmZkdCkpIHtcXG4xNTc4OlxcdFxcdFxcdGVyciA9IFBUUl9FUlIoa2hvX291dC5mZHQpO1xcbjE1Nzk6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9raG9fcmFkaXhfdHJlZV9yb290O1xcbjE1ODA6XFx0XFx0fVxcbjE1ODE6XFx0XFxuMTU4MjpcXHRcXHRlcnIgPSBraG9fZGVidWdmc19pbml0KCk7XFxuMTU4MzpcXHRcXHRpZiAoZXJyKVxcbjE1ODQ6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9mZHQ7XFxuMTU4NTpcXHRcXG4xNTg2OlxcdFxcdGVyciA9IGtob19vdXRfZGVidWdmc19pbml0KFxcdTAwMjZraG9fb3V0LmRiZyk7XFxuMTU4NzpcXHRcXHRpZiAoZXJyKVxcbjE1ODg6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9mZHQ7XFxuMTU4OTpcXHRcXG4xNTkwOlxcdFxcdGVyciA9IGtob19vdXRfZmR0X3NldHVwKCk7XFxuMTU5MTpcXHRcXHRpZiAoZXJyKVxcbjE1OTI6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9mZHQ7XFxuMTU5MzpcXHRcXG4xNTk0OlxcdFxcdGVyciA9IGtob19rZXhlY19tZXRhZGF0YV9pbml0KGZkdCk7XFxuMTU5NTpcXHRcXHRpZiAoZXJyKVxcbjE1OTY6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9mZHQ7XFxuMTU5NzpcXHRcXG4xNTk4OlxcdFxcdGlmIChmZHQpIHtcXG4xNTk5OlxcdFxcdFxcdGtob19pbl9kZWJ1Z2ZzX2luaXQoXFx1MDAyNmtob19pbi5kYmcsIGZkdCk7XFxuMTYwMDpcXHRcXHRcXHRyZXR1cm4gMDtcXG4xNjAxOlxcdFxcdH1cXG4xNjAyOlxcdFxcbjE2MDM6XFx0XFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBraG9fc2NyYXRjaF9jbnQ7IGkrKykge1xcbjE2MDQ6XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBiYXNlX3BmbiA9IFBIWVNfUEZOKGtob19zY3JhdGNoW2ldLmFkZHIpO1xcbjE2MDU6XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBjb3VudCA9IGtob19zY3JhdGNoW2ldLnNpemUgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVDtcXG4xNjA2OlxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgcGZuO1xcbjE2MDc6XFx0XFxuMTYwODpcXHRcXHRcXHQvKlxcbjE2MDk6XFx0XFx0XFx0ICogV2hlbiBkZWJ1Z19wYWdlYWxsb2MgaXMgZW5hYmxlZCwgX19mcmVlX3BhZ2VzKCkgY2xlYXJzIHRoZVxcbjE2MTA6XFx0XFx0XFx0ICogY29ycmVzcG9uZGluZyBQUkVTRU5UIGJpdCBpbiB0aGUga2VybmVsIHBhZ2UgdGFibGUuXFxuMTYxMTpcXHRcXHRcXHQgKiBTdWJzZXF1ZW50IGttZW1sZWFrIHNjYW5zIG9mIHRoZXNlIHBhZ2VzIGNhdXNlIHRoZVxcbjE2MTI6XFx0XFx0XFx0ICogbm9uLVBSRVNFTlQgcGFnZSBmYXVsdHMuXFxuMTYxMzpcXHRcXHRcXHQgKiBNYXJrIHNjcmF0Y2ggYXJlYXMgd2l0aCBrbWVtbGVha19pZ25vcmVfcGh5cygpIHRvIGV4Y2x1ZGVcXG4xNjE0OlxcdFxcdFxcdCAqIHRoZW0gZnJvbSBrbWVtbGVhayBzY2FubmluZy5cXG4xNjE1OlxcdFxcdFxcdCAqL1xcbjE2MTY6XFx0XFx0XFx0a21lbWxlYWtfaWdub3JlX3BoeXMoa2hvX3NjcmF0Y2hbaV0uYWRkcik7XFxuMTYxNzpcXHRcXHRcXHRmb3IgKHBmbiA9IGJhc2VfcGZuOyBwZm4gXFx1MDAzYyBiYXNlX3BmbiArIGNvdW50O1xcbjE2MTg6XFx0XFx0XFx0ICAgICBwZm4gKz0gcGFnZWJsb2NrX25yX3BhZ2VzKVxcbjE2MTk6XFx0XFx0XFx0XFx0aW5pdF9jbWFfcmVzZXJ2ZWRfcGFnZWJsb2NrKHBmbl90b19wYWdlKHBmbikpO1xcbjE2MjA6XFx0XFx0fVxcbjE2MjE6XFx0XFxuMTYyMjpcXHRcXHRXQVJOX09OX09OQ0Uoa2hvX2RlYnVnZnNfYmxvYl9hZGQoXFx1MDAyNmtob19vdXQuZGJnLCBcXFwiZmR0XFxcIixcXG4xNjIzOlxcdFxcdFxcdFxcdFxcdFxcdCAga2hvX291dC5mZHQsXFxuMTYyNDpcXHRcXHRcXHRcXHRcXHRcXHQgIGZkdF90b3RhbHNpemUoa2hvX291dC5mZHQpLCB0cnVlKSk7XFxuMTYyNTpcXHRcXG4xNjI2OlxcdFxcdHJldHVybiAwO1xcbjE2Mjc6XFx0XFxuMTYyODpcXHRlcnJfZnJlZV9mZHQ6XFxuMTYyOTpcXHRcXHRraG9fdW5wcmVzZXJ2ZV9mcmVlKGtob19vdXQuZmR0KTtcXG4xNjMwOlxcdGVycl9mcmVlX2tob19yYWRpeF90cmVlX3Jvb3Q6XFxuMTYzMTpcXHRcXHRrZnJlZSh0cmVlLVxcdTAwM2Vyb290KTtcXG4xNjMyOlxcdFxcdHRyZWUtXFx1MDAzZXJvb3QgPSBOVUxMO1xcbjE2MzM6XFx0ZXJyX2ZyZWVfc2NyYXRjaDpcXG4xNjM0OlxcdFxcdGtob19vdXQuZmR0ID0gTlVMTDtcXG4xNjM1OlxcdFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2Mga2hvX3NjcmF0Y2hfY250OyBpKyspIHtcXG4xNjM2OlxcdFxcdFxcdHZvaWQgKnN0YXJ0ID0gX192YShraG9fc2NyYXRjaFtpXS5hZGRyKTtcXG4xNjM3OlxcdFxcdFxcdHZvaWQgKmVuZCA9IHN0YXJ0ICsga2hvX3NjcmF0Y2hbaV0uc2l6ZTtcXG4xNjM4OlxcdFxcbjE2Mzk6XFx0XFx0XFx0ZnJlZV9yZXNlcnZlZF9hcmVhKHN0YXJ0LCBlbmQsIC0xLCBcXFwiXFxcIik7XFxuMTY0MDpcXHRcXHR9XFxuMTY0MTpcXHRcXHRraG9fZW5hYmxlID0gZmFsc2U7XFxuMTY0MjpcXHRcXHRyZXR1cm4gZXJyO1xcbjE2NDM6XFx0fVxcbjE2NDQ6XFx0ZnNfaW5pdGNhbGwoa2hvX2luaXQpO1xcbjE2NDU6XFx0XFxuMTY0NjpcXHR2b2lkIF9faW5pdCBraG9fbWVtb3J5X2luaXQodm9pZClcXG4xNjQ3OlxcdHtcXG4xNjQ4OlxcdFxcdGlmIChraG9faW4uc2NyYXRjaF9waHlzKSB7XFxuMTY0OTpcXHRcXHRcXHRraG9fc2NyYXRjaCA9IHBoeXNfdG9fdmlydChraG9faW4uc2NyYXRjaF9waHlzKTtcXG4xNjUwOlxcdFxcbjE2NTE6XFx0XFx0XFx0aWYgKGtob19tZW1fcmV0cmlldmUoa2hvX2dldF9mZHQoKSkpXFxuMTY1MjpcXHRcXHRcXHRcXHRraG9faW4uZmR0X3BoeXMgPSAwO1xcbjE2NTM6XFx0XFx0fSBlbHNlIHtcXG4xNjU0OlxcdFxcdFxcdGtob19yZXNlcnZlX3NjcmF0Y2goKTtcXG4xNjU1OlxcdFxcdH1cXG4xNjU2OlxcdH1cXG4xNjU3OlxcdFxcbjE2NTg6XFx0dm9pZCBfX2luaXQga2hvX3BvcHVsYXRlKHBoeXNfYWRkcl90IGZkdF9waHlzLCB1NjQgZmR0X2xlbixcXG4xNjU5OlxcdFxcdFxcdFxcdCBwaHlzX2FkZHJfdCBzY3JhdGNoX3BoeXMsIHU2NCBzY3JhdGNoX2xlbilcXG4xNjYwOlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MTA6NDUuMjU1OTEyMDc3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzODA0NDgxNDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudDogYGtob19vdXRfZmR0X3NldHVwYCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBxdWlja2x5IGFzc2VzcyBpZiB0aGlzIHBhdGNoIGluIGBraG9fb3V0X2ZkdF9zZXR1cGDigJRjYWxsZWQgYnkgYGtob19pbml0YCwgd2hpY2ggaXMgYW4gYGZzX2luaXRjYWxsYOKAlG1lcml0ZWQgZnV6emluZy4gVGhlIGtleSBoZXJlIGlzIHRoYXQgaXQgcnVucyBhdCBib290LiBTeXprYWxsZXIsIGluIGl0cyBzdGFuZGFyZCBjb25maWd1cmF0aW9uLCB0eXBpY2FsbHkgZG9lc24ndCB0YXJnZXQgYm9vdC10aW1lIGNvZGUgdW5sZXNzIHRoZXJlJ3MgYSBjbGVhciBwYXRod2F5IHRvIHRyaWdnZXIgaXQgbGF0ZXIsIGxpa2UgdGhyb3VnaCBtb2R1bGUgbG9hZGluZy5cblxuQnV0IHdhaXQsIGBraG9faW5pdGAgaXMgYSBzZXQtYW5kLWZvcmdldCBmdW5jdGlvbiEgSXQncyBub3QgdGFraW5nIGFueSB1c2VyIGlucHV0LiBJdCdzIGp1c3Qgc2V0dGluZyB1cCBzb21lIEZEVCBwcm9wZXJ0aWVzLiBPa2F5LCBkaWdnaW5nIGRlZXBlciwgdGhlIHdvcmsgaXMgZG9uZSB3aXRoaW4gdGhlIGxpYmZkdCBsaWJyYXJ5IGZ1bmN0aW9ucyAoYGZkdF9jcmVhdGVgLCBgZmR0X2ZpbmlzaF9yZXNlcnZlbWFwYCwgZXRjLikuIFRoZSBwYXRjaCBpcyBzaW1wbHkgYWRkaW5nIG1vcmUgZXhwbGljaXQgZXJyb3IgaGFuZGxpbmcgYXJvdW5kIHRob3NlIGxpYmZkdCBjYWxscy4gU3RpbGwsIG5vIHVzZXIgaW5wdXQsIGp1c3QgaW50ZXJuYWwgb3BlcmF0aW9ucy5cblxuYGtob19vdXRfZmR0X3NldHVwYCBjcmVhdGVzIGEgbmV3IEZEVCBpbiBga2hvX291dC5mZHRgLiBUaGlzIEZEVCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGtob19hbGxvY19wcmVzZXJ2ZWAuIEl0IGFwcGVhcnMgdG8gYmUgYW4gZW1wdHkgRkRULCB3aXRoIGEgc2luZ2xlIGBjb21wYXRpYmxlYCBwcm9wZXJ0eSBhbmQgYSBtZW1vcnkgbWFwLiBObyB1c2VyIGludGVyYWN0aW9uIGhlcmUgYXQgYWxsLCBpdCdzIGFsbCBzdGF0aWMuXG5cbkNvdWxkIHRoaXMgZmFpbD8gUG90ZW50aWFsbHksIGBmZHRfY3JlYXRlYCBjb3VsZCBmYWlsIGlmIHRoZSBhbGxvY2F0ZWQgYnVmZmVyIChgUEFHRV9TSVpFYCkgaXMgdG9vIHNtYWxsLiBCdXQgdGhhdCdzIGhpZ2hseSB1bmxpa2VseSB3aXRoIGFuIGVtcHR5IEZEVDsgYFBBR0VfU0laRWAgaXMgbW9yZSB0aGFuIHN1ZmZpY2llbnQuIFRoZSBwYXRjaCBtYWlubHkgYWRkcyBleHBsaWNpdCBlcnJvciBjaGVja2luZyB0byB0aGUgbGliZmR0IGNhbGxzLlxuXG5Tbywgc2luY2UgdGhpcyBjb2RlIGlzIG9ubHkgcnVuIGF0IGJvb3QsIGRvZXNuJ3QgdGFrZSBpbnB1dCwgYW5kIGlzIGp1c3QgY29uc3RydWN0aW5nIGEgc3RhdGljIEZEVCBzdHJ1Y3R1cmUsIEknbSBwcmV0dHkgY29uZmlkZW50IHRoYXQgaXQncyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSBkdXJpbmcgbm9ybWFsIGV4ZWN1dGlvbiBhbmQgdGh1cywgbm90IGR5bmFtaWNhbGx5IGZ1enphYmxlLiBJdCdzIG5vdCB3b3J0aCB0aGUgZWZmb3J0LlxuXG5MZXQgbWUgZG91YmxlLWNoZWNrIGZvciBhbnkgaG9va3MsIHN5c2ZzIG9yIGRlYnVnZnMgbWlnaHQgcHJvdmlkZSBhbiB1bmV4cGVjdGVkIHdheSB0byBhY2Nlc3MgdGhpcy4gTm90aGluZyB0byBiZSBmb3VuZCwgYGtob19pbml0YCBpcyBhbiBgZnNfaW5pdGNhbGxgIGFuZCBydW5zIGV4YWN0bHkgb25jZS4gSSd2ZSBncmVwcGVkIGZvciBga2hvX291dF9mZHRfc2V0dXBgIGFuZCBjb25maXJtZWQgdGhlIGNhbGxzaXRlLiBBbmQgaXQncyBidWlsdC1pbiwgc28gbm8gbW9kdWxlIHJlbG9hZGluZy4gSXQncyBydW4gZXhhY3RseSBvbmNlIGF0IGJvb3QuIFN5emthbGxlciBpcyBub3QgZ29pbmcgdG8gYmUgYWJsZSB0byByZWFjaCB0aGlzLlxuXG5BbHJpZ2h0LCBsZXQncyByZXZpZXcgdGhlIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgY3JpdGVyaWEuIFRoZSBjaGFuZ2VzIGhlcmUgYXJlIG5vdCByZWxhdGVkIHRvIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvZGUgY29tbWVudHMsIG9yIGRlY29yYXRpdmUgbG9nZ2luZy4gVGhleSBhcmVuJ3QgbnVtZXJpYyBjb25zdGFudHMgdGhhdCBjaGFuZ2UgZXhlY3V0aW9uIGZsb3cuIEFuZCBjcnVjaWFsbHksIHRoaXMgY29kZSBwYXRoIGlzIGVmZmVjdGl2ZWx5IGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gSXQgcnVucyBkdXJpbmcgYm9vdCwgaXMgdW5yZWFjaGFibGUsIGFuZCBoYXMgbm8gdXNlci1zcGFjZSBpbnB1dC5cblxuWWVzLCBib290LXRpbWUgY29kZSAqaXMqIGNvbnNpZGVyZWQgXCJpbXBvc3NpYmxlIHRvIHJlYWNoXCIgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGZ1enplciAoc3l6a2FsbGVyKSBiZWNhdXNlIGJvb3QtdGltZSBleGVjdXRpb24gb2NjdXJzIGJlZm9yZSB0aGUgZnV6emluZyBsb29wIHN0YXJ0cy4gVGhlIGZ1enplciBjYW5ub3QgY29udHJvbCBpdC4gVGhpcyBmdW5jdGlvbiBoYXMgbm8gZGF0YSBkZXBlbmRlbmN5IG9uIHVzZXIgc3BhY2Ugb3IgZXh0ZXJuYWwgZGV2aWNlcywgZnVydGhlciBzb2xpZGlmeWluZyB0aGlzIGNvbmNsdXNpb24uXG5cblNvLCB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXIgaXMgKm5vdCB3b3J0aCBmdXp6aW5nKi5cblxuTGV0IG1lIHN1bW1hcml6ZSB0aGUgcmVhc29uaW5nIGluIGRldGFpbC4gVGhlIHBhdGNoIG1vZGlmaWVzIGBraG9fb3V0X2ZkdF9zZXR1cGAgaW4gYGtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNgIHRvIGFkZCBwcm9wZXIgZXJyb3IgY2hlY2tpbmcgdG8gbGliZmR0IGNhbGxzLiBUaGlzIGZ1bmN0aW9uIGlzIG1hcmtlZCBhcyBgX19pbml0YCBhbmQgaXMgb25seSBjYWxsZWQgb25jZSBkdXJpbmcga2VybmVsIGJvb3QgdmlhIGBmc19pbml0Y2FsbChraG9faW5pdClgLiBJdCB0YWtlcyBubyB1c2VyIGlucHV0IGFuZCBzaW1wbHkgaW5pdGlhbGl6ZXMgYSBzdGF0aWMgRmxhdHRlbmVkIERldmljZSBUcmVlIChGRFQpIGluIGEgcHJlLWFsbG9jYXRlZCBidWZmZXIuIEJlY2F1c2UgaXQgaXMgZXhlY3V0ZWQgb25seSBvbmNlIGF0IGJvb3QgdGltZSBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciBpbmZsdWVuY2VkIGJ5IHVzZXIgc3BhY2UgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24sIGl0IGlzIG5vdCByZWFjaGFibGUgYnkgdGhlIGZ1enplciBhbmQgdGhlcmVmb3JlIG5vdCB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU5MCwiT3V0cHV0VG9rZW5zIjoxNjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MTA6NTkuMDYwMzk1NjE1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGtob19vdXRfZmR0X3NldHVwYCBpbiBga2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY2AgdG8gYWRkIHByb3BlciBlcnJvciBjaGVja2luZyB0byBsaWJmZHQgY2FsbHMuIFRoaXMgZnVuY3Rpb24gaXMgbWFya2VkIGFzIGBfX2luaXRgIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIGR1cmluZyBrZXJuZWwgYm9vdCB2aWEgYGZzX2luaXRjYWxsKGtob19pbml0KWAuIEl0IHRha2VzIG5vIHVzZXIgaW5wdXQgYW5kIHNpbXBseSBpbml0aWFsaXplcyBhIHN0YXRpYyBGbGF0dGVuZWQgRGV2aWNlIFRyZWUgKEZEVCkgaW4gYSBwcmUtYWxsb2NhdGVkIGJ1ZmZlci4gQmVjYXVzZSBpdCBpcyBleGVjdXRlZCBvbmx5IG9uY2UgYXQgYm9vdCB0aW1lIGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIG9yIGluZmx1ZW5jZWQgYnkgdXNlciBzcGFjZSBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiwgaXQgaXMgbm90IHJlYWNoYWJsZSBieSB0aGUgZnV6emVyIGFuZCB0aGVyZWZvcmUgbm90IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBga2hvX291dF9mZHRfc2V0dXBgIGluIGBrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jYCB0byBhZGQgcHJvcGVyIGVycm9yIGNoZWNraW5nIHRvIGxpYmZkdCBjYWxscy4gVGhpcyBmdW5jdGlvbiBpcyBtYXJrZWQgYXMgYF9faW5pdGAgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2UgZHVyaW5nIGtlcm5lbCBib290IHZpYSBgZnNfaW5pdGNhbGwoa2hvX2luaXQpYC4gSXQgdGFrZXMgbm8gdXNlciBpbnB1dCBhbmQgc2ltcGx5IGluaXRpYWxpemVzIGEgc3RhdGljIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSAoRkRUKSBpbiBhIHByZS1hbGxvY2F0ZWQgYnVmZmVyLiBCZWNhdXNlIGl0IGlzIGV4ZWN1dGVkIG9ubHkgb25jZSBhdCBib290IHRpbWUgYW5kIGNhbm5vdCBiZSB0cmlnZ2VyZWQgb3IgaW5mbHVlbmNlZCBieSB1c2VyIHNwYWNlIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLCBpdCBpcyBub3QgcmVhY2hhYmxlIGJ5IHRoZSBmdXp6ZXIgYW5kIHRoZXJlZm9yZSBub3Qgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAzOjEwOjU5LjA2MDQyMjY2NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow9xwtk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-24 02:55:00 +0000 UTC FinishedAt: 2026-08-24 03:11:01 +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+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGtob19vdXRfZmR0X3NldHVwYCBpbiBga2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY2AgdG8gYWRkIHByb3BlciBlcnJvciBjaGVja2luZyB0byBsaWJmZHQgY2FsbHMuIFRoaXMgZnVuY3Rpb24gaXMgbWFya2VkIGFzIGBfX2luaXRgIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIGR1cmluZyBrZXJuZWwgYm9vdCB2aWEgYGZzX2luaXRjYWxsKGtob19pbml0KWAuIEl0IHRha2VzIG5vIHVzZXIgaW5wdXQgYW5kIHNpbXBseSBpbml0aWFsaXplcyBhIHN0YXRpYyBGbGF0dGVuZWQgRGV2aWNlIFRyZWUgKEZEVCkgaW4gYSBwcmUtYWxsb2NhdGVkIGJ1ZmZlci4gQmVjYXVzZSBpdCBpcyBleGVjdXRlZCBvbmx5IG9uY2UgYXQgYm9vdCB0aW1lIGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIG9yIGluZmx1ZW5jZWQgYnkgdXNlciBzcGFjZSBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiwgaXQgaXMgbm90IHJlYWNoYWJsZSBieSB0aGUgZnV6emVyIGFuZCB0aGVyZWZvcmUgbm90IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjA5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2UxNjViMmQzMjEwYzczM2MzZDNlOGQ4OTc0MzgzOWQ3MTI4M2VhMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDAzOjA5OjU3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jXG5pbmRleCAxNzVjMDhhNmU0MWUzLi45MzQ0M2FkODQ1M2QyIDEwMDY0NFxuLS0tIGEva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1xuQEAgLTE0MzgsMjAgJiM0MzsxNDM4LDM0IEBAIHN0YXRpYyBfX2luaXQgaW50IGtob19vdXRfZmR0X3NldHVwKHZvaWQpXG4gXHRpbnQgZXJyO1xuIFxuIFx0ZXJyID0gZmR0X2NyZWF0ZShyb290LCBQQUdFX1NJWkUpO1xuLVx0ZXJyIHw9IGZkdF9maW5pc2hfcmVzZXJ2ZW1hcChyb290KTtcbi1cdGVyciB8PSBmZHRfYmVnaW5fbm9kZShyb290LCBcJiMzNDtcJiMzNDspO1xuLVx0ZXJyIHw9IGZkdF9wcm9wZXJ0eV9zdHJpbmcocm9vdCwgXCYjMzQ7Y29tcGF0aWJsZVwmIzM0OywgS0hPX0ZEVF9DT01QQVRJQkxFKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRlcnIgPSBmZHRfZmluaXNoX3Jlc2VydmVtYXAocm9vdCk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0ZXJyID0gZmR0X2JlZ2luX25vZGUocm9vdCwgXCYjMzQ7XCYjMzQ7KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRlcnIgPSBmZHRfcHJvcGVydHlfc3RyaW5nKHJvb3QsIFwmIzM0O2NvbXBhdGlibGVcJiMzNDssIEtIT19GRFRfQ09NUEFUSUJMRSk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4gXG4gXHRwcmVzZXJ2ZWRfbWVtX3RyZWVfcGEgPSB2aXJ0X3RvX3BoeXModHJlZS1cdTAwM2Vyb290KTtcbiBcbi1cdGVyciB8PSBmZHRfcHJvcGVydHkocm9vdCwgS0hPX0ZEVF9NRU1PUllfTUFQX1BST1BfTkFNRSxcbi1cdFx0XHQgICAgXHUwMDI2cHJlc2VydmVkX21lbV90cmVlX3BhLFxuLVx0XHRcdCAgICBzaXplb2YocHJlc2VydmVkX21lbV90cmVlX3BhKSk7XG4mIzQzO1x0ZXJyID0gZmR0X3Byb3BlcnR5KHJvb3QsIEtIT19GRFRfTUVNT1JZX01BUF9QUk9QX05BTUUsXG4mIzQzO1x0XHRcdCAgIFx1MDAyNnByZXNlcnZlZF9tZW1fdHJlZV9wYSxcbiYjNDM7XHRcdFx0ICAgc2l6ZW9mKHByZXNlcnZlZF9tZW1fdHJlZV9wYSkpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuIFxuLVx0ZXJyIHw9IGZkdF9lbmRfbm9kZShyb290KTtcbi1cdGVyciB8PSBmZHRfZmluaXNoKHJvb3QpO1xuJiM0MztcdGVyciA9IGZkdF9lbmRfbm9kZShyb290KTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRlcnIgPSBmZHRfZmluaXNoKHJvb3QpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuIFxuLVx0cmV0dXJuIGVycjtcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgX19pbml0IGtob19pbl9rZXhlY19tZXRhZGF0YSh2b2lkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBga2hvX291dF9mZHRfc2V0dXBgIGluIGBrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jYCB0byBhZGQgcHJvcGVyIGVycm9yIGNoZWNraW5nIHRvIGxpYmZkdCBjYWxscy4gVGhpcyBmdW5jdGlvbiBpcyBtYXJrZWQgYXMgYF9faW5pdGAgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2UgZHVyaW5nIGtlcm5lbCBib290IHZpYSBgZnNfaW5pdGNhbGwoa2hvX2luaXQpYC4gSXQgdGFrZXMgbm8gdXNlciBpbnB1dCBhbmQgc2ltcGx5IGluaXRpYWxpemVzIGEgc3RhdGljIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSAoRkRUKSBpbiBhIHByZS1hbGxvY2F0ZWQgYnVmZmVyLiBCZWNhdXNlIGl0IGlzIGV4ZWN1dGVkIG9ubHkgb25jZSBhdCBib290IHRpbWUgYW5kIGNhbm5vdCBiZSB0cmlnZ2VyZWQgb3IgaW5mbHVlbmNlZCBieSB1c2VyIHNwYWNlIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLCBpdCBpcyBub3QgcmVhY2hhYmxlIGJ5IHRoZSBmdXp6ZXIgYW5kIHRoZXJlZm9yZSBub3Qgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3ZTE2NWIyZDMyMTBjNzMzYzNkM2U4ZDg5NzQzODM5ZDcxMjgzZWEyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMjQgMDM6MDk6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jIGIva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYwppbmRleCAxNzVjMDhhNmU0MWUzLi45MzQ0M2FkODQ1M2QyIDEwMDY0NAotLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMKQEAgLTE0MzgsMjAgJiM0MzsxNDM4LDM0IEBAIHN0YXRpYyBfX2luaXQgaW50IGtob19vdXRfZmR0X3NldHVwKHZvaWQpCiAJaW50IGVycjsKIAogCWVyciA9IGZkdF9jcmVhdGUocm9vdCwgUEFHRV9TSVpFKTsKLQllcnIgfD0gZmR0X2ZpbmlzaF9yZXNlcnZlbWFwKHJvb3QpOwotCWVyciB8PSBmZHRfYmVnaW5fbm9kZShyb290LCAmIzM0OyYjMzQ7KTsKLQllcnIgfD0gZmR0X3Byb3BlcnR5X3N0cmluZyhyb290LCAmIzM0O2NvbXBhdGlibGUmIzM0OywgS0hPX0ZEVF9DT01QQVRJQkxFKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CWVyciA9IGZkdF9maW5pc2hfcmVzZXJ2ZW1hcChyb290KTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CWVyciA9IGZkdF9iZWdpbl9ub2RlKHJvb3QsICYjMzQ7JiMzNDspOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsJZXJyID0gZmR0X3Byb3BlcnR5X3N0cmluZyhyb290LCAmIzM0O2NvbXBhdGlibGUmIzM0OywgS0hPX0ZEVF9DT01QQVRJQkxFKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiAKIAlwcmVzZXJ2ZWRfbWVtX3RyZWVfcGEgPSB2aXJ0X3RvX3BoeXModHJlZS0mZ3Q7cm9vdCk7CiAKLQllcnIgfD0gZmR0X3Byb3BlcnR5KHJvb3QsIEtIT19GRFRfTUVNT1JZX01BUF9QUk9QX05BTUUsCi0JCQkgICAgJmFtcDtwcmVzZXJ2ZWRfbWVtX3RyZWVfcGEsCi0JCQkgICAgc2l6ZW9mKHByZXNlcnZlZF9tZW1fdHJlZV9wYSkpOwomIzQzOwllcnIgPSBmZHRfcHJvcGVydHkocm9vdCwgS0hPX0ZEVF9NRU1PUllfTUFQX1BST1BfTkFNRSwKJiM0MzsJCQkgICAmYW1wO3ByZXNlcnZlZF9tZW1fdHJlZV9wYSwKJiM0MzsJCQkgICBzaXplb2YocHJlc2VydmVkX21lbV90cmVlX3BhKSk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwogCi0JZXJyIHw9IGZkdF9lbmRfbm9kZShyb290KTsKLQllcnIgfD0gZmR0X2ZpbmlzaChyb290KTsKJiM0MzsJZXJyID0gZmR0X2VuZF9ub2RlKHJvb3QpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsJZXJyID0gZmR0X2ZpbmlzaChyb290KTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiAKLQlyZXR1cm4gZXJyOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgX19pbml0IGtob19pbl9rZXhlY19tZXRhZGF0YSh2b2lkKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzY2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogRkRUIFNldHVwIGZvciBMaXZlIFVwZGF0ZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jYCwgc3BlY2lmaWNhbGx5IHRoZSBga2hvX291dF9mZHRfc2V0dXBgIGZ1bmN0aW9uLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxvb2tzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0JiMzOTtzIHJlcGxhY2luZyBlcnJvciBhY2N1bXVsYXRpb24gd2l0aCBpbW1lZGlhdGUgZXJyb3IgcmV0dXJucyB3aXRoaW4gdGhlIEZsYXQgRGV2aWNlIFRyZWUgKEZEVCkgc2V0dXAuIEluc3RlYWQgb2YgaGF2aW5nIG11bHRpcGxlIGBlcnIgfD0gZmR0Xy4uLmAgbGluZXMsIGl0JiMzOTtzIG5vdyBgZXJyID0gZmR0Xy4uLjsgaWYgKGVycikgcmV0dXJuIGVycjtgLgoKVGhpcyBpcyBpbnRlcmVzdGluZy4gVGhlIHByZXZpb3VzIGFwcHJvYWNoIG9mIGNvbnRpbnVpbmcgZXhlY3V0aW9uIGFmdGVyIGFuIEZEVCBmdW5jdGlvbiBmYWlscyBpcyBkZWZpbml0ZWx5IHJpc2t5LiBBY2N1bXVsYXRpbmcgZXJyb3JzIGFuZCBwdXNoaW5nIGZvcndhcmQgY291bGQgYWJzb2x1dGVseSBsZWFkIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBvciBldmVuIG91dHJpZ2h0IGNyYXNoZXMgZG93bnN0cmVhbSBpZiBgZmR0X2NyZWF0ZWAgYmFpbHMgb3V0LCBidXQgc3Vic2VxdWVudCBjb2RlIHRoYXQgZXhwZWN0cyBhIHZhbGlkIEZEVCBzdHJ1Y3R1cmUgY29udGludWVzIHRvIHJ1bi4gVGhpcyBpcyBhIGNsYXNzaWMgZXhhbXBsZSBvZiBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIHByZXZlbnRpbmcgY2FzY2FkaW5nIGZhaWx1cmVzLiBBIHNpbmdsZSBgZmR0YCBmYWlsdXJlIHNob3VsZCBoYWx0IHRoZSBwcm9jZXNzLgoKTm93LCBJIHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgaXRzZWxmLiBMZXQgbWUgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlZSBob3cgYGtob19vdXRfZmR0X3NldHVwYCBpcyBhY3R1YWxseSB1c2VkLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgcmVhbGx5IGhlbHAgbWUgYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgYW5kIHdoZXRoZXIgaXQmIzM5O3MgdHJ1bHkgYSBjcml0aWNhbCBpbXByb3ZlbWVudCBmb3Igc3RhYmlsaXR5IGR1cmluZyBsaXZlIHVwZGF0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDM6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2hvX291dF9mZHRfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MTQxMT1zdGF0aWMgaW50IF9faW5pdCBraG9fbWVtX3JldHJpZXZlKGNvbnN0IHZvaWQgKmZkdClcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE0MzItXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE0MzM6c3RhdGljIF9faW5pdCBpbnQga2hvX291dF9mZHRfc2V0dXAodm9pZClcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTQzNC17XG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYz0xNTYxPXN0YXRpYyBfX2luaXQgaW50IGtob19pbml0KHZvaWQpXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNTg5LVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNTkwOlx0ZXJyID0ga2hvX291dF9mZHRfc2V0dXAoKTtcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTU5MS1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDM6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA2NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIEtITyBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGtob19vdXRfZmR0X3NldHVwYCBoZXJlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYGtob19pbml0YC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRvIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nLCBJIG5lZWQgdG8gdHJhY2UgdGhlIGZsb3cuIFNvLCBJIG5lZWQgdG8gZGlnIGludG8gYGtob19pbml0YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgdGhlIGluaXRpYWxpemF0aW9uIGlzIHNlcXVlbmNlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBgZmR0X3NldHVwYCBjYWxsLiBXaGF04oCZcyB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSB3aGVuIGBraG9fb3V0X2ZkdF9zZXR1cGAgaXMgdHJpZ2dlcmVkPyBXaGF0IGtleSBkYXRhIGlzIGluaXRpYWxpemVkIGJlZm9yZSwgb3IgcG90ZW50aWFsbHkgdXNlZCBhZnRlcj8gR290dGEgdW5kZXJzdGFuZCB0aGF0IHJlbGF0aW9uc2hpcC4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBwYXJ0aWN1bGFyIGBmZHRfc2V0dXBgIGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBLSE8gc3lzdGVtIHN0YXJ0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDM6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2hvX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MzY4PUVYUE9SVF9TWU1CT0xfR1BMKGtob19yYWRpeF93YWxrX3RyZWUpO1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzcwLS8qIEZvciBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgMC1vcmRlciBwYWdlcy4gKi9cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MzcxOnN0YXRpYyB2b2lkIGtob19pbml0X3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0zNzIte1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzc5LVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzozODA6c3RhdGljIHZvaWQga2hvX2luaXRfZm9saW8oc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcilcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzgxLXtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTM5Nz1zdGF0aWMgc3RydWN0IHBhZ2UgKmtob19yZXN0b3JlX3BhZ2UocGh5c19hZGRyX3QgcGh5cywgYm9vbCBpc19mb2xpbylcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTQxOS1cdGlmIChpc19mb2xpbylcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6NDIwOlx0XHRraG9faW5pdF9mb2xpbyhwYWdlLCBpbmZvLm9yZGVyKTtcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDIxLVx0ZWxzZVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzo0MjI6XHRcdGtob19pbml0X3BhZ2VzKHBhZ2UsIG5yX3BhZ2VzKTtcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDIzLVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MTU0NT1zdGF0aWMgaW50IF9faW5pdCBraG9fa2V4ZWNfbWV0YWRhdGFfaW5pdChjb25zdCB2b2lkICpmZHQpXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNTYwLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNTYxOnN0YXRpYyBfX2luaXQgaW50IGtob19pbml0KHZvaWQpXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE1NjIte1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTY0My19XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE2NDQ6ZnNfaW5pdGNhbGwoa2hvX2luaXQpO1xua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNjQ1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NjkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLSE8gSW5pdGlhbGl6YXRpb24gUHJvY2VzcyoqCgpPa2F5LCBzbyBga2hvX2luaXRgIGlzIGFuIGBmc19pbml0Y2FsbGAsIG1lYW5pbmcgaXQmIzM5O3MgdHJpZ2dlcmVkIGR1cmluZyB0aGUgc3lzdGVtIGJvb3Qgc2VxdWVuY2UuIEFuZCBoYW5nIG9uLCBga2hvX291dF9mZHRfc2V0dXBgIGlzIG1hcmtlZCBhcyBgX19pbml0YD8gVGhhdCYjMzk7cyB0eXBpY2FsbHkgYSByZWQgZmxhZyBmb3IgZnV6emluZywgaXNuJiMzOTt0IGl0PyBUaGVzZSBraW5kcyBvZiBmdW5jdGlvbnMgYXJlIGRlc2lnbmVkIHRvIHJ1biBvbmNlLCBhdCBib290IHRpbWUsIGFuZCBhcmVuJiMzOTt0IGdlbmVyYWxseSBhY2Nlc3NpYmxlIGZyb20gdXNlciBzcGFjZSwgd2hpY2ggaXMgd2hlcmUgd2UgdHlwaWNhbGx5IGZvY3VzIG91ciBmdXp6aW5nIGVmZm9ydHMg4oCTIHN5c2NhbGxzLCBpb2N0bHMsIG5ldHdvcmsgcGFja2V0cywgZXRjLiBTeXprYWxsZXIgKmRvZXMqIHNvbWV0aW1lcyBsb29rIGF0IGJvb3QtdGltZSBzdHVmZiBpZiBpdCYjMzk7cyB0aWVkIHRvIGRldmljZSB0cmVlcyBvciByZWxhdGVkIGluaXRpYWxpemF0aW9ucywgYnV0IGdlbmVyYWxseSwgYF9faW5pdGAgZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBvbmNlIGFuZCB0aGVuIGZvcmdvdHRlbi4KCkhtbSwgYGtob19vdXRfZmR0X3NldHVwYCBpcyBjYWxsZWQgZnJvbSBga2hvX2luaXRgLCBhbmQgYGtob19pbml0YCBpcyBjYWxsZWQgdmlhIGBmc19pbml0Y2FsbChraG9faW5pdClgLiBTbywgdGhlIGVudGlyZSBjaGFpbiBleGVjdXRlcyBkdXJpbmcga2VybmVsIGluaXRpYWxpemF0aW9uLiBDYW4gSSB0cmlnZ2VyIHRoaXMgc2VxdWVuY2UgZnJvbSB1c2VyIHNwYWNlIGRpcmVjdGx5PyBObywgZGVmaW5pdGVseSBub3QuIGBmc19pbml0Y2FsbGAgbWVhbnMgaXQgcnVucyBiZWZvcmUgZXZlbiB1c2VyIHNwYWNlIGlzIGluaXRpYWxpemVkLgoKV2FpdCwgd2hhdCBhYm91dCBrZXhlYz8gQ291bGQgYSBrZXJuZWwgaW1hZ2UgcmVsb2FkIHNvbWVob3cgdHJpZ2dlciB0aGlzPyBJdCYjMzk7cyB3b3J0aCBpbnZlc3RpZ2F0aW5nLiBMZXQgbWUgc2VlIGlmIGBraG9fb3V0X2ZkdF9zZXR1cGAgaXMgdXNlZCBhbnl3aGVyZSBlbHNlIGluIHRoZSBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCBjb21wbGV0ZWx5IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDM6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2hvX291dF9mZHRfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYz0xNDExPXN0YXRpYyBpbnQgX19pbml0IGtob19tZW1fcmV0cmlldmUoY29uc3Qgdm9pZCAqZmR0KVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTQzMi1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTQzMzpzdGF0aWMgX19pbml0IGludCBraG9fb3V0X2ZkdF9zZXR1cCh2b2lkKVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDM0LXtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE1NjE9c3RhdGljIF9faW5pdCBpbnQga2hvX2luaXQodm9pZClcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE1ODktXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE1OTA6XHRlcnIgPSBraG9fb3V0X2ZkdF9zZXR1cCgpO1xua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNTkxLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjQ3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBraG9fb3V0X2ZkdF9zZXR1cGAgRHVyaW5nIEtleGVjIEZ1enppbmcqKgoKT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhpcyBga2hvX291dF9mZHRfc2V0dXBgIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBraG9faW5pdGAsIHdoaWNoIGlzLCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIGFuIGBmc19pbml0Y2FsbGAuIFRoYXQgbWVhbnMgaXQmIzM5O3MgYW4gYF9faW5pdGAgZnVuY3Rpb24sIHNvIGl0cyBtZW1vcnkgaXMgZnJlZWQgYWZ0ZXIgdGhlIGJvb3QgcHJvY2Vzcy4gSXQgd291bGRuJiMzOTt0IGJlIGFjY2Vzc2libGUgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24sIG9yLCBpbXBvcnRhbnRseSwgZHVyaW5nIGEgZnV6emluZyBsb29wLiBOb3csIGRvZXMgU3l6a2FsbGVyIGV2ZW4gdHJ5IHRvIGZ1enogYGtleGVjYD8gWWVzLCBvZiBjb3Vyc2UgaXQgZG9lcywgdGhyb3VnaCBga2V4ZWNfbG9hZGAgYW5kIGBrZXhlY19maWxlX2xvYWRgIHN5c2NhbGxzLiBCdXQgc2luY2UgYGtob19pbml0YCBpcyBhbiBgZnNfaW5pdGNhbGxgLCBpdCBydW5zICpvbmx5KiBhdCBib290LgoKU28sIHRoZSBxdWVzdGlvbiBpczogaXMgYGtob19vdXRfZmR0X3NldHVwYCByZWFjaGFibGUgdmlhIGEga2V4ZWMgc2VxdWVuY2U/IE5vLCBsb2dpY2FsbHksIGl0IHNob3VsZG4mIzM5O3QgYmUuIEl0JiMzOTtzIG1hcmtlZCBhcyBgX19pbml0YCwgc28gaXQgZ2V0cyBkaXNjYXJkZWQgcG9zdC1ib290LiBUaGF0IG1lYW5zIGl0IGFic29sdXRlbHkgKmNhbm5vdCogYmUgY2FsbGVkIGR1cmluZyBhIGtleGVjIGV4ZWN1dGlvbi4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLCB0aGF0IGBraG9faW5pdGAgcmVhbGx5IGlzIGFuIGBmc19pbml0Y2FsbGAuIFl1cCwgYGZzX2luaXRjYWxsKGtob19pbml0KTtgIGNvbmZpcm1zIGl0LiBTbywgYGtob19vdXRfZmR0X3NldHVwYCBleGVjdXRlcyBwcmVjaXNlbHkgb25jZSwgYXQgYm9vdC4KCkdlbmVyYWxseSBzcGVha2luZywgU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGR5bmFtaWNhbGx5IGZ1enogYm9vdCBjb2RlIGR1cmluZyBpdHMgbm9ybWFsIGZ1enppbmcgbG9vcCB1bmxlc3MgaXQmIzM5O3MgdHJpZ2dlcmVkIGJ5IGEgbW9kdWxlIGxvYWQgb3Igc29tZXRoaW5nIHNpbWlsYXIuIEJ1dCB0aGlzIGlzIGJ1aWx0LWluIChgZnNfaW5pdGNhbGxgKSwgc28gaXQmIzM5O3MgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBzaXR1YXRpb24uIE9uZSBsYXN0IHRob3VnaHQ6IGlzIGBrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jYCBhIG1vZHVsZT8gTGV0IG1lIGNoZWNrIGl0cyBgTWFrZWZpbGVgIG9yIGBLY29uZmlnYCBmb3IgY29uZmlybWF0aW9uLCBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2tleGVjX2hhbmRvdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2xpdmV1cGRhdGUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9saXZldXBkYXRlL01ha2VmaWxlPTM9bHVvLXkgOj1cdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9NYWtlZmlsZS05LVxua2VybmVsL2xpdmV1cGRhdGUvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0tFWEVDX0hBTkRPVkVSKVx0XHQmIzQzOz0ga2V4ZWNfaGFuZG92ZXIub1xua2VybmVsL2xpdmV1cGRhdGUvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0tFWEVDX0hBTkRPVkVSX0RFQlVHKVx0JiM0Mzs9IGtleGVjX2hhbmRvdmVyX2RlYnVnLm9cbmtlcm5lbC9saXZldXBkYXRlL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19LRVhFQ19IQU5ET1ZFUl9ERUJVR0ZTKVx0JiM0Mzs9IGtleGVjX2hhbmRvdmVyX2RlYnVnZnMub1xua2VybmVsL2xpdmV1cGRhdGUvTWFrZWZpbGUtMTMtXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0yLS8qXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjM6ICoga2V4ZWNfaGFuZG92ZXIuYyAtIGtleGVjIGhhbmRvdmVyIG1ldGFkYXRhIHByb2Nlc3Npbmdcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNC0gKiBDb3B5cmlnaHQgKEMpIDIwMjMgQWxleGFuZGVyIEdyYWYgXHUwMDNjZ3JhZkBhbWF6b24uY29tXHUwMDNlXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9rZXhlYy5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE5OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2tleGVjX2hhbmRvdmVyLmhcdTAwM2Vcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMjAtI2luY2x1ZGUgXHUwMDNjbGludXgva2hvX3JhZGl4X3RyZWUuaFx1MDAzZVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0yMS0jaW5jbHVkZSBcdTAwM2NsaW51eC91dHNuYW1lLmhcdTAwM2Vcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MjI6I2luY2x1ZGUgXHUwMDNjbGludXgva2hvL2FiaS9rZXhlY19oYW5kb3Zlci5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTIzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2toby9hYmkva2V4ZWNfbWV0YWRhdGEuaFx1MDAzZVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzgtI2luY2x1ZGUgXCYjMzQ7Li4va2V4ZWNfaW50ZXJuYWwuaFwmIzM0O1xua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzozOTojaW5jbHVkZSBcJiMzNDtrZXhlY19oYW5kb3Zlcl9pbnRlcm5hbC5oXCYjMzQ7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTQwLVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnLmMtMi0vKlxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfZGVidWcuYzozOiAqIGtleGVjX2hhbmRvdmVyX2RlYnVnLmMgLSBrZXhlYyBoYW5kb3ZlciBvcHRpb25hbCBkZWJ1ZyBmdW5jdGlvbmFsaXR5XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Zy5jLTQtICogQ29weXJpZ2h0IChDKSAyMDI1IEdvb2dsZSBMTEMsIFBhc2hhIFRhdGFzaGluIFx1MDAzY3Bhc2hhLnRhdGFzaGluQHNvbGVlbi5jb21cdTAwM2Vcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Zy5jLTgtXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Zy5jOjk6I2luY2x1ZGUgXCYjMzQ7a2V4ZWNfaGFuZG92ZXJfaW50ZXJuYWwuaFwmIzM0O1xua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfZGVidWcuYy0xMC1cbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Z2ZzLmMtMi0vKlxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfZGVidWdmcy5jOjM6ICoga2V4ZWNfaGFuZG92ZXJfZGVidWdmcy5jIC0ga2V4ZWMgaGFuZG92ZXIgZGVidWdmcyBpbnRlcmZhY2VzXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Z2ZzLmMtNC0gKiBDb3B5cmlnaHQgKEMpIDIwMjMgQWxleGFuZGVyIEdyYWYgXHUwMDNjZ3JhZkBhbWF6b24uY29tXHUwMDNlXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfZGVidWdmcy5jLTE1LSNpbmNsdWRlIFx1MDAzY2xpbnV4L21tLmhcdTAwM2Vcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnZnMuYzoxNjojaW5jbHVkZSBcdTAwM2NsaW51eC9raG8vYWJpL2tleGVjX2hhbmRvdmVyLmhcdTAwM2Vcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnZnMuYzoxNzojaW5jbHVkZSBcJiMzNDtrZXhlY19oYW5kb3Zlcl9pbnRlcm5hbC5oXCYjMzQ7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Z2ZzLmMtMTgtXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfaW50ZXJuYWwuaC00LVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfaW50ZXJuYWwuaDo1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2tleGVjX2hhbmRvdmVyLmhcdTAwM2Vcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2ludGVybmFsLmgtNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2Vcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9raG9fYmxvY2suYy0yMy0jaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9raG9fYmxvY2suYzoyNDojaW5jbHVkZSBcdTAwM2NsaW51eC9rZXhlY19oYW5kb3Zlci5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9raG9fYmxvY2suYy0yNS0jaW5jbHVkZSBcdTAwM2NsaW51eC9raG8vYWJpL2Jsb2NrLmhcdTAwM2Vcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fY29yZS5jLTUzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fY29yZS5jOjU0OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2tleGVjX2hhbmRvdmVyLmhcdTAwM2Vcbmtlcm5lbC9saXZldXBkYXRlL2x1b19jb3JlLmMtNTUtI2luY2x1ZGUgXHUwMDNjbGludXgva2hvL2FiaS9sdW8uaFx1MDAzZVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19jb3JlLmMtNjMtXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fY29yZS5jOjY0OiNpbmNsdWRlIFwmIzM0O2tleGVjX2hhbmRvdmVyX2ludGVybmFsLmhcJiMzNDtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19jb3JlLmMtNjUtI2luY2x1ZGUgXCYjMzQ7bHVvX2ludGVybmFsLmhcJiMzNDtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTEwNC0jaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjEwNTojaW5jbHVkZSBcdTAwM2NsaW51eC9rZXhlY19oYW5kb3Zlci5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTEwNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9raG8vYWJpL2x1by5oXHUwMDNlXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZsYi5jLTQ0LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvLmhcdTAwM2Vcbmtlcm5lbC9saXZldXBkYXRlL2x1b19mbGIuYzo0NTojaW5jbHVkZSBcdTAwM2NsaW51eC9rZXhlY19oYW5kb3Zlci5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmxiLmMtNDYtI2luY2x1ZGUgXHUwMDNjbGludXgva2hvL2FiaS9sdW8uaFx1MDAzZVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19zZXNzaW9uLmMtOTEtI2luY2x1ZGUgXHUwMDNjbGludXgvaW8uaFx1MDAzZVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX3Nlc3Npb24uYzo5MjojaW5jbHVkZSBcdTAwM2NsaW51eC9rZXhlY19oYW5kb3Zlci5oXHUwMDNlXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fc2Vzc2lvbi5jLTkzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2tob19ibG9jay5oXHUwMDNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MTYKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtleGVjIEhhbmRvdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYnVpbGQgZmlsZSBhbmQgaXQgc2VlbXMgdGhlIGBDT05GSUdfS0VYRUNfSEFORE9WRVJgIG9wdGlvbiBpcyB3aGF0IGNvbnRyb2xzIHdoZXRoZXIgYSBzcGVjaWZpYyBmaWxlIGdldHMgaW5jbHVkZWQuIFJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBpdCBsb29rcyBsaWtlIGBrZXhlY19oYW5kb3Zlci5vYCBnZXRzIGFkZGVkIHRvIHRoZSBidWlsZCBvYmplY3QgbGlzdC4gTm93LCBpcyB0aGlzIGEgbW9kdWxlPyBUaGUgc3ludGF4IGhlcmUsIGBvYmotJChDT05GSUdfS0VYRUNfSEFORE9WRVIpICYjNDM7PSBrZXhlY19oYW5kb3Zlci5vYCwgdXN1YWxseSBtZWFucyBpdCYjMzk7cyBhIG1vZHVsZSwgYnVpbHQgaWYgdGhlIGNvbmZpZyBvcHRpb24gaXMgZW5hYmxlZC4gQnV0IHdhaXQuLi4gaWYgYENPTkZJR19LRVhFQ19IQU5ET1ZFUmAgaXMgYSBib29sZWFuLCB0aGVuIHRoaXMgd2lsbCBhbHdheXMgYmUgYnVpbHQtaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGl0IGlzLiBBbHJpZ2h0LCBiZXN0IHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBLRVhFQ19IQU5ET1ZFUmAgYW5kIGdldCBhIGRlZmluaXRpdmUgYW5zd2VyLiBJIG5lZWQgdG8gc2VlIHdoYXQgdGhhdCBjb25maWcgb3B0aW9uIGFjdHVhbGx5IGRlZmluZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLRVhFQ19IQU5ET1ZFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnPTM9bWVudSBcJiMzNDtMaXZlIFVwZGF0ZSBhbmQgS2V4ZWMgSGFuZE92ZXJcJiMzNDtcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctNC1cbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWc6NTpjb25maWcgS0VYRUNfSEFORE9WRVJcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7a2V4ZWMgaGFuZG92ZXJcJiMzNDtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnLTE3LVxua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZzoxODpjb25maWcgS0VYRUNfSEFORE9WRVJfREVCVUdcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctMTktXHRib29sIFwmIzM0O0VuYWJsZSBLZXhlYyBIYW5kb3ZlciBkZWJ1ZyBjaGVja3NcJiMzNDtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnLTI2LVxua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZzoyNzpjb25maWcgS0VYRUNfSEFORE9WRVJfREVCVUdGU1xua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7a2V4ZWMgaGFuZG92ZXIgZGVidWdmcyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnLTM3LVxua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZzozODpjb25maWcgS0VYRUNfSEFORE9WRVJfRU5BQkxFX0RFRkFVTFRcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctMzktXHRib29sIFwmIzM0O0VuYWJsZSBrZXhlYyBoYW5kb3ZlciBieSBkZWZhdWx0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAzOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNTYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBraG9fb3V0X2ZkdF9zZXR1cGAqKgoKQWxyaWdodCwgYSBgYm9vbGAuIFRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkOyBpdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGRhdGEgdHlwZSwgcHJvYmFibHkgaGFuZGxlZCBlZmZpY2llbnRseSBhdCB0aGUgaGFyZHdhcmUgbGV2ZWwuIE5vdywgSSYjMzk7bSBhc3N1bWluZywgYmFzZWQgb24gdGhlIG5hbWluZyBjb252ZW50aW9uLCB0aGF0IGBraG9fb3V0X2ZkdF9zZXR1cGAgaXMgYW4gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIHNwZWNpZmljYWxseSBhbiBgX19pbml0YCBpbiB0aGlzIGNvbnRleHQuIElmIHNvLCB0aGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIGl0JiMzOTtzIGV4ZWN1dGVkIGR1cmluZyB0aGUgc3lzdGVtIGJvb3Qgc2VxdWVuY2UuIEhvd2V2ZXIsIEkgbmVlZCB0byBjb25maXJtIHRoaXMgYXNzdW1wdGlvbiBiZWZvcmUgcHJvY2VlZGluZy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzICpvbmx5KiBjYWxsZWQgZHVyaW5nIGJvb3QuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBga2hvX2luaXRgIGlzLCBpbiBmYWN0LCB0aGUgKnNvbGUqIGNhbGxlci4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBvZiB0aGlzIGV4ZWN1dGlvbiBjb250ZXh0IGJlZm9yZSBJIGNhbiBlZmZlY3RpdmVseSBhc3Nlc3MgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb24gdGhlIHN5c3RlbS4gQW55IG90aGVyIGNhbGwgcGF0aHMgd291bGQgZHJhc3RpY2FsbHkgY2hhbmdlIGhvdyBJIGFwcHJvYWNoIGl0cyBhbmFseXNpcy4gTGV0IG1lIGNoZWNrIHRoZSBjYWxsIGdyYXBoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtraG9fb3V0X2ZkdF9zZXR1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE0MTE9c3RhdGljIGludCBfX2luaXQga2hvX21lbV9yZXRyaWV2ZShjb25zdCB2b2lkICpmZHQpXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDMyLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNDMzOnN0YXRpYyBfX2luaXQgaW50IGtob19vdXRfZmR0X3NldHVwKHZvaWQpXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE0MzQte1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MTU2MT1zdGF0aWMgX19pbml0IGludCBraG9faW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTU4OS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTU5MDpcdGVyciA9IGtob19vdXRfZmR0X3NldHVwKCk7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE1OTEtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODk3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgYSBLZXJuZWwgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgY2hhbmdlIEkmIzM5O20gbG9va2luZyBhdCwgaXQmIzM5O3Mgb25seSBjYWxsZWQgZnJvbSBga2hvX2luaXRgLCByaWdodD8gQW5kIGBraG9faW5pdGAgaXMgYW4gYGZzX2luaXRjYWxsYCwgbWVhbmluZyBpdCYjMzk7cyBhIGZpbGUgc3lzdGVtIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gYSB1c2VyIHNvbWVob3cgdHJpZ2dlciB0aGlzIGZyb20gdXNlcnNwYWNlPyBObywgdGhhdCBzZWVtcyB1bmxpa2VseSwgYW5kIHRoYXQmIzM5O3MgZ29vZC4gTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGNoYW5nZSBoYXMgYW55IGZ1bmN0aW9uYWwgaW1wYWN0IHRoYXQmIzM5O3Mgd29ydGggZnV6emluZy4KCkxldCYjMzk7cyBzZWXigKYgSXQmIzM5O3MgYW4gYF9faW5pdGAgZnVuY3Rpb24sIHNvIGl0IHJ1bnMgKm9uY2UqLCBkdXJpbmcgYm9vdC4gSWYgdGhlIGZ1bmN0aW9uIGVuY291bnRlcnMgYW4gZXJyb3IsIGl0IHJldHVybnMgYW4gZXJyb3IgdmFsdWUuIE9rYXksIHdoYXQgaGFwcGVucyB3aGVuIGl0IHJldHVybnMgYW4gZXJyb3I/IFdpbGwgaXQgYmUgaWdub3JlZCwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIHN1YnRsZSBidWcgbGF0ZXIsIG9yIHdpbGwgaXQgY2F1c2UgYSBib290IGZhaWx1cmU/IFdhaXQgYSBtaW51dGUsIGBraG9faW5pdGAgKmRvZXMqIHJldHVybiBhbiBlcnJvciB2YWx1ZS4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGF0IGBraG9faW5pdGAgYWN0dWFsbHkgKmRvZXMqIHdpdGggdGhhdCBlcnJvciByZXR1cm4gdmFsdWUgdG8gZGV0ZXJtaW5lIGhvdyBzaWduaWZpY2FudCB0aGlzIGNoYW5nZSBhY3R1YWxseSBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDM6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2hvX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MzY4PUVYUE9SVF9TWU1CT0xfR1BMKGtob19yYWRpeF93YWxrX3RyZWUpO1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzcwLS8qIEZvciBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgMC1vcmRlciBwYWdlcy4gKi9cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MzcxOnN0YXRpYyB2b2lkIGtob19pbml0X3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0zNzIte1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzc5LVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzozODA6c3RhdGljIHZvaWQga2hvX2luaXRfZm9saW8oc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcilcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzgxLXtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTM5Nz1zdGF0aWMgc3RydWN0IHBhZ2UgKmtob19yZXN0b3JlX3BhZ2UocGh5c19hZGRyX3QgcGh5cywgYm9vbCBpc19mb2xpbylcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTQxOS1cdGlmIChpc19mb2xpbylcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6NDIwOlx0XHRraG9faW5pdF9mb2xpbyhwYWdlLCBpbmZvLm9yZGVyKTtcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDIxLVx0ZWxzZVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzo0MjI6XHRcdGtob19pbml0X3BhZ2VzKHBhZ2UsIG5yX3BhZ2VzKTtcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDIzLVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MTU0NT1zdGF0aWMgaW50IF9faW5pdCBraG9fa2V4ZWNfbWV0YWRhdGFfaW5pdChjb25zdCB2b2lkICpmZHQpXG4tLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNTYwLVxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNTYxOnN0YXRpYyBfX2luaXQgaW50IGtob19pbml0KHZvaWQpXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE1NjIte1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTY0My19XG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE2NDQ6ZnNfaW5pdGNhbGwoa2hvX2luaXQpO1xua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNjQ1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODIxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipFdmFsdWF0aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBga2hvX2luaXRgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGJlZm9yZSBJIGV2ZW4gY29uc2lkZXIgZnV6emluZyBzb21ldGhpbmcgaXMgZmlndXJlIG91dCBpZiBpdCYjMzk7cyBldmVuICp3b3J0aCogdGhlIGVmZm9ydC4gSXMgYGtob19pbml0YCBhIGxpa2VseSBjYW5kaWRhdGU/IERvZXMgaXQgaGFuZGxlIGV4dGVybmFsIGlucHV0cywgcHJvY2VzcyBkYXRhLCBwZXJmb3JtIGFueSBraW5kIG9mIG5vbi10cml2aWFsIG9wZXJhdGlvbiB0aGF0IG1pZ2h0IGJlIHN1c2NlcHRpYmxlIHRvIHZ1bG5lcmFiaWxpdGllcz8gT3IgaXMgaXQganVzdCBzb21lIGludGVybmFsIHNldHVwIHJvdXRpbmUgdGhhdCYjMzk7cyB1bmxpa2VseSB0byByZXZlYWwgYW55dGhpbmcgaW50ZXJlc3RpbmcgdGhyb3VnaCBmdXp6aW5nPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcmVhZCB0aGUgc291cmNlIGNvZGUgb2YgYGtob19pbml0YC4gQSBxdWljayBnbGFuY2Ugc2hvdWxkIHRlbGwgbWUgaWYgaXQmIzM5O3Mgd29ydGggaW52ZXN0aW5nIGZ1cnRoZXIgdGltZSBpbiB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24gZm9yIGZ1enppbmcuIElmIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCB1c2VyLXN1cHBsaWVkIGRhdGEgb3IgYW55IGtpbmQgb2YgZXh0ZXJuYWwgZGF0YSwgdGhlbiB3ZSBtaWdodCBoYXZlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSWYgbm90LCB0aGVuIHdlJiMzOTtsbCBzYXZlIG91ciB0aW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTYxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNTYxOlx0c3RhdGljIF9faW5pdCBpbnQga2hvX2luaXQodm9pZClcbjE1NjI6XHR7XG4xNTYzOlx0XHRzdHJ1Y3Qga2hvX3JhZGl4X3RyZWUgKnRyZWUgPSBcdTAwMjZraG9fb3V0LnJhZGl4X3RyZWU7XG4xNTY0Olx0XHRjb25zdCB2b2lkICpmZHQgPSBraG9fZ2V0X2ZkdCgpO1xuMTU2NTpcdFx0aW50IGVyciA9IDA7XG4xNTY2Olx0XG4xNTY3Olx0XHRpZiAoIWtob19lbmFibGUpXG4xNTY4Olx0XHRcdHJldHVybiAwO1xuMTU2OTpcdFxuMTU3MDpcdFx0dHJlZS1cdTAwM2Vyb290ID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO1xuMTU3MTpcdFx0aWYgKCF0cmVlLVx1MDAzZXJvb3QpIHtcbjE1NzI6XHRcdFx0ZXJyID0gLUVOT01FTTtcbjE1NzM6XHRcdFx0Z290byBlcnJfZnJlZV9zY3JhdGNoO1xuMTU3NDpcdFx0fVxuMTU3NTpcdFxuMTU3NjpcdFx0a2hvX291dC5mZHQgPSBraG9fYWxsb2NfcHJlc2VydmUoUEFHRV9TSVpFKTtcbjE1Nzc6XHRcdGlmIChJU19FUlIoa2hvX291dC5mZHQpKSB7XG4xNTc4Olx0XHRcdGVyciA9IFBUUl9FUlIoa2hvX291dC5mZHQpO1xuMTU3OTpcdFx0XHRnb3RvIGVycl9mcmVlX2tob19yYWRpeF90cmVlX3Jvb3Q7XG4xNTgwOlx0XHR9XG4xNTgxOlx0XG4xNTgyOlx0XHRlcnIgPSBraG9fZGVidWdmc19pbml0KCk7XG4xNTgzOlx0XHRpZiAoZXJyKVxuMTU4NDpcdFx0XHRnb3RvIGVycl9mcmVlX2ZkdDtcbjE1ODU6XHRcbjE1ODY6XHRcdGVyciA9IGtob19vdXRfZGVidWdmc19pbml0KFx1MDAyNmtob19vdXQuZGJnKTtcbjE1ODc6XHRcdGlmIChlcnIpXG4xNTg4Olx0XHRcdGdvdG8gZXJyX2ZyZWVfZmR0O1xuMTU4OTpcdFxuMTU5MDpcdFx0ZXJyID0ga2hvX291dF9mZHRfc2V0dXAoKTtcbjE1OTE6XHRcdGlmIChlcnIpXG4xNTkyOlx0XHRcdGdvdG8gZXJyX2ZyZWVfZmR0O1xuMTU5MzpcdFxuMTU5NDpcdFx0ZXJyID0ga2hvX2tleGVjX21ldGFkYXRhX2luaXQoZmR0KTtcbjE1OTU6XHRcdGlmIChlcnIpXG4xNTk2Olx0XHRcdGdvdG8gZXJyX2ZyZWVfZmR0O1xuMTU5NzpcdFxuMTU5ODpcdFx0aWYgKGZkdCkge1xuMTU5OTpcdFx0XHRraG9faW5fZGVidWdmc19pbml0KFx1MDAyNmtob19pbi5kYmcsIGZkdCk7XG4xNjAwOlx0XHRcdHJldHVybiAwO1xuMTYwMTpcdFx0fVxuMTYwMjpcdFxuMTYwMzpcdFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIGtob19zY3JhdGNoX2NudDsgaSYjNDM7JiM0MzspIHtcbjE2MDQ6XHRcdFx0dW5zaWduZWQgbG9uZyBiYXNlX3BmbiA9IFBIWVNfUEZOKGtob19zY3JhdGNoW2ldLmFkZHIpO1xuMTYwNTpcdFx0XHR1bnNpZ25lZCBsb25nIGNvdW50ID0ga2hvX3NjcmF0Y2hbaV0uc2l6ZSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVDtcbjE2MDY6XHRcdFx0dW5zaWduZWQgbG9uZyBwZm47XG4xNjA3Olx0XG4xNjA4Olx0XHRcdC8qXG4xNjA5Olx0XHRcdCAqIFdoZW4gZGVidWdfcGFnZWFsbG9jIGlzIGVuYWJsZWQsIF9fZnJlZV9wYWdlcygpIGNsZWFycyB0aGVcbjE2MTA6XHRcdFx0ICogY29ycmVzcG9uZGluZyBQUkVTRU5UIGJpdCBpbiB0aGUga2VybmVsIHBhZ2UgdGFibGUuXG4xNjExOlx0XHRcdCAqIFN1YnNlcXVlbnQga21lbWxlYWsgc2NhbnMgb2YgdGhlc2UgcGFnZXMgY2F1c2UgdGhlXG4xNjEyOlx0XHRcdCAqIG5vbi1QUkVTRU5UIHBhZ2UgZmF1bHRzLlxuMTYxMzpcdFx0XHQgKiBNYXJrIHNjcmF0Y2ggYXJlYXMgd2l0aCBrbWVtbGVha19pZ25vcmVfcGh5cygpIHRvIGV4Y2x1ZGVcbjE2MTQ6XHRcdFx0ICogdGhlbSBmcm9tIGttZW1sZWFrIHNjYW5uaW5nLlxuMTYxNTpcdFx0XHQgKi9cbjE2MTY6XHRcdFx0a21lbWxlYWtfaWdub3JlX3BoeXMoa2hvX3NjcmF0Y2hbaV0uYWRkcik7XG4xNjE3Olx0XHRcdGZvciAocGZuID0gYmFzZV9wZm47IHBmbiBcdTAwM2MgYmFzZV9wZm4gJiM0MzsgY291bnQ7XG4xNjE4Olx0XHRcdCAgICAgcGZuICYjNDM7PSBwYWdlYmxvY2tfbnJfcGFnZXMpXG4xNjE5Olx0XHRcdFx0aW5pdF9jbWFfcmVzZXJ2ZWRfcGFnZWJsb2NrKHBmbl90b19wYWdlKHBmbikpO1xuMTYyMDpcdFx0fVxuMTYyMTpcdFxuMTYyMjpcdFx0V0FSTl9PTl9PTkNFKGtob19kZWJ1Z2ZzX2Jsb2JfYWRkKFx1MDAyNmtob19vdXQuZGJnLCBcJiMzNDtmZHRcJiMzNDssXG4xNjIzOlx0XHRcdFx0XHRcdCAga2hvX291dC5mZHQsXG4xNjI0Olx0XHRcdFx0XHRcdCAgZmR0X3RvdGFsc2l6ZShraG9fb3V0LmZkdCksIHRydWUpKTtcbjE2MjU6XHRcbjE2MjY6XHRcdHJldHVybiAwO1xuMTYyNzpcdFxuMTYyODpcdGVycl9mcmVlX2ZkdDpcbjE2Mjk6XHRcdGtob191bnByZXNlcnZlX2ZyZWUoa2hvX291dC5mZHQpO1xuMTYzMDpcdGVycl9mcmVlX2tob19yYWRpeF90cmVlX3Jvb3Q6XG4xNjMxOlx0XHRrZnJlZSh0cmVlLVx1MDAzZXJvb3QpO1xuMTYzMjpcdFx0dHJlZS1cdTAwM2Vyb290ID0gTlVMTDtcbjE2MzM6XHRlcnJfZnJlZV9zY3JhdGNoOlxuMTYzNDpcdFx0a2hvX291dC5mZHQgPSBOVUxMO1xuMTYzNTpcdFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIGtob19zY3JhdGNoX2NudDsgaSYjNDM7JiM0MzspIHtcbjE2MzY6XHRcdFx0dm9pZCAqc3RhcnQgPSBfX3ZhKGtob19zY3JhdGNoW2ldLmFkZHIpO1xuMTYzNzpcdFx0XHR2b2lkICplbmQgPSBzdGFydCAmIzQzOyBraG9fc2NyYXRjaFtpXS5zaXplO1xuMTYzODpcdFxuMTYzOTpcdFx0XHRmcmVlX3Jlc2VydmVkX2FyZWEoc3RhcnQsIGVuZCwgLTEsIFwmIzM0O1wmIzM0Oyk7XG4xNjQwOlx0XHR9XG4xNjQxOlx0XHRraG9fZW5hYmxlID0gZmFsc2U7XG4xNjQyOlx0XHRyZXR1cm4gZXJyO1xuMTY0MzpcdH1cbjE2NDQ6XHRmc19pbml0Y2FsbChraG9faW5pdCk7XG4xNjQ1Olx0XG4xNjQ2Olx0dm9pZCBfX2luaXQga2hvX21lbW9yeV9pbml0KHZvaWQpXG4xNjQ3Olx0e1xuMTY0ODpcdFx0aWYgKGtob19pbi5zY3JhdGNoX3BoeXMpIHtcbjE2NDk6XHRcdFx0a2hvX3NjcmF0Y2ggPSBwaHlzX3RvX3ZpcnQoa2hvX2luLnNjcmF0Y2hfcGh5cyk7XG4xNjUwOlx0XG4xNjUxOlx0XHRcdGlmIChraG9fbWVtX3JldHJpZXZlKGtob19nZXRfZmR0KCkpKVxuMTY1MjpcdFx0XHRcdGtob19pbi5mZHRfcGh5cyA9IDA7XG4xNjUzOlx0XHR9IGVsc2Uge1xuMTY1NDpcdFx0XHRraG9fcmVzZXJ2ZV9zY3JhdGNoKCk7XG4xNjU1Olx0XHR9XG4xNjU2Olx0fVxuMTY1NzpcdFxuMTY1ODpcdHZvaWQgX19pbml0IGtob19wb3B1bGF0ZShwaHlzX2FkZHJfdCBmZHRfcGh5cywgdTY0IGZkdF9sZW4sXG4xNjU5Olx0XHRcdFx0IHBoeXNfYWRkcl90IHNjcmF0Y2hfcGh5cywgdTY0IHNjcmF0Y2hfbGVuKVxuMTY2MDpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDM6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1OTAKCQkJCQkJCW91dHB1dDogMTYyCgkJCQkJCQl0aG91Z2h0czogMTAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQ6IGBraG9fb3V0X2ZkdF9zZXR1cGAqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBxdWlja2x5IGFzc2VzcyBpZiB0aGlzIHBhdGNoIGluIGBraG9fb3V0X2ZkdF9zZXR1cGDigJRjYWxsZWQgYnkgYGtob19pbml0YCwgd2hpY2ggaXMgYW4gYGZzX2luaXRjYWxsYOKAlG1lcml0ZWQgZnV6emluZy4gVGhlIGtleSBoZXJlIGlzIHRoYXQgaXQgcnVucyBhdCBib290LiBTeXprYWxsZXIsIGluIGl0cyBzdGFuZGFyZCBjb25maWd1cmF0aW9uLCB0eXBpY2FsbHkgZG9lc24mIzM5O3QgdGFyZ2V0IGJvb3QtdGltZSBjb2RlIHVubGVzcyB0aGVyZSYjMzk7cyBhIGNsZWFyIHBhdGh3YXkgdG8gdHJpZ2dlciBpdCBsYXRlciwgbGlrZSB0aHJvdWdoIG1vZHVsZSBsb2FkaW5nLgoKQnV0IHdhaXQsIGBraG9faW5pdGAgaXMgYSBzZXQtYW5kLWZvcmdldCBmdW5jdGlvbiEgSXQmIzM5O3Mgbm90IHRha2luZyBhbnkgdXNlciBpbnB1dC4gSXQmIzM5O3MganVzdCBzZXR0aW5nIHVwIHNvbWUgRkRUIHByb3BlcnRpZXMuIE9rYXksIGRpZ2dpbmcgZGVlcGVyLCB0aGUgd29yayBpcyBkb25lIHdpdGhpbiB0aGUgbGliZmR0IGxpYnJhcnkgZnVuY3Rpb25zIChgZmR0X2NyZWF0ZWAsIGBmZHRfZmluaXNoX3Jlc2VydmVtYXBgLCBldGMuKS4gVGhlIHBhdGNoIGlzIHNpbXBseSBhZGRpbmcgbW9yZSBleHBsaWNpdCBlcnJvciBoYW5kbGluZyBhcm91bmQgdGhvc2UgbGliZmR0IGNhbGxzLiBTdGlsbCwgbm8gdXNlciBpbnB1dCwganVzdCBpbnRlcm5hbCBvcGVyYXRpb25zLgoKYGtob19vdXRfZmR0X3NldHVwYCBjcmVhdGVzIGEgbmV3IEZEVCBpbiBga2hvX291dC5mZHRgLiBUaGlzIEZEVCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGtob19hbGxvY19wcmVzZXJ2ZWAuIEl0IGFwcGVhcnMgdG8gYmUgYW4gZW1wdHkgRkRULCB3aXRoIGEgc2luZ2xlIGBjb21wYXRpYmxlYCBwcm9wZXJ0eSBhbmQgYSBtZW1vcnkgbWFwLiBObyB1c2VyIGludGVyYWN0aW9uIGhlcmUgYXQgYWxsLCBpdCYjMzk7cyBhbGwgc3RhdGljLgoKQ291bGQgdGhpcyBmYWlsPyBQb3RlbnRpYWxseSwgYGZkdF9jcmVhdGVgIGNvdWxkIGZhaWwgaWYgdGhlIGFsbG9jYXRlZCBidWZmZXIgKGBQQUdFX1NJWkVgKSBpcyB0b28gc21hbGwuIEJ1dCB0aGF0JiMzOTtzIGhpZ2hseSB1bmxpa2VseSB3aXRoIGFuIGVtcHR5IEZEVDsgYFBBR0VfU0laRWAgaXMgbW9yZSB0aGFuIHN1ZmZpY2llbnQuIFRoZSBwYXRjaCBtYWlubHkgYWRkcyBleHBsaWNpdCBlcnJvciBjaGVja2luZyB0byB0aGUgbGliZmR0IGNhbGxzLgoKU28sIHNpbmNlIHRoaXMgY29kZSBpcyBvbmx5IHJ1biBhdCBib290LCBkb2VzbiYjMzk7dCB0YWtlIGlucHV0LCBhbmQgaXMganVzdCBjb25zdHJ1Y3RpbmcgYSBzdGF0aWMgRkRUIHN0cnVjdHVyZSwgSSYjMzk7bSBwcmV0dHkgY29uZmlkZW50IHRoYXQgaXQmIzM5O3MgY29tcGxldGVseSB1bnJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgZHVyaW5nIG5vcm1hbCBleGVjdXRpb24gYW5kIHRodXMsIG5vdCBkeW5hbWljYWxseSBmdXp6YWJsZS4gSXQmIzM5O3Mgbm90IHdvcnRoIHRoZSBlZmZvcnQuCgpMZXQgbWUgZG91YmxlLWNoZWNrIGZvciBhbnkgaG9va3MsIHN5c2ZzIG9yIGRlYnVnZnMgbWlnaHQgcHJvdmlkZSBhbiB1bmV4cGVjdGVkIHdheSB0byBhY2Nlc3MgdGhpcy4gTm90aGluZyB0byBiZSBmb3VuZCwgYGtob19pbml0YCBpcyBhbiBgZnNfaW5pdGNhbGxgIGFuZCBydW5zIGV4YWN0bHkgb25jZS4gSSYjMzk7dmUgZ3JlcHBlZCBmb3IgYGtob19vdXRfZmR0X3NldHVwYCBhbmQgY29uZmlybWVkIHRoZSBjYWxsc2l0ZS4gQW5kIGl0JiMzOTtzIGJ1aWx0LWluLCBzbyBubyBtb2R1bGUgcmVsb2FkaW5nLiBJdCYjMzk7cyBydW4gZXhhY3RseSBvbmNlIGF0IGJvb3QuIFN5emthbGxlciBpcyBub3QgZ29pbmcgdG8gYmUgYWJsZSB0byByZWFjaCB0aGlzLgoKQWxyaWdodCwgbGV0JiMzOTtzIHJldmlldyB0aGUgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBjcml0ZXJpYS4gVGhlIGNoYW5nZXMgaGVyZSBhcmUgbm90IHJlbGF0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29kZSBjb21tZW50cywgb3IgZGVjb3JhdGl2ZSBsb2dnaW5nLiBUaGV5IGFyZW4mIzM5O3QgbnVtZXJpYyBjb25zdGFudHMgdGhhdCBjaGFuZ2UgZXhlY3V0aW9uIGZsb3cuIEFuZCBjcnVjaWFsbHksIHRoaXMgY29kZSBwYXRoIGlzIGVmZmVjdGl2ZWx5IGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gSXQgcnVucyBkdXJpbmcgYm9vdCwgaXMgdW5yZWFjaGFibGUsIGFuZCBoYXMgbm8gdXNlci1zcGFjZSBpbnB1dC4KClllcywgYm9vdC10aW1lIGNvZGUgKmlzKiBjb25zaWRlcmVkICYjMzQ7aW1wb3NzaWJsZSB0byByZWFjaCYjMzQ7IGluIHRoZSBjb250ZXh0IG9mIHRoZSBmdXp6ZXIgKHN5emthbGxlcikgYmVjYXVzZSBib290LXRpbWUgZXhlY3V0aW9uIG9jY3VycyBiZWZvcmUgdGhlIGZ1enppbmcgbG9vcCBzdGFydHMuIFRoZSBmdXp6ZXIgY2Fubm90IGNvbnRyb2wgaXQuIFRoaXMgZnVuY3Rpb24gaGFzIG5vIGRhdGEgZGVwZW5kZW5jeSBvbiB1c2VyIHNwYWNlIG9yIGV4dGVybmFsIGRldmljZXMsIGZ1cnRoZXIgc29saWRpZnlpbmcgdGhpcyBjb25jbHVzaW9uLgoKU28sIHRoZSBkZWZpbml0aXZlIGFuc3dlciBpcyAqbm90IHdvcnRoIGZ1enppbmcqLgoKTGV0IG1lIHN1bW1hcml6ZSB0aGUgcmVhc29uaW5nIGluIGRldGFpbC4gVGhlIHBhdGNoIG1vZGlmaWVzIGBraG9fb3V0X2ZkdF9zZXR1cGAgaW4gYGtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNgIHRvIGFkZCBwcm9wZXIgZXJyb3IgY2hlY2tpbmcgdG8gbGliZmR0IGNhbGxzLiBUaGlzIGZ1bmN0aW9uIGlzIG1hcmtlZCBhcyBgX19pbml0YCBhbmQgaXMgb25seSBjYWxsZWQgb25jZSBkdXJpbmcga2VybmVsIGJvb3QgdmlhIGBmc19pbml0Y2FsbChraG9faW5pdClgLiBJdCB0YWtlcyBubyB1c2VyIGlucHV0IGFuZCBzaW1wbHkgaW5pdGlhbGl6ZXMgYSBzdGF0aWMgRmxhdHRlbmVkIERldmljZSBUcmVlIChGRFQpIGluIGEgcHJlLWFsbG9jYXRlZCBidWZmZXIuIEJlY2F1c2UgaXQgaXMgZXhlY3V0ZWQgb25seSBvbmNlIGF0IGJvb3QgdGltZSBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciBpbmZsdWVuY2VkIGJ5IHVzZXIgc3BhY2UgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24sIGl0IGlzIG5vdCByZWFjaGFibGUgYnkgdGhlIGZ1enplciBhbmQgdGhlcmVmb3JlIG5vdCB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBraG9fb3V0X2ZkdF9zZXR1cGAgaW4gYGtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNgIHRvIGFkZCBwcm9wZXIgZXJyb3IgY2hlY2tpbmcgdG8gbGliZmR0IGNhbGxzLiBUaGlzIGZ1bmN0aW9uIGlzIG1hcmtlZCBhcyBgX19pbml0YCBhbmQgaXMgb25seSBjYWxsZWQgb25jZSBkdXJpbmcga2VybmVsIGJvb3QgdmlhIGBmc19pbml0Y2FsbChraG9faW5pdClgLiBJdCB0YWtlcyBubyB1c2VyIGlucHV0IGFuZCBzaW1wbHkgaW5pdGlhbGl6ZXMgYSBzdGF0aWMgRmxhdHRlbmVkIERldmljZSBUcmVlIChGRFQpIGluIGEgcHJlLWFsbG9jYXRlZCBidWZmZXIuIEJlY2F1c2UgaXQgaXMgZXhlY3V0ZWQgb25seSBvbmNlIGF0IGJvb3QgdGltZSBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciBpbmZsdWVuY2VkIGJ5IHVzZXIgc3BhY2UgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24sIGl0IGlzIG5vdCByZWFjaGFibGUgYnkgdGhlIGZ1enplciBhbmQgdGhlcmVmb3JlIG5vdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGtob19vdXRfZmR0X3NldHVwYCBpbiBga2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY2AgdG8gYWRkIHByb3BlciBlcnJvciBjaGVja2luZyB0byBsaWJmZHQgY2FsbHMuIFRoaXMgZnVuY3Rpb24gaXMgbWFya2VkIGFzIGBfX2luaXRgIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIGR1cmluZyBrZXJuZWwgYm9vdCB2aWEgYGZzX2luaXRjYWxsKGtob19pbml0KWAuIEl0IHRha2VzIG5vIHVzZXIgaW5wdXQgYW5kIHNpbXBseSBpbml0aWFsaXplcyBhIHN0YXRpYyBGbGF0dGVuZWQgRGV2aWNlIFRyZWUgKEZEVCkgaW4gYSBwcmUtYWxsb2NhdGVkIGJ1ZmZlci4gQmVjYXVzZSBpdCBpcyBleGVjdXRlZCBvbmx5IG9uY2UgYXQgYm9vdCB0aW1lIGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIG9yIGluZmx1ZW5jZWQgYnkgdXNlciBzcGFjZSBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiwgaXQgaXMgbm90IHJlYWNoYWJsZSBieSB0aGUgZnV6emVyIGFuZCB0aGVyZWZvcmUgbm90IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMzoxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MDk6NTguMzkzNDg1NTk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA2NjY5NDkzMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBga2hvX291dF9mZHRfc2V0dXBgIGluIGBrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jYCB0byBhZGQgcHJvcGVyIGVycm9yIGNoZWNraW5nIHRvIGxpYmZkdCBjYWxscy4gVGhpcyBmdW5jdGlvbiBpcyBtYXJrZWQgYXMgYF9faW5pdGAgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2UgZHVyaW5nIGtlcm5lbCBib290IHZpYSBgZnNfaW5pdGNhbGwoa2hvX2luaXQpYC4gSXQgdGFrZXMgbm8gdXNlciBpbnB1dCBhbmQgc2ltcGx5IGluaXRpYWxpemVzIGEgc3RhdGljIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSAoRkRUKSBpbiBhIHByZS1hbGxvY2F0ZWQgYnVmZmVyLiBCZWNhdXNlIGl0IGlzIGV4ZWN1dGVkIG9ubHkgb25jZSBhdCBib290IHRpbWUgYW5kIGNhbm5vdCBiZSB0cmlnZ2VyZWQgb3IgaW5mbHVlbmNlZCBieSB1c2VyIHNwYWNlIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLCBpdCBpcyBub3QgcmVhY2hhYmxlIGJ5IHRoZSBmdXp6ZXIgYW5kIHRoZXJlZm9yZSBub3Qgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAzOjA5OjU4LjM5MzQ5MjQ5NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg2NjQ1Njc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgN2UxNjViMmQzMjEwYzczM2MzZDNlOGQ4OTc0MzgzOWQ3MTI4M2VhMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAyNCAwMzowOTo1NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jIGIva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1xcbmluZGV4IDE3NWMwOGE2ZTQxZTMuLjkzNDQzYWQ4NDUzZDIgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1xcbisrKyBiL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcXG5AQCAtMTQzOCwyMCArMTQzOCwzNCBAQCBzdGF0aWMgX19pbml0IGludCBraG9fb3V0X2ZkdF9zZXR1cCh2b2lkKVxcbiBcXHRpbnQgZXJyO1xcbiBcXG4gXFx0ZXJyID0gZmR0X2NyZWF0ZShyb290LCBQQUdFX1NJWkUpO1xcbi1cXHRlcnIgfD0gZmR0X2ZpbmlzaF9yZXNlcnZlbWFwKHJvb3QpO1xcbi1cXHRlcnIgfD0gZmR0X2JlZ2luX25vZGUocm9vdCwgXFxcIlxcXCIpO1xcbi1cXHRlcnIgfD0gZmR0X3Byb3BlcnR5X3N0cmluZyhyb290LCBcXFwiY29tcGF0aWJsZVxcXCIsIEtIT19GRFRfQ09NUEFUSUJMRSk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcdGVyciA9IGZkdF9maW5pc2hfcmVzZXJ2ZW1hcChyb290KTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0ZXJyID0gZmR0X2JlZ2luX25vZGUocm9vdCwgXFxcIlxcXCIpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRlcnIgPSBmZHRfcHJvcGVydHlfc3RyaW5nKHJvb3QsIFxcXCJjb21wYXRpYmxlXFxcIiwgS0hPX0ZEVF9DT01QQVRJQkxFKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuIFxcdHByZXNlcnZlZF9tZW1fdHJlZV9wYSA9IHZpcnRfdG9fcGh5cyh0cmVlLVxcdTAwM2Vyb290KTtcXG4gXFxuLVxcdGVyciB8PSBmZHRfcHJvcGVydHkocm9vdCwgS0hPX0ZEVF9NRU1PUllfTUFQX1BST1BfTkFNRSxcXG4tXFx0XFx0XFx0ICAgIFxcdTAwMjZwcmVzZXJ2ZWRfbWVtX3RyZWVfcGEsXFxuLVxcdFxcdFxcdCAgICBzaXplb2YocHJlc2VydmVkX21lbV90cmVlX3BhKSk7XFxuK1xcdGVyciA9IGZkdF9wcm9wZXJ0eShyb290LCBLSE9fRkRUX01FTU9SWV9NQVBfUFJPUF9OQU1FLFxcbitcXHRcXHRcXHQgICBcXHUwMDI2cHJlc2VydmVkX21lbV90cmVlX3BhLFxcbitcXHRcXHRcXHQgICBzaXplb2YocHJlc2VydmVkX21lbV90cmVlX3BhKSk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuIFxcbi1cXHRlcnIgfD0gZmR0X2VuZF9ub2RlKHJvb3QpO1xcbi1cXHRlcnIgfD0gZmR0X2ZpbmlzaChyb290KTtcXG4rXFx0ZXJyID0gZmR0X2VuZF9ub2RlKHJvb3QpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRlcnIgPSBmZHRfZmluaXNoKHJvb3QpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4tXFx0cmV0dXJuIGVycjtcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIF9faW5pdCBraG9faW5fa2V4ZWNfbWV0YWRhdGEodm9pZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MDk6NTguODgxNDU0NjU5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjAxNzg5NjYxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBraG9fb3V0X2ZkdF9zZXR1cGAgaW4gYGtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNgIHRvIGFkZCBwcm9wZXIgZXJyb3IgY2hlY2tpbmcgdG8gbGliZmR0IGNhbGxzLiBUaGlzIGZ1bmN0aW9uIGlzIG1hcmtlZCBhcyBgX19pbml0YCBhbmQgaXMgb25seSBjYWxsZWQgb25jZSBkdXJpbmcga2VybmVsIGJvb3QgdmlhIGBmc19pbml0Y2FsbChraG9faW5pdClgLiBJdCB0YWtlcyBubyB1c2VyIGlucHV0IGFuZCBzaW1wbHkgaW5pdGlhbGl6ZXMgYSBzdGF0aWMgRmxhdHRlbmVkIERldmljZSBUcmVlIChGRFQpIGluIGEgcHJlLWFsbG9jYXRlZCBidWZmZXIuIEJlY2F1c2UgaXQgaXMgZXhlY3V0ZWQgb25seSBvbmNlIGF0IGJvb3QgdGltZSBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciBpbmZsdWVuY2VkIGJ5IHVzZXIgc3BhY2UgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24sIGl0IGlzIG5vdCByZWFjaGFibGUgYnkgdGhlIGZ1enplciBhbmQgdGhlcmVmb3JlIG5vdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2UxNjViMmQzMjEwYzczM2MzZDNlOGQ4OTc0MzgzOWQ3MTI4M2VhMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDAzOjA5OjU3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYyBiL2tlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcbmluZGV4IDE3NWMwOGE2ZTQxZTMuLjkzNDQzYWQ4NDUzZDIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jXG4rKysgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jXG5AQCAtMTQzOCwyMCArMTQzOCwzNCBAQCBzdGF0aWMgX19pbml0IGludCBraG9fb3V0X2ZkdF9zZXR1cCh2b2lkKVxuIFx0aW50IGVycjtcbiBcbiBcdGVyciA9IGZkdF9jcmVhdGUocm9vdCwgUEFHRV9TSVpFKTtcbi1cdGVyciB8PSBmZHRfZmluaXNoX3Jlc2VydmVtYXAocm9vdCk7XG4tXHRlcnIgfD0gZmR0X2JlZ2luX25vZGUocm9vdCwgXCJcIik7XG4tXHRlcnIgfD0gZmR0X3Byb3BlcnR5X3N0cmluZyhyb290LCBcImNvbXBhdGlibGVcIiwgS0hPX0ZEVF9DT01QQVRJQkxFKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXHRlcnIgPSBmZHRfZmluaXNoX3Jlc2VydmVtYXAocm9vdCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1x0ZXJyID0gZmR0X2JlZ2luX25vZGUocm9vdCwgXCJcIik7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1x0ZXJyID0gZmR0X3Byb3BlcnR5X3N0cmluZyhyb290LCBcImNvbXBhdGlibGVcIiwgS0hPX0ZEVF9DT01QQVRJQkxFKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4gXG4gXHRwcmVzZXJ2ZWRfbWVtX3RyZWVfcGEgPSB2aXJ0X3RvX3BoeXModHJlZS1cdTAwM2Vyb290KTtcbiBcbi1cdGVyciB8PSBmZHRfcHJvcGVydHkocm9vdCwgS0hPX0ZEVF9NRU1PUllfTUFQX1BST1BfTkFNRSxcbi1cdFx0XHQgICAgXHUwMDI2cHJlc2VydmVkX21lbV90cmVlX3BhLFxuLVx0XHRcdCAgICBzaXplb2YocHJlc2VydmVkX21lbV90cmVlX3BhKSk7XG4rXHRlcnIgPSBmZHRfcHJvcGVydHkocm9vdCwgS0hPX0ZEVF9NRU1PUllfTUFQX1BST1BfTkFNRSxcbitcdFx0XHQgICBcdTAwMjZwcmVzZXJ2ZWRfbWVtX3RyZWVfcGEsXG4rXHRcdFx0ICAgc2l6ZW9mKHByZXNlcnZlZF9tZW1fdHJlZV9wYSkpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGVyciB8PSBmZHRfZW5kX25vZGUocm9vdCk7XG4tXHRlcnIgfD0gZmR0X2ZpbmlzaChyb290KTtcbitcdGVyciA9IGZkdF9lbmRfbm9kZShyb290KTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXHRlcnIgPSBmZHRfZmluaXNoKHJvb3QpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbiBcbi1cdHJldHVybiBlcnI7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgX19pbml0IGtob19pbl9rZXhlY19tZXRhZGF0YSh2b2lkKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MDk6NTguODgxNDU3MDk5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE2NDMyMzA4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IEZEVCBTZXR1cCBmb3IgTGl2ZSBVcGRhdGUqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jYCwgc3BlY2lmaWNhbGx5IHRoZSBga2hvX291dF9mZHRfc2V0dXBgIGZ1bmN0aW9uLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxvb2tzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0J3MgcmVwbGFjaW5nIGVycm9yIGFjY3VtdWxhdGlvbiB3aXRoIGltbWVkaWF0ZSBlcnJvciByZXR1cm5zIHdpdGhpbiB0aGUgRmxhdCBEZXZpY2UgVHJlZSAoRkRUKSBzZXR1cC4gSW5zdGVhZCBvZiBoYXZpbmcgbXVsdGlwbGUgYGVyciB8PSBmZHRfLi4uYCBsaW5lcywgaXQncyBub3cgYGVyciA9IGZkdF8uLi47IGlmIChlcnIpIHJldHVybiBlcnI7YC5cblxuVGhpcyBpcyBpbnRlcmVzdGluZy4gVGhlIHByZXZpb3VzIGFwcHJvYWNoIG9mIGNvbnRpbnVpbmcgZXhlY3V0aW9uIGFmdGVyIGFuIEZEVCBmdW5jdGlvbiBmYWlscyBpcyBkZWZpbml0ZWx5IHJpc2t5LiBBY2N1bXVsYXRpbmcgZXJyb3JzIGFuZCBwdXNoaW5nIGZvcndhcmQgY291bGQgYWJzb2x1dGVseSBsZWFkIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBvciBldmVuIG91dHJpZ2h0IGNyYXNoZXMgZG93bnN0cmVhbSBpZiBgZmR0X2NyZWF0ZWAgYmFpbHMgb3V0LCBidXQgc3Vic2VxdWVudCBjb2RlIHRoYXQgZXhwZWN0cyBhIHZhbGlkIEZEVCBzdHJ1Y3R1cmUgY29udGludWVzIHRvIHJ1bi4gVGhpcyBpcyBhIGNsYXNzaWMgZXhhbXBsZSBvZiBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIHByZXZlbnRpbmcgY2FzY2FkaW5nIGZhaWx1cmVzLiBBIHNpbmdsZSBgZmR0YCBmYWlsdXJlIHNob3VsZCBoYWx0IHRoZSBwcm9jZXNzLlxuXG5Ob3csIEkgd2FudCB0byB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSBpdHNlbGYuIExldCBtZSBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIGhvdyBga2hvX291dF9mZHRfc2V0dXBgIGlzIGFjdHVhbGx5IHVzZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCByZWFsbHkgaGVscCBtZSBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSBhbmQgd2hldGhlciBpdCdzIHRydWx5IGEgY3JpdGljYWwgaW1wcm92ZW1lbnQgZm9yIHN0YWJpbGl0eSBkdXJpbmcgbGl2ZSB1cGRhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzY2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MTA6MDQuMDQ1NzgyMTExWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MTM1NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImtob19vdXRfZmR0X3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYz0xNDExPXN0YXRpYyBpbnQgX19pbml0IGtob19tZW1fcmV0cmlldmUoY29uc3Qgdm9pZCAqZmR0KVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDMyLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTQzMzpzdGF0aWMgX19pbml0IGludCBraG9fb3V0X2ZkdF9zZXR1cCh2b2lkKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTQzNC17XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE1NjE9c3RhdGljIF9faW5pdCBpbnQga2hvX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTU4OS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE1OTA6XFx0ZXJyID0ga2hvX291dF9mZHRfc2V0dXAoKTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE1OTEtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MTA6MDQuMTIxOTI2MTE5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyMTgzMTk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgS0hPIEluaXRpYWxpemF0aW9uIFNlcXVlbmNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGtob19vdXRfZmR0X3NldHVwYCBoZXJlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQncyBjYWxsZWQgZnJvbSBga2hvX2luaXRgLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUbyByZWFsbHkgdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nLCBJIG5lZWQgdG8gdHJhY2UgdGhlIGZsb3cuIFNvLCBJIG5lZWQgdG8gZGlnIGludG8gYGtob19pbml0YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgdGhlIGluaXRpYWxpemF0aW9uIGlzIHNlcXVlbmNlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBgZmR0X3NldHVwYCBjYWxsLiBXaGF04oCZcyB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSB3aGVuIGBraG9fb3V0X2ZkdF9zZXR1cGAgaXMgdHJpZ2dlcmVkPyBXaGF0IGtleSBkYXRhIGlzIGluaXRpYWxpemVkIGJlZm9yZSwgb3IgcG90ZW50aWFsbHkgdXNlZCBhZnRlcj8gR290dGEgdW5kZXJzdGFuZCB0aGF0IHJlbGF0aW9uc2hpcC4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBwYXJ0aWN1bGFyIGBmZHRfc2V0dXBgIGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBLSE8gc3lzdGVtIHN0YXJ0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMzoxMDowNy4yNDM3NjIxNDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgxOTA4MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2hvX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTM2OD1FWFBPUlRfU1lNQk9MX0dQTChraG9fcmFkaXhfd2Fsa190cmVlKTtcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzcwLS8qIEZvciBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgMC1vcmRlciBwYWdlcy4gKi9cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjM3MTpzdGF0aWMgdm9pZCBraG9faW5pdF9wYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBucl9wYWdlcylcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTM3Mi17XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTM3OS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjM4MDpzdGF0aWMgdm9pZCBraG9faW5pdF9mb2xpbyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzgxLXtcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9Mzk3PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqa2hvX3Jlc3RvcmVfcGFnZShwaHlzX2FkZHJfdCBwaHlzLCBib29sIGlzX2ZvbGlvKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00MTktXFx0aWYgKGlzX2ZvbGlvKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6NDIwOlxcdFxcdGtob19pbml0X2ZvbGlvKHBhZ2UsIGluZm8ub3JkZXIpO1xcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDIxLVxcdGVsc2VcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjQyMjpcXHRcXHRraG9faW5pdF9wYWdlcyhwYWdlLCBucl9wYWdlcyk7XFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00MjMtXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE1NDU9c3RhdGljIGludCBfX2luaXQga2hvX2tleGVjX21ldGFkYXRhX2luaXQoY29uc3Qgdm9pZCAqZmR0KVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNTYwLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTU2MTpzdGF0aWMgX19pbml0IGludCBraG9faW5pdCh2b2lkKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTU2Mi17XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE2NDMtfVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTY0NDpmc19pbml0Y2FsbChraG9faW5pdCk7XFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNjQ1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMzoxMDowNy4zMjE5NTkzNDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzA2MjMwMDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS0hPIEluaXRpYWxpemF0aW9uIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBga2hvX2luaXRgIGlzIGFuIGBmc19pbml0Y2FsbGAsIG1lYW5pbmcgaXQncyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSBzeXN0ZW0gYm9vdCBzZXF1ZW5jZS4gQW5kIGhhbmcgb24sIGBraG9fb3V0X2ZkdF9zZXR1cGAgaXMgbWFya2VkIGFzIGBfX2luaXRgPyBUaGF0J3MgdHlwaWNhbGx5IGEgcmVkIGZsYWcgZm9yIGZ1enppbmcsIGlzbid0IGl0PyBUaGVzZSBraW5kcyBvZiBmdW5jdGlvbnMgYXJlIGRlc2lnbmVkIHRvIHJ1biBvbmNlLCBhdCBib290IHRpbWUsIGFuZCBhcmVuJ3QgZ2VuZXJhbGx5IGFjY2Vzc2libGUgZnJvbSB1c2VyIHNwYWNlLCB3aGljaCBpcyB3aGVyZSB3ZSB0eXBpY2FsbHkgZm9jdXMgb3VyIGZ1enppbmcgZWZmb3J0cyDigJMgc3lzY2FsbHMsIGlvY3RscywgbmV0d29yayBwYWNrZXRzLCBldGMuIFN5emthbGxlciAqZG9lcyogc29tZXRpbWVzIGxvb2sgYXQgYm9vdC10aW1lIHN0dWZmIGlmIGl0J3MgdGllZCB0byBkZXZpY2UgdHJlZXMgb3IgcmVsYXRlZCBpbml0aWFsaXphdGlvbnMsIGJ1dCBnZW5lcmFsbHksIGBfX2luaXRgIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgb25jZSBhbmQgdGhlbiBmb3Jnb3R0ZW4uXG5cbkhtbSwgYGtob19vdXRfZmR0X3NldHVwYCBpcyBjYWxsZWQgZnJvbSBga2hvX2luaXRgLCBhbmQgYGtob19pbml0YCBpcyBjYWxsZWQgdmlhIGBmc19pbml0Y2FsbChraG9faW5pdClgLiBTbywgdGhlIGVudGlyZSBjaGFpbiBleGVjdXRlcyBkdXJpbmcga2VybmVsIGluaXRpYWxpemF0aW9uLiBDYW4gSSB0cmlnZ2VyIHRoaXMgc2VxdWVuY2UgZnJvbSB1c2VyIHNwYWNlIGRpcmVjdGx5PyBObywgZGVmaW5pdGVseSBub3QuIGBmc19pbml0Y2FsbGAgbWVhbnMgaXQgcnVucyBiZWZvcmUgZXZlbiB1c2VyIHNwYWNlIGlzIGluaXRpYWxpemVkLlxuXG5XYWl0LCB3aGF0IGFib3V0IGtleGVjPyBDb3VsZCBhIGtlcm5lbCBpbWFnZSByZWxvYWQgc29tZWhvdyB0cmlnZ2VyIHRoaXM/IEl0J3Mgd29ydGggaW52ZXN0aWdhdGluZy4gTGV0IG1lIHNlZSBpZiBga2hvX291dF9mZHRfc2V0dXBgIGlzIHVzZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggY29tcGxldGVseSB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODY5LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAzOjEwOjEzLjAyODE5MjAwMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTkyNzc4NjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImtob19vdXRfZmR0X3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE0MTE9c3RhdGljIGludCBfX2luaXQga2hvX21lbV9yZXRyaWV2ZShjb25zdCB2b2lkICpmZHQpXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE0MzItXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzoxNDMzOnN0YXRpYyBfX2luaXQgaW50IGtob19vdXRfZmR0X3NldHVwKHZvaWQpXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDM0LXtcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9MTU2MT1zdGF0aWMgX19pbml0IGludCBraG9faW5pdCh2b2lkKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNTg5LVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTU5MDpcXHRlcnIgPSBraG9fb3V0X2ZkdF9zZXR1cCgpO1xcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTU5MS1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMzoxMDoxNS42MjA5NzYwMzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njc3NjEzOTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBraG9fb3V0X2ZkdF9zZXR1cGAgRHVyaW5nIEtleGVjIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGlzIGBraG9fb3V0X2ZkdF9zZXR1cGAgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYGtob19pbml0YCwgd2hpY2ggaXMsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgYW4gYGZzX2luaXRjYWxsYC4gVGhhdCBtZWFucyBpdCdzIGFuIGBfX2luaXRgIGZ1bmN0aW9uLCBzbyBpdHMgbWVtb3J5IGlzIGZyZWVkIGFmdGVyIHRoZSBib290IHByb2Nlc3MuIEl0IHdvdWxkbid0IGJlIGFjY2Vzc2libGUgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24sIG9yLCBpbXBvcnRhbnRseSwgZHVyaW5nIGEgZnV6emluZyBsb29wLiBOb3csIGRvZXMgU3l6a2FsbGVyIGV2ZW4gdHJ5IHRvIGZ1enogYGtleGVjYD8gWWVzLCBvZiBjb3Vyc2UgaXQgZG9lcywgdGhyb3VnaCBga2V4ZWNfbG9hZGAgYW5kIGBrZXhlY19maWxlX2xvYWRgIHN5c2NhbGxzLiBCdXQgc2luY2UgYGtob19pbml0YCBpcyBhbiBgZnNfaW5pdGNhbGxgLCBpdCBydW5zICpvbmx5KiBhdCBib290LlxuXG5TbywgdGhlIHF1ZXN0aW9uIGlzOiBpcyBga2hvX291dF9mZHRfc2V0dXBgIHJlYWNoYWJsZSB2aWEgYSBrZXhlYyBzZXF1ZW5jZT8gTm8sIGxvZ2ljYWxseSwgaXQgc2hvdWxkbid0IGJlLiBJdCdzIG1hcmtlZCBhcyBgX19pbml0YCwgc28gaXQgZ2V0cyBkaXNjYXJkZWQgcG9zdC1ib290LiBUaGF0IG1lYW5zIGl0IGFic29sdXRlbHkgKmNhbm5vdCogYmUgY2FsbGVkIGR1cmluZyBhIGtleGVjIGV4ZWN1dGlvbi5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2gsIHRoYXQgYGtob19pbml0YCByZWFsbHkgaXMgYW4gYGZzX2luaXRjYWxsYC4gWXVwLCBgZnNfaW5pdGNhbGwoa2hvX2luaXQpO2AgY29uZmlybXMgaXQuIFNvLCBga2hvX291dF9mZHRfc2V0dXBgIGV4ZWN1dGVzIHByZWNpc2VseSBvbmNlLCBhdCBib290LlxuXG5HZW5lcmFsbHkgc3BlYWtpbmcsIFN5emthbGxlciBkb2Vzbid0IGR5bmFtaWNhbGx5IGZ1enogYm9vdCBjb2RlIGR1cmluZyBpdHMgbm9ybWFsIGZ1enppbmcgbG9vcCB1bmxlc3MgaXQncyB0cmlnZ2VyZWQgYnkgYSBtb2R1bGUgbG9hZCBvciBzb21ldGhpbmcgc2ltaWxhci4gQnV0IHRoaXMgaXMgYnVpbHQtaW4gKGBmc19pbml0Y2FsbGApLCBzbyBpdCdzIGEgY29tcGxldGVseSBkaWZmZXJlbnQgc2l0dWF0aW9uLiBPbmUgbGFzdCB0aG91Z2h0OiBpcyBga2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY2AgYSBtb2R1bGU/IExldCBtZSBjaGVjayBpdHMgYE1ha2VmaWxlYCBvciBgS2NvbmZpZ2AgZm9yIGNvbmZpcm1hdGlvbiwganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjQ3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAzOjEwOjIyLjI5ODU5MzI2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTcyNTQyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrZXhlY19oYW5kb3ZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvbGl2ZXVwZGF0ZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2xpdmV1cGRhdGUvTWFrZWZpbGU9Mz1sdW8teSA6PVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL01ha2VmaWxlLTktXFxua2VybmVsL2xpdmV1cGRhdGUvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0tFWEVDX0hBTkRPVkVSKVxcdFxcdCs9IGtleGVjX2hhbmRvdmVyLm9cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfS0VYRUNfSEFORE9WRVJfREVCVUcpXFx0Kz0ga2V4ZWNfaGFuZG92ZXJfZGVidWcub1xcbmtlcm5lbC9saXZldXBkYXRlL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19LRVhFQ19IQU5ET1ZFUl9ERUJVR0ZTKVxcdCs9IGtleGVjX2hhbmRvdmVyX2RlYnVnZnMub1xcbmtlcm5lbC9saXZldXBkYXRlL01ha2VmaWxlLTEzLVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0yLS8qXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYzozOiAqIGtleGVjX2hhbmRvdmVyLmMgLSBrZXhlYyBoYW5kb3ZlciBtZXRhZGF0YSBwcm9jZXNzaW5nXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00LSAqIENvcHlyaWdodCAoQykgMjAyMyBBbGV4YW5kZXIgR3JhZiBcXHUwMDNjZ3JhZkBhbWF6b24uY29tXFx1MDAzZVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xOC0jaW5jbHVkZSBcXHUwMDNjbGludXgva2V4ZWMuaFxcdTAwM2VcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE5OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXhlY19oYW5kb3Zlci5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMjAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tob19yYWRpeF90cmVlLmhcXHUwMDNlXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0yMS0jaW5jbHVkZSBcXHUwMDNjbGludXgvdXRzbmFtZS5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MjI6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2toby9hYmkva2V4ZWNfaGFuZG92ZXIuaFxcdTAwM2VcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTIzLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9raG8vYWJpL2tleGVjX21ldGFkYXRhLmhcXHUwMDNlXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTM4LSNpbmNsdWRlIFxcXCIuLi9rZXhlY19pbnRlcm5hbC5oXFxcIlxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6Mzk6I2luY2x1ZGUgXFxcImtleGVjX2hhbmRvdmVyX2ludGVybmFsLmhcXFwiXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00MC1cXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnLmMtMi0vKlxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnLmM6MzogKiBrZXhlY19oYW5kb3Zlcl9kZWJ1Zy5jIC0ga2V4ZWMgaGFuZG92ZXIgb3B0aW9uYWwgZGVidWcgZnVuY3Rpb25hbGl0eVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnLmMtNC0gKiBDb3B5cmlnaHQgKEMpIDIwMjUgR29vZ2xlIExMQywgUGFzaGEgVGF0YXNoaW4gXFx1MDAzY3Bhc2hhLnRhdGFzaGluQHNvbGVlbi5jb21cXHUwMDNlXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Zy5jLTgtXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfZGVidWcuYzo5OiNpbmNsdWRlIFxcXCJrZXhlY19oYW5kb3Zlcl9pbnRlcm5hbC5oXFxcIlxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnLmMtMTAtXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Z2ZzLmMtMi0vKlxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnZnMuYzozOiAqIGtleGVjX2hhbmRvdmVyX2RlYnVnZnMuYyAtIGtleGVjIGhhbmRvdmVyIGRlYnVnZnMgaW50ZXJmYWNlc1xcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnZnMuYy00LSAqIENvcHlyaWdodCAoQykgMjAyMyBBbGV4YW5kZXIgR3JhZiBcXHUwMDNjZ3JhZkBhbWF6b24uY29tXFx1MDAzZVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfZGVidWdmcy5jLTE1LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbS5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnZnMuYzoxNjojaW5jbHVkZSBcXHUwMDNjbGludXgva2hvL2FiaS9rZXhlY19oYW5kb3Zlci5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2RlYnVnZnMuYzoxNzojaW5jbHVkZSBcXFwia2V4ZWNfaGFuZG92ZXJfaW50ZXJuYWwuaFxcXCJcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9kZWJ1Z2ZzLmMtMTgtXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlcl9pbnRlcm5hbC5oLTQtXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXJfaW50ZXJuYWwuaDo1OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXhlY19oYW5kb3Zlci5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyX2ludGVybmFsLmgtNi0jaW5jbHVkZSBcXHUwMDNjbGludXgvbGlzdC5oXFx1MDAzZVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2hvX2Jsb2NrLmMtMjMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvLmhcXHUwMDNlXFxua2VybmVsL2xpdmV1cGRhdGUva2hvX2Jsb2NrLmM6MjQ6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tleGVjX2hhbmRvdmVyLmhcXHUwMDNlXFxua2VybmVsL2xpdmV1cGRhdGUva2hvX2Jsb2NrLmMtMjUtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2toby9hYmkvYmxvY2suaFxcdTAwM2VcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19jb3JlLmMtNTMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19jb3JlLmM6NTQ6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tleGVjX2hhbmRvdmVyLmhcXHUwMDNlXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2NvcmUuYy01NS0jaW5jbHVkZSBcXHUwMDNjbGludXgva2hvL2FiaS9sdW8uaFxcdTAwM2VcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19jb3JlLmMtNjMtXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2NvcmUuYzo2NDojaW5jbHVkZSBcXFwia2V4ZWNfaGFuZG92ZXJfaW50ZXJuYWwuaFxcXCJcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fY29yZS5jLTY1LSNpbmNsdWRlIFxcXCJsdW9faW50ZXJuYWwuaFxcXCJcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMTA0LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pby5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6MTA1OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXhlY19oYW5kb3Zlci5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMTA2LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9raG8vYWJpL2x1by5oXFx1MDAzZVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZsYi5jLTQ0LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pby5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19mbGIuYzo0NTojaW5jbHVkZSBcXHUwMDNjbGludXgva2V4ZWNfaGFuZG92ZXIuaFxcdTAwM2VcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmxiLmMtNDYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2toby9hYmkvbHVvLmhcXHUwMDNlXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fc2Vzc2lvbi5jLTkxLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pby5oXFx1MDAzZVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19zZXNzaW9uLmM6OTI6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tleGVjX2hhbmRvdmVyLmhcXHUwMDNlXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX3Nlc3Npb24uYy05My0jaW5jbHVkZSBcXHUwMDNjbGludXgva2hvX2Jsb2NrLmhcXHUwMDNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAzOjEwOjIyLjM2ODMyMzgxOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjA2NzM2NjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2V4ZWMgSGFuZG92ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYnVpbGQgZmlsZSBhbmQgaXQgc2VlbXMgdGhlIGBDT05GSUdfS0VYRUNfSEFORE9WRVJgIG9wdGlvbiBpcyB3aGF0IGNvbnRyb2xzIHdoZXRoZXIgYSBzcGVjaWZpYyBmaWxlIGdldHMgaW5jbHVkZWQuIFJpZ2h0LCBsZXQncyBzZWUsIGl0IGxvb2tzIGxpa2UgYGtleGVjX2hhbmRvdmVyLm9gIGdldHMgYWRkZWQgdG8gdGhlIGJ1aWxkIG9iamVjdCBsaXN0LiBOb3csIGlzIHRoaXMgYSBtb2R1bGU/IFRoZSBzeW50YXggaGVyZSwgYG9iai0kKENPTkZJR19LRVhFQ19IQU5ET1ZFUikgKz0ga2V4ZWNfaGFuZG92ZXIub2AsIHVzdWFsbHkgbWVhbnMgaXQncyBhIG1vZHVsZSwgYnVpbHQgaWYgdGhlIGNvbmZpZyBvcHRpb24gaXMgZW5hYmxlZC4gQnV0IHdhaXQuLi4gaWYgYENPTkZJR19LRVhFQ19IQU5ET1ZFUmAgaXMgYSBib29sZWFuLCB0aGVuIHRoaXMgd2lsbCBhbHdheXMgYmUgYnVpbHQtaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGl0IGlzLiBBbHJpZ2h0LCBiZXN0IHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBLRVhFQ19IQU5ET1ZFUmAgYW5kIGdldCBhIGRlZmluaXRpdmUgYW5zd2VyLiBJIG5lZWQgdG8gc2VlIHdoYXQgdGhhdCBjb25maWcgb3B0aW9uIGFjdHVhbGx5IGRlZmluZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MTYsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMzoxMDoyNS41NzUwNjI1ODdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzgzOTgyNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtFWEVDX0hBTkRPVkVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnPTM9bWVudSBcXFwiTGl2ZSBVcGRhdGUgYW5kIEtleGVjIEhhbmRPdmVyXFxcIlxcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctNC1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnOjU6Y29uZmlnIEtFWEVDX0hBTkRPVkVSXFxua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZy02LVxcdGJvb2wgXFxcImtleGVjIGhhbmRvdmVyXFxcIlxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZy0xNy1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnOjE4OmNvbmZpZyBLRVhFQ19IQU5ET1ZFUl9ERUJVR1xcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctMTktXFx0Ym9vbCBcXFwiRW5hYmxlIEtleGVjIEhhbmRvdmVyIGRlYnVnIGNoZWNrc1xcXCJcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctMjYtXFxua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZzoyNzpjb25maWcgS0VYRUNfSEFORE9WRVJfREVCVUdGU1xcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWctMjgtXFx0Ym9vbCBcXFwia2V4ZWMgaGFuZG92ZXIgZGVidWdmcyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9LY29uZmlnLTM3LVxcbmtlcm5lbC9saXZldXBkYXRlL0tjb25maWc6Mzg6Y29uZmlnIEtFWEVDX0hBTkRPVkVSX0VOQUJMRV9ERUZBVUxUXFxua2VybmVsL2xpdmV1cGRhdGUvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJFbmFibGUga2V4ZWMgaGFuZG92ZXIgYnkgZGVmYXVsdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MTA6MjcuOTUzNDY3NDY1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODk3ODE5MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYGtob19vdXRfZmR0X3NldHVwYCoqXG5cbkFscmlnaHQsIGEgYGJvb2xgLiBUaGF0J3Mgc3RyYWlnaHRmb3J3YXJkOyBpdCdzIGEgZnVuZGFtZW50YWwgZGF0YSB0eXBlLCBwcm9iYWJseSBoYW5kbGVkIGVmZmljaWVudGx5IGF0IHRoZSBoYXJkd2FyZSBsZXZlbC4gTm93LCBJJ20gYXNzdW1pbmcsIGJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiwgdGhhdCBga2hvX291dF9mZHRfc2V0dXBgIGlzIGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgYW4gYF9faW5pdGAgaW4gdGhpcyBjb250ZXh0LiBJZiBzbywgdGhhdCBzdHJvbmdseSBzdWdnZXN0cyBpdCdzIGV4ZWN1dGVkIGR1cmluZyB0aGUgc3lzdGVtIGJvb3Qgc2VxdWVuY2UuIEhvd2V2ZXIsIEkgbmVlZCB0byBjb25maXJtIHRoaXMgYXNzdW1wdGlvbiBiZWZvcmUgcHJvY2VlZGluZy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyAqb25seSogY2FsbGVkIGR1cmluZyBib290LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYGtob19pbml0YCBpcywgaW4gZmFjdCwgdGhlICpzb2xlKiBjYWxsZXIuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gb2YgdGhpcyBleGVjdXRpb24gY29udGV4dCBiZWZvcmUgSSBjYW4gZWZmZWN0aXZlbHkgYXNzZXNzIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBzeXN0ZW0uIEFueSBvdGhlciBjYWxsIHBhdGhzIHdvdWxkIGRyYXN0aWNhbGx5IGNoYW5nZSBob3cgSSBhcHByb2FjaCBpdHMgYW5hbHlzaXMuIExldCBtZSBjaGVjayB0aGUgY2FsbCBncmFwaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM1NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAzOjEwOjMxLjc0MzI1MjA3NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxNzAwMzU1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJraG9fb3V0X2ZkdF9zZXR1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYz0xNDExPXN0YXRpYyBpbnQgX19pbml0IGtob19tZW1fcmV0cmlldmUoY29uc3Qgdm9pZCAqZmR0KVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNDMyLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTQzMzpzdGF0aWMgX19pbml0IGludCBraG9fb3V0X2ZkdF9zZXR1cCh2b2lkKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTQzNC17XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE1NjE9c3RhdGljIF9faW5pdCBpbnQga2hvX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTU4OS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjE1OTA6XFx0ZXJyID0ga2hvX291dF9mZHRfc2V0dXAoKTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE1OTEtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MTA6MzQuMDYwMjYwMjA1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzYyMTE3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBhIEtlcm5lbCBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIGNoYW5nZSBJJ20gbG9va2luZyBhdCwgaXQncyBvbmx5IGNhbGxlZCBmcm9tIGBraG9faW5pdGAsIHJpZ2h0PyBBbmQgYGtob19pbml0YCBpcyBhbiBgZnNfaW5pdGNhbGxgLCBtZWFuaW5nIGl0J3MgYSBmaWxlIHN5c3RlbSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIGEgdXNlciBzb21laG93IHRyaWdnZXIgdGhpcyBmcm9tIHVzZXJzcGFjZT8gTm8sIHRoYXQgc2VlbXMgdW5saWtlbHksIGFuZCB0aGF0J3MgZ29vZC4gTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGNoYW5nZSBoYXMgYW55IGZ1bmN0aW9uYWwgaW1wYWN0IHRoYXQncyB3b3J0aCBmdXp6aW5nLlxuXG5MZXQncyBzZWXigKYgSXQncyBhbiBgX19pbml0YCBmdW5jdGlvbiwgc28gaXQgcnVucyAqb25jZSosIGR1cmluZyBib290LiBJZiB0aGUgZnVuY3Rpb24gZW5jb3VudGVycyBhbiBlcnJvciwgaXQgcmV0dXJucyBhbiBlcnJvciB2YWx1ZS4gT2theSwgd2hhdCBoYXBwZW5zIHdoZW4gaXQgcmV0dXJucyBhbiBlcnJvcj8gV2lsbCBpdCBiZSBpZ25vcmVkLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGEgc3VidGxlIGJ1ZyBsYXRlciwgb3Igd2lsbCBpdCBjYXVzZSBhIGJvb3QgZmFpbHVyZT8gV2FpdCBhIG1pbnV0ZSwgYGtob19pbml0YCAqZG9lcyogcmV0dXJuIGFuIGVycm9yIHZhbHVlLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBhbmQgc2VlIHdoYXQgYGtob19pbml0YCBhY3R1YWxseSAqZG9lcyogd2l0aCB0aGF0IGVycm9yIHJldHVybiB2YWx1ZSB0byBkZXRlcm1pbmUgaG93IHNpZ25pZmljYW50IHRoaXMgY2hhbmdlIGFjdHVhbGx5IGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODk3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAzOjEwOjM4LjA5NjQ3NTEyMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg4NTI0OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2hvX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTM2OD1FWFBPUlRfU1lNQk9MX0dQTChraG9fcmFkaXhfd2Fsa190cmVlKTtcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzcwLS8qIEZvciBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgMC1vcmRlciBwYWdlcy4gKi9cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjM3MTpzdGF0aWMgdm9pZCBraG9faW5pdF9wYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBucl9wYWdlcylcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTM3Mi17XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTM3OS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjM4MDpzdGF0aWMgdm9pZCBraG9faW5pdF9mb2xpbyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMzgxLXtcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM9Mzk3PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqa2hvX3Jlc3RvcmVfcGFnZShwaHlzX2FkZHJfdCBwaHlzLCBib29sIGlzX2ZvbGlvKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00MTktXFx0aWYgKGlzX2ZvbGlvKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6NDIwOlxcdFxcdGtob19pbml0X2ZvbGlvKHBhZ2UsIGluZm8ub3JkZXIpO1xcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtNDIxLVxcdGVsc2VcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jOjQyMjpcXHRcXHRraG9faW5pdF9wYWdlcyhwYWdlLCBucl9wYWdlcyk7XFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy00MjMtXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jPTE1NDU9c3RhdGljIGludCBfX2luaXQga2hvX2tleGVjX21ldGFkYXRhX2luaXQoY29uc3Qgdm9pZCAqZmR0KVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNTYwLVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTU2MTpzdGF0aWMgX19pbml0IGludCBraG9faW5pdCh2b2lkKVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmMtMTU2Mi17XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jLTE2NDMtfVxcbmtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmM6MTY0NDpmc19pbml0Y2FsbChraG9faW5pdCk7XFxua2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuYy0xNjQ1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMzoxMDozOC4xNjUzMzE4NzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA5MDQzNjY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFdmFsdWF0aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBga2hvX2luaXRgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gVGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIGZ1enppbmcgc29tZXRoaW5nIGlzIGZpZ3VyZSBvdXQgaWYgaXQncyBldmVuICp3b3J0aCogdGhlIGVmZm9ydC4gSXMgYGtob19pbml0YCBhIGxpa2VseSBjYW5kaWRhdGU/IERvZXMgaXQgaGFuZGxlIGV4dGVybmFsIGlucHV0cywgcHJvY2VzcyBkYXRhLCBwZXJmb3JtIGFueSBraW5kIG9mIG5vbi10cml2aWFsIG9wZXJhdGlvbiB0aGF0IG1pZ2h0IGJlIHN1c2NlcHRpYmxlIHRvIHZ1bG5lcmFiaWxpdGllcz8gT3IgaXMgaXQganVzdCBzb21lIGludGVybmFsIHNldHVwIHJvdXRpbmUgdGhhdCdzIHVubGlrZWx5IHRvIHJldmVhbCBhbnl0aGluZyBpbnRlcmVzdGluZyB0aHJvdWdoIGZ1enppbmc/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byByZWFkIHRoZSBzb3VyY2UgY29kZSBvZiBga2hvX2luaXRgLiBBIHF1aWNrIGdsYW5jZSBzaG91bGQgdGVsbCBtZSBpZiBpdCdzIHdvcnRoIGludmVzdGluZyBmdXJ0aGVyIHRpbWUgaW4gdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGZvciBmdXp6aW5nLiBJZiBpdCdzIGRlYWxpbmcgd2l0aCB1c2VyLXN1cHBsaWVkIGRhdGEgb3IgYW55IGtpbmQgb2YgZXh0ZXJuYWwgZGF0YSwgdGhlbiB3ZSBtaWdodCBoYXZlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSWYgbm90LCB0aGVuIHdlJ2xsIHNhdmUgb3VyIHRpbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MjEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMzoxMDo0NS4yNTU3NzE0ODdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM3NDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTU2MSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE1NjE6XFx0c3RhdGljIF9faW5pdCBpbnQga2hvX2luaXQodm9pZClcXG4xNTYyOlxcdHtcXG4xNTYzOlxcdFxcdHN0cnVjdCBraG9fcmFkaXhfdHJlZSAqdHJlZSA9IFxcdTAwMjZraG9fb3V0LnJhZGl4X3RyZWU7XFxuMTU2NDpcXHRcXHRjb25zdCB2b2lkICpmZHQgPSBraG9fZ2V0X2ZkdCgpO1xcbjE1NjU6XFx0XFx0aW50IGVyciA9IDA7XFxuMTU2NjpcXHRcXG4xNTY3OlxcdFxcdGlmICgha2hvX2VuYWJsZSlcXG4xNTY4OlxcdFxcdFxcdHJldHVybiAwO1xcbjE1Njk6XFx0XFxuMTU3MDpcXHRcXHR0cmVlLVxcdTAwM2Vyb290ID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO1xcbjE1NzE6XFx0XFx0aWYgKCF0cmVlLVxcdTAwM2Vyb290KSB7XFxuMTU3MjpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjE1NzM6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9zY3JhdGNoO1xcbjE1NzQ6XFx0XFx0fVxcbjE1NzU6XFx0XFxuMTU3NjpcXHRcXHRraG9fb3V0LmZkdCA9IGtob19hbGxvY19wcmVzZXJ2ZShQQUdFX1NJWkUpO1xcbjE1Nzc6XFx0XFx0aWYgKElTX0VSUihraG9fb3V0LmZkdCkpIHtcXG4xNTc4OlxcdFxcdFxcdGVyciA9IFBUUl9FUlIoa2hvX291dC5mZHQpO1xcbjE1Nzk6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9raG9fcmFkaXhfdHJlZV9yb290O1xcbjE1ODA6XFx0XFx0fVxcbjE1ODE6XFx0XFxuMTU4MjpcXHRcXHRlcnIgPSBraG9fZGVidWdmc19pbml0KCk7XFxuMTU4MzpcXHRcXHRpZiAoZXJyKVxcbjE1ODQ6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9mZHQ7XFxuMTU4NTpcXHRcXG4xNTg2OlxcdFxcdGVyciA9IGtob19vdXRfZGVidWdmc19pbml0KFxcdTAwMjZraG9fb3V0LmRiZyk7XFxuMTU4NzpcXHRcXHRpZiAoZXJyKVxcbjE1ODg6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9mZHQ7XFxuMTU4OTpcXHRcXG4xNTkwOlxcdFxcdGVyciA9IGtob19vdXRfZmR0X3NldHVwKCk7XFxuMTU5MTpcXHRcXHRpZiAoZXJyKVxcbjE1OTI6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9mZHQ7XFxuMTU5MzpcXHRcXG4xNTk0OlxcdFxcdGVyciA9IGtob19rZXhlY19tZXRhZGF0YV9pbml0KGZkdCk7XFxuMTU5NTpcXHRcXHRpZiAoZXJyKVxcbjE1OTY6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9mZHQ7XFxuMTU5NzpcXHRcXG4xNTk4OlxcdFxcdGlmIChmZHQpIHtcXG4xNTk5OlxcdFxcdFxcdGtob19pbl9kZWJ1Z2ZzX2luaXQoXFx1MDAyNmtob19pbi5kYmcsIGZkdCk7XFxuMTYwMDpcXHRcXHRcXHRyZXR1cm4gMDtcXG4xNjAxOlxcdFxcdH1cXG4xNjAyOlxcdFxcbjE2MDM6XFx0XFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBraG9fc2NyYXRjaF9jbnQ7IGkrKykge1xcbjE2MDQ6XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBiYXNlX3BmbiA9IFBIWVNfUEZOKGtob19zY3JhdGNoW2ldLmFkZHIpO1xcbjE2MDU6XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBjb3VudCA9IGtob19zY3JhdGNoW2ldLnNpemUgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVDtcXG4xNjA2OlxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgcGZuO1xcbjE2MDc6XFx0XFxuMTYwODpcXHRcXHRcXHQvKlxcbjE2MDk6XFx0XFx0XFx0ICogV2hlbiBkZWJ1Z19wYWdlYWxsb2MgaXMgZW5hYmxlZCwgX19mcmVlX3BhZ2VzKCkgY2xlYXJzIHRoZVxcbjE2MTA6XFx0XFx0XFx0ICogY29ycmVzcG9uZGluZyBQUkVTRU5UIGJpdCBpbiB0aGUga2VybmVsIHBhZ2UgdGFibGUuXFxuMTYxMTpcXHRcXHRcXHQgKiBTdWJzZXF1ZW50IGttZW1sZWFrIHNjYW5zIG9mIHRoZXNlIHBhZ2VzIGNhdXNlIHRoZVxcbjE2MTI6XFx0XFx0XFx0ICogbm9uLVBSRVNFTlQgcGFnZSBmYXVsdHMuXFxuMTYxMzpcXHRcXHRcXHQgKiBNYXJrIHNjcmF0Y2ggYXJlYXMgd2l0aCBrbWVtbGVha19pZ25vcmVfcGh5cygpIHRvIGV4Y2x1ZGVcXG4xNjE0OlxcdFxcdFxcdCAqIHRoZW0gZnJvbSBrbWVtbGVhayBzY2FubmluZy5cXG4xNjE1OlxcdFxcdFxcdCAqL1xcbjE2MTY6XFx0XFx0XFx0a21lbWxlYWtfaWdub3JlX3BoeXMoa2hvX3NjcmF0Y2hbaV0uYWRkcik7XFxuMTYxNzpcXHRcXHRcXHRmb3IgKHBmbiA9IGJhc2VfcGZuOyBwZm4gXFx1MDAzYyBiYXNlX3BmbiArIGNvdW50O1xcbjE2MTg6XFx0XFx0XFx0ICAgICBwZm4gKz0gcGFnZWJsb2NrX25yX3BhZ2VzKVxcbjE2MTk6XFx0XFx0XFx0XFx0aW5pdF9jbWFfcmVzZXJ2ZWRfcGFnZWJsb2NrKHBmbl90b19wYWdlKHBmbikpO1xcbjE2MjA6XFx0XFx0fVxcbjE2MjE6XFx0XFxuMTYyMjpcXHRcXHRXQVJOX09OX09OQ0Uoa2hvX2RlYnVnZnNfYmxvYl9hZGQoXFx1MDAyNmtob19vdXQuZGJnLCBcXFwiZmR0XFxcIixcXG4xNjIzOlxcdFxcdFxcdFxcdFxcdFxcdCAga2hvX291dC5mZHQsXFxuMTYyNDpcXHRcXHRcXHRcXHRcXHRcXHQgIGZkdF90b3RhbHNpemUoa2hvX291dC5mZHQpLCB0cnVlKSk7XFxuMTYyNTpcXHRcXG4xNjI2OlxcdFxcdHJldHVybiAwO1xcbjE2Mjc6XFx0XFxuMTYyODpcXHRlcnJfZnJlZV9mZHQ6XFxuMTYyOTpcXHRcXHRraG9fdW5wcmVzZXJ2ZV9mcmVlKGtob19vdXQuZmR0KTtcXG4xNjMwOlxcdGVycl9mcmVlX2tob19yYWRpeF90cmVlX3Jvb3Q6XFxuMTYzMTpcXHRcXHRrZnJlZSh0cmVlLVxcdTAwM2Vyb290KTtcXG4xNjMyOlxcdFxcdHRyZWUtXFx1MDAzZXJvb3QgPSBOVUxMO1xcbjE2MzM6XFx0ZXJyX2ZyZWVfc2NyYXRjaDpcXG4xNjM0OlxcdFxcdGtob19vdXQuZmR0ID0gTlVMTDtcXG4xNjM1OlxcdFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2Mga2hvX3NjcmF0Y2hfY250OyBpKyspIHtcXG4xNjM2OlxcdFxcdFxcdHZvaWQgKnN0YXJ0ID0gX192YShraG9fc2NyYXRjaFtpXS5hZGRyKTtcXG4xNjM3OlxcdFxcdFxcdHZvaWQgKmVuZCA9IHN0YXJ0ICsga2hvX3NjcmF0Y2hbaV0uc2l6ZTtcXG4xNjM4OlxcdFxcbjE2Mzk6XFx0XFx0XFx0ZnJlZV9yZXNlcnZlZF9hcmVhKHN0YXJ0LCBlbmQsIC0xLCBcXFwiXFxcIik7XFxuMTY0MDpcXHRcXHR9XFxuMTY0MTpcXHRcXHRraG9fZW5hYmxlID0gZmFsc2U7XFxuMTY0MjpcXHRcXHRyZXR1cm4gZXJyO1xcbjE2NDM6XFx0fVxcbjE2NDQ6XFx0ZnNfaW5pdGNhbGwoa2hvX2luaXQpO1xcbjE2NDU6XFx0XFxuMTY0NjpcXHR2b2lkIF9faW5pdCBraG9fbWVtb3J5X2luaXQodm9pZClcXG4xNjQ3OlxcdHtcXG4xNjQ4OlxcdFxcdGlmIChraG9faW4uc2NyYXRjaF9waHlzKSB7XFxuMTY0OTpcXHRcXHRcXHRraG9fc2NyYXRjaCA9IHBoeXNfdG9fdmlydChraG9faW4uc2NyYXRjaF9waHlzKTtcXG4xNjUwOlxcdFxcbjE2NTE6XFx0XFx0XFx0aWYgKGtob19tZW1fcmV0cmlldmUoa2hvX2dldF9mZHQoKSkpXFxuMTY1MjpcXHRcXHRcXHRcXHRraG9faW4uZmR0X3BoeXMgPSAwO1xcbjE2NTM6XFx0XFx0fSBlbHNlIHtcXG4xNjU0OlxcdFxcdFxcdGtob19yZXNlcnZlX3NjcmF0Y2goKTtcXG4xNjU1OlxcdFxcdH1cXG4xNjU2OlxcdH1cXG4xNjU3OlxcdFxcbjE2NTg6XFx0dm9pZCBfX2luaXQga2hvX3BvcHVsYXRlKHBoeXNfYWRkcl90IGZkdF9waHlzLCB1NjQgZmR0X2xlbixcXG4xNjU5OlxcdFxcdFxcdFxcdCBwaHlzX2FkZHJfdCBzY3JhdGNoX3BoeXMsIHU2NCBzY3JhdGNoX2xlbilcXG4xNjYwOlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MTA6NDUuMjU1OTEyMDc3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzODA0NDgxNDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudDogYGtob19vdXRfZmR0X3NldHVwYCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBxdWlja2x5IGFzc2VzcyBpZiB0aGlzIHBhdGNoIGluIGBraG9fb3V0X2ZkdF9zZXR1cGDigJRjYWxsZWQgYnkgYGtob19pbml0YCwgd2hpY2ggaXMgYW4gYGZzX2luaXRjYWxsYOKAlG1lcml0ZWQgZnV6emluZy4gVGhlIGtleSBoZXJlIGlzIHRoYXQgaXQgcnVucyBhdCBib290LiBTeXprYWxsZXIsIGluIGl0cyBzdGFuZGFyZCBjb25maWd1cmF0aW9uLCB0eXBpY2FsbHkgZG9lc24ndCB0YXJnZXQgYm9vdC10aW1lIGNvZGUgdW5sZXNzIHRoZXJlJ3MgYSBjbGVhciBwYXRod2F5IHRvIHRyaWdnZXIgaXQgbGF0ZXIsIGxpa2UgdGhyb3VnaCBtb2R1bGUgbG9hZGluZy5cblxuQnV0IHdhaXQsIGBraG9faW5pdGAgaXMgYSBzZXQtYW5kLWZvcmdldCBmdW5jdGlvbiEgSXQncyBub3QgdGFraW5nIGFueSB1c2VyIGlucHV0LiBJdCdzIGp1c3Qgc2V0dGluZyB1cCBzb21lIEZEVCBwcm9wZXJ0aWVzLiBPa2F5LCBkaWdnaW5nIGRlZXBlciwgdGhlIHdvcmsgaXMgZG9uZSB3aXRoaW4gdGhlIGxpYmZkdCBsaWJyYXJ5IGZ1bmN0aW9ucyAoYGZkdF9jcmVhdGVgLCBgZmR0X2ZpbmlzaF9yZXNlcnZlbWFwYCwgZXRjLikuIFRoZSBwYXRjaCBpcyBzaW1wbHkgYWRkaW5nIG1vcmUgZXhwbGljaXQgZXJyb3IgaGFuZGxpbmcgYXJvdW5kIHRob3NlIGxpYmZkdCBjYWxscy4gU3RpbGwsIG5vIHVzZXIgaW5wdXQsIGp1c3QgaW50ZXJuYWwgb3BlcmF0aW9ucy5cblxuYGtob19vdXRfZmR0X3NldHVwYCBjcmVhdGVzIGEgbmV3IEZEVCBpbiBga2hvX291dC5mZHRgLiBUaGlzIEZEVCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGtob19hbGxvY19wcmVzZXJ2ZWAuIEl0IGFwcGVhcnMgdG8gYmUgYW4gZW1wdHkgRkRULCB3aXRoIGEgc2luZ2xlIGBjb21wYXRpYmxlYCBwcm9wZXJ0eSBhbmQgYSBtZW1vcnkgbWFwLiBObyB1c2VyIGludGVyYWN0aW9uIGhlcmUgYXQgYWxsLCBpdCdzIGFsbCBzdGF0aWMuXG5cbkNvdWxkIHRoaXMgZmFpbD8gUG90ZW50aWFsbHksIGBmZHRfY3JlYXRlYCBjb3VsZCBmYWlsIGlmIHRoZSBhbGxvY2F0ZWQgYnVmZmVyIChgUEFHRV9TSVpFYCkgaXMgdG9vIHNtYWxsLiBCdXQgdGhhdCdzIGhpZ2hseSB1bmxpa2VseSB3aXRoIGFuIGVtcHR5IEZEVDsgYFBBR0VfU0laRWAgaXMgbW9yZSB0aGFuIHN1ZmZpY2llbnQuIFRoZSBwYXRjaCBtYWlubHkgYWRkcyBleHBsaWNpdCBlcnJvciBjaGVja2luZyB0byB0aGUgbGliZmR0IGNhbGxzLlxuXG5Tbywgc2luY2UgdGhpcyBjb2RlIGlzIG9ubHkgcnVuIGF0IGJvb3QsIGRvZXNuJ3QgdGFrZSBpbnB1dCwgYW5kIGlzIGp1c3QgY29uc3RydWN0aW5nIGEgc3RhdGljIEZEVCBzdHJ1Y3R1cmUsIEknbSBwcmV0dHkgY29uZmlkZW50IHRoYXQgaXQncyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSBkdXJpbmcgbm9ybWFsIGV4ZWN1dGlvbiBhbmQgdGh1cywgbm90IGR5bmFtaWNhbGx5IGZ1enphYmxlLiBJdCdzIG5vdCB3b3J0aCB0aGUgZWZmb3J0LlxuXG5MZXQgbWUgZG91YmxlLWNoZWNrIGZvciBhbnkgaG9va3MsIHN5c2ZzIG9yIGRlYnVnZnMgbWlnaHQgcHJvdmlkZSBhbiB1bmV4cGVjdGVkIHdheSB0byBhY2Nlc3MgdGhpcy4gTm90aGluZyB0byBiZSBmb3VuZCwgYGtob19pbml0YCBpcyBhbiBgZnNfaW5pdGNhbGxgIGFuZCBydW5zIGV4YWN0bHkgb25jZS4gSSd2ZSBncmVwcGVkIGZvciBga2hvX291dF9mZHRfc2V0dXBgIGFuZCBjb25maXJtZWQgdGhlIGNhbGxzaXRlLiBBbmQgaXQncyBidWlsdC1pbiwgc28gbm8gbW9kdWxlIHJlbG9hZGluZy4gSXQncyBydW4gZXhhY3RseSBvbmNlIGF0IGJvb3QuIFN5emthbGxlciBpcyBub3QgZ29pbmcgdG8gYmUgYWJsZSB0byByZWFjaCB0aGlzLlxuXG5BbHJpZ2h0LCBsZXQncyByZXZpZXcgdGhlIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgY3JpdGVyaWEuIFRoZSBjaGFuZ2VzIGhlcmUgYXJlIG5vdCByZWxhdGVkIHRvIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvZGUgY29tbWVudHMsIG9yIGRlY29yYXRpdmUgbG9nZ2luZy4gVGhleSBhcmVuJ3QgbnVtZXJpYyBjb25zdGFudHMgdGhhdCBjaGFuZ2UgZXhlY3V0aW9uIGZsb3cuIEFuZCBjcnVjaWFsbHksIHRoaXMgY29kZSBwYXRoIGlzIGVmZmVjdGl2ZWx5IGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gSXQgcnVucyBkdXJpbmcgYm9vdCwgaXMgdW5yZWFjaGFibGUsIGFuZCBoYXMgbm8gdXNlci1zcGFjZSBpbnB1dC5cblxuWWVzLCBib290LXRpbWUgY29kZSAqaXMqIGNvbnNpZGVyZWQgXCJpbXBvc3NpYmxlIHRvIHJlYWNoXCIgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGZ1enplciAoc3l6a2FsbGVyKSBiZWNhdXNlIGJvb3QtdGltZSBleGVjdXRpb24gb2NjdXJzIGJlZm9yZSB0aGUgZnV6emluZyBsb29wIHN0YXJ0cy4gVGhlIGZ1enplciBjYW5ub3QgY29udHJvbCBpdC4gVGhpcyBmdW5jdGlvbiBoYXMgbm8gZGF0YSBkZXBlbmRlbmN5IG9uIHVzZXIgc3BhY2Ugb3IgZXh0ZXJuYWwgZGV2aWNlcywgZnVydGhlciBzb2xpZGlmeWluZyB0aGlzIGNvbmNsdXNpb24uXG5cblNvLCB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXIgaXMgKm5vdCB3b3J0aCBmdXp6aW5nKi5cblxuTGV0IG1lIHN1bW1hcml6ZSB0aGUgcmVhc29uaW5nIGluIGRldGFpbC4gVGhlIHBhdGNoIG1vZGlmaWVzIGBraG9fb3V0X2ZkdF9zZXR1cGAgaW4gYGtlcm5lbC9saXZldXBkYXRlL2tleGVjX2hhbmRvdmVyLmNgIHRvIGFkZCBwcm9wZXIgZXJyb3IgY2hlY2tpbmcgdG8gbGliZmR0IGNhbGxzLiBUaGlzIGZ1bmN0aW9uIGlzIG1hcmtlZCBhcyBgX19pbml0YCBhbmQgaXMgb25seSBjYWxsZWQgb25jZSBkdXJpbmcga2VybmVsIGJvb3QgdmlhIGBmc19pbml0Y2FsbChraG9faW5pdClgLiBJdCB0YWtlcyBubyB1c2VyIGlucHV0IGFuZCBzaW1wbHkgaW5pdGlhbGl6ZXMgYSBzdGF0aWMgRmxhdHRlbmVkIERldmljZSBUcmVlIChGRFQpIGluIGEgcHJlLWFsbG9jYXRlZCBidWZmZXIuIEJlY2F1c2UgaXQgaXMgZXhlY3V0ZWQgb25seSBvbmNlIGF0IGJvb3QgdGltZSBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciBpbmZsdWVuY2VkIGJ5IHVzZXIgc3BhY2UgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24sIGl0IGlzIG5vdCByZWFjaGFibGUgYnkgdGhlIGZ1enplciBhbmQgdGhlcmVmb3JlIG5vdCB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU5MCwiT3V0cHV0VG9rZW5zIjoxNjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDM6MTA6NTkuMDYwMzk1NjE1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGtob19vdXRfZmR0X3NldHVwYCBpbiBga2VybmVsL2xpdmV1cGRhdGUva2V4ZWNfaGFuZG92ZXIuY2AgdG8gYWRkIHByb3BlciBlcnJvciBjaGVja2luZyB0byBsaWJmZHQgY2FsbHMuIFRoaXMgZnVuY3Rpb24gaXMgbWFya2VkIGFzIGBfX2luaXRgIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIGR1cmluZyBrZXJuZWwgYm9vdCB2aWEgYGZzX2luaXRjYWxsKGtob19pbml0KWAuIEl0IHRha2VzIG5vIHVzZXIgaW5wdXQgYW5kIHNpbXBseSBpbml0aWFsaXplcyBhIHN0YXRpYyBGbGF0dGVuZWQgRGV2aWNlIFRyZWUgKEZEVCkgaW4gYSBwcmUtYWxsb2NhdGVkIGJ1ZmZlci4gQmVjYXVzZSBpdCBpcyBleGVjdXRlZCBvbmx5IG9uY2UgYXQgYm9vdCB0aW1lIGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIG9yIGluZmx1ZW5jZWQgYnkgdXNlciBzcGFjZSBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiwgaXQgaXMgbm90IHJlYWNoYWJsZSBieSB0aGUgZnV6emVyIGFuZCB0aGVyZWZvcmUgbm90IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBga2hvX291dF9mZHRfc2V0dXBgIGluIGBrZXJuZWwvbGl2ZXVwZGF0ZS9rZXhlY19oYW5kb3Zlci5jYCB0byBhZGQgcHJvcGVyIGVycm9yIGNoZWNraW5nIHRvIGxpYmZkdCBjYWxscy4gVGhpcyBmdW5jdGlvbiBpcyBtYXJrZWQgYXMgYF9faW5pdGAgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2UgZHVyaW5nIGtlcm5lbCBib290IHZpYSBgZnNfaW5pdGNhbGwoa2hvX2luaXQpYC4gSXQgdGFrZXMgbm8gdXNlciBpbnB1dCBhbmQgc2ltcGx5IGluaXRpYWxpemVzIGEgc3RhdGljIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSAoRkRUKSBpbiBhIHByZS1hbGxvY2F0ZWQgYnVmZmVyLiBCZWNhdXNlIGl0IGlzIGV4ZWN1dGVkIG9ubHkgb25jZSBhdCBib290IHRpbWUgYW5kIGNhbm5vdCBiZSB0cmlnZ2VyZWQgb3IgaW5mbHVlbmNlZCBieSB1c2VyIHNwYWNlIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLCBpdCBpcyBub3QgcmVhY2hhYmxlIGJ5IHRoZSBmdXp6ZXIgYW5kIHRoZXJlZm9yZSBub3Qgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAzOjEwOjU5LjA2MDQyMjY2NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow9xwtk[1] Phase: Running StartedAt: 2026-08-24 03:11:11 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9xwtk[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-24 03:11:11 +0000 UTC FinishedAt: 2026-08-24 03:11:15 +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,}