Name: series-workflownfd5s Phase: Failed StartedAt: 2026-07-30 06:00:44 +0000 UTC FinishedAt: 2026-07-30 06:21:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflownfd5s[0] Phase: Succeeded StartedAt: 2026-07-30 06:00:44 +0000 UTC FinishedAt: 2026-07-30 06:21:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflownfd5s[0].run-triage Phase: Succeeded StartedAt: 2026-07-30 06:00:44 +0000 UTC FinishedAt: 2026-07-30 06:21:17 +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+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBvciBBSEIgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MmY1ODk5Zjc4YjU5NWYwMmQ1MjJlZDRjMzBjYjg1MGEyNTI2NTZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDY6MTk6MDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbmluZGV4IDJiNzA3ZmZjMWEyMGYuLmNkMzA0MGI4Mzg4YzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG5AQCAtOTk3MywxMSAmIzQzOzk5NzMsNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4gXHR1MzIgZXZlbnRfY291bnQ7XG4gXHRpbnQgcmV0O1xuIFxuLVx0aWYgKCFza2ItXHUwMDNlZGF0YSkge1xuLVx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7Tm8gZGF0YSBwcmVzZW50IGluIHRwYyBzdGF0cyBldmVudFxcblwmIzM0Oyk7XG4tXHRcdHJldHVybjtcbi1cdH1cbi1cbiBcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAoc2l6ZW9mKCpmaXhlZF9wYXJhbSkgJiM0MzsgVExWX0hEUl9TSVpFKSkge1xuIFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7VFBDIHN0YXRzIGV2ZW50IHNpemUgaW52YWxpZFxcblwmIzM0Oyk7XG4gXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIG9yIEFIQiBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcyZjU4OTlmNzhiNTk1ZjAyZDUyMmVkNGMzMGNiODUwYTI1MjY1NmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAzMCAwNjoxOTowMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jCmluZGV4IDJiNzA3ZmZjMWEyMGYuLmNkMzA0MGI4Mzg4YzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYwpAQCAtOTk3MywxMSAmIzQzOzk5NzMsNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCiAJdTMyIGV2ZW50X2NvdW50OwogCWludCByZXQ7CiAKLQlpZiAoIXNrYi0mZ3Q7ZGF0YSkgewotCQlhdGgxMmtfd2FybihhYiwgJiMzNDtObyBkYXRhIHByZXNlbnQgaW4gdHBjIHN0YXRzIGV2ZW50XG4mIzM0Oyk7Ci0JCXJldHVybjsKLQl9Ci0KIAlpZiAoc2tiLSZndDtsZW4gJmx0OyAoc2l6ZW9mKCpmaXhlZF9wYXJhbSkgJiM0MzsgVExWX0hEUl9TSVpFKSkgewogCQlhdGgxMmtfd2FybihhYiwgJiMzNDtUUEMgc3RhdHMgZXZlbnQgc2l6ZSBpbnZhbGlkXG4mIzM0Oyk7CiAJCXJldHVybjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEyMgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDYyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enphYmlsaXR5IG9mIGFuIGF0aDEyayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHJlbW92ZXMgYSBgIXNrYi0mZ3Q7ZGF0YWAgY2hlY2sgaW4gYGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGFzc2VzcyBpZiBgYXRoMTJrYCBpcyBldmVuIGZ1enphYmxlLiBJdCYjMzk7cyBhIFF1YWxjb21tIFdpLUZpIDcgZHJpdmVyLCB1c2luZyBQQ0kgb3IgQUhCLiBUaGUgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IHRoZXNlIFdpLUZpIGRyaXZlcnMgb2Z0ZW4gbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSwgdW5sZXNzIHRoZXkmIzM5O3JlIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCBgYXRoMTJrYCBpcyBhIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciwgc28gdGhhdCBwb3NlcyBhIGNoYWxsZW5nZS4KCkhvd2V2ZXIsIEkgcmVtZW1iZXIgc3l6a2FsbGVyLiBEb2VzIGl0IGhhdmUgYW55IHRyaWNrcyB1cCBpdHMgc2xlZXZlPyBZZXMhIFN5emthbGxlciAqZG9lcyogZnV6eiBXaS1GaSBkcml2ZXJzIHZpYSBgbWFjODAyMTFfaHdzaW1gIGluIHNvbWUgY2FzZXMuIEl0ICpjYW4qIGZ1enogUENJIGRldmljZXMgaWYgdGhleSYjMzk7cmUgZW11bGF0ZWQgb3IgdXNpbmcgdmhjaSBvciBzaW1pbGFyIHRlY2huaXF1ZXMuLi5idXQgd2FpdCwgYGF0aDEya2AgaXMgYSBoYXJkd2FyZSBkcml2ZXIuLi5yaWdodD8gVGhlbiBJIHRoaW5rOiBTeXprYWxsZXIgKmRvZXMqIGFjdHVhbGx5IGZ1enogYXRoOWssIGF0aDEwaywgYXRoMTFrLCBhbmQgYXRoMTJrIHVzaW5nIFBDSSBmdXp6aW5nIChlLmcuIGBzeXpfcGNpXy4uLmApLgoKVGhlIHByb21wdCBpcyBtYWtpbmcgbWUgdGhpbmsgYWJvdXQgc3BlY2lmaWMgbGltaXRhdGlvbnMsIGl0IHJlYWRzLCAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBJcyBhdGgxMmsgb25lIG9mICp0aG9zZSo/CgpXYWl0LCBob2xkIG9uLCB0aGUgcGF0Y2ggYXV0aG9yIGlzIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YC4gU3l6a2FsbGVyIGlzIGZpbmRpbmcgYnVncyBoZXJlLCBzbyBjbGVhcmx5IGl0JiMzOTtzIGZ1enppbmcgKnNvbWV0aGluZyouIEkgbmVlZCB0byBjbGFyaWZ5OiBkb2VzIGl0IGZ1enogYGF0aDEya2AgdmlhIGBtYWM4MDIxMWAgb3IgUENJPyBUaGUgcHJvbXB0IGFsc28gc3RhdGVzLCAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7IGFuZCB0aGVuIHRoZSBzYW1lIFBDSWUgbGltaXRhdGlvbi4KClNvLCBpcyBgYXRoMTJrYCBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcj8gWWVzLCBpdCYjMzk7cyBRdWFsY29tbSBXaS1GaSwgd2hpY2ggc291bmRzIGxpa2UgaXQgaXMsIGJ1dCBpcyBpdCAqZnV6emVkKj8gSSBrbm93IHRoZXJlIGFyZSBzeXprYWxsZXIgcHNldWRvLXN5c2NhbGxzIGZvciBgbWFjODAyMTFgIChgc3l6XzgwMjExXy4uLmApLCBidXQgdGhhdCYjMzk7cyBhIGRpZmZlcmVudCBhcHByb2FjaC4gU3l6a2FsbGVyIENBTiBmdXp6IFBDSSBkcml2ZXJzIHVzaW5nIFBDSSBmdXp6aW5nLCB0aG91Z2guIEkgbmVlZCB0byBrbm93IGZvciBzdXJlIGlmIGBhdGgxMmtgIGlzIGJlaW5nIGZ1enplZC4gTGV0JiMzOTtzIGRvIGEgcXVpY2sgc2VhcmNoIGZvciBgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0c2Agd2l0aGluIHRoZSBzeXprYWxsZXIgY29udGV4dC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGRlZmluaXRpdmUgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz05OTQ4PXZvaWQgYXRoMTJrX3dtaV9mcmVlX3RwY19zdGF0c19tZW0oc3RydWN0IGF0aDEyayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy05OTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo5OTY0OnN0YXRpYyB2b2lkIGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHMoc3RydWN0IGF0aDEya19iYXNlICphYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtOTk2NS1cdFx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA2MS0jZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDA2MjpzdGF0aWMgdm9pZCBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwMDYzLVx0XHRcdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTEwMjkxPXN0YXRpYyB2b2lkIGF0aDEya193bWlfb3Bfcngoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDE5LVx0Y2FzZSBXTUlfSEFMUEhZX1NUQVRTX0NUUkxfUEFUSF9FVkVOVElEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDQyMDpcdFx0YXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0cyhhYiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA0MjEtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NjYKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhdGgxMmsqKgoKT2theSwgc28gYGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNgIGdldHMgY2FsbGVkIGZyb20gYGF0aDEya193bWlfb3BfcnhgLiBBIGtleSBxdWVzdGlvbiBhcmlzZXM6IGlzIHRoZSBhdGgxMmsgZHJpdmVyLCBzcGVjaWZpY2FsbHksIGdldHRpbmcgZnV6emVkIGJ5IHN5emthbGxlcj8gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHRoZSBQQ0kgZnV6emVyIGluIHN5emthbGxlciBtaWdodCBiZSBhdCBwbGF5LCBpbmplY3RpbmcgUENJIHBhY2tldHMuIENvdWxkIGl0IGJlIHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQmIzM5O3MgYSBzb2Z0d2FyZSBzaW11bGF0b3IsIHdoaWxlIGF0aDEyayBpcyBhIGhhcmR3YXJlIGRyaXZlci4gVGhhdCYjMzk7cyBhIGRlYWQgZW5kLiBBaCwgYnV0IHdhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSBhIFdpLUZpIGZ1enplci4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gSXMgYXRoMTJrIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyIHRoYXQgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmUgdG8gcnVuPyBZZXMsIGF0aDEyayBpcyB0aGF0IFF1YWxjb21tIFdpLUZpIDcgZHJpdmVyLiBTbywgZG9lcyBRRU1VIG9mZmVyIGFueSBlbXVsYXRpb24gaGVyZT8gTm9wZSwgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGF0aDEyay4KClNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogZG9lcyBzeXprYWxsZXIgYWN0dWFsbHkgZnV6eiB0aGlzIGRyaXZlcj8gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIFBDSWUgZHJpdmVyLCB0aGUgUENJIGZ1enplciBzZWVtcyBsaWtlIHRoZSBtb3N0IGxpa2VseSB2ZWN0b3IuIFN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyICpjYW4qIGZ1enogUENJIGRyaXZlcnMgYnkgZW11bGF0aW5nIFBDSSBkZXZpY2VzLiBUaGF0JiMzOTtzIHByb21pc2luZy4KClRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgc3l6a2FsbGVyIGhhcyBhbnkgc3BlY2lmaWMgZGV2aWNlIGRlc2NyaXB0aW9ucyBvciBjb25maWd1cmF0aW9ucyBmb3IgYXRoMTJrLiBUaGF0IHdvdWxkIGJlIHRoZSBiZXN0IHdheSB0byB1bmRlcnN0YW5kIGlmIGl0JiMzOTtzIHRhcmdldGVkIG9yIGhvdyBpdCBpcyBiZWluZyB0YXJnZXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEyayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NzAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0MTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25zdHJhaW50cyBhbmQgRGV0ZXJtaW5pbmcgdGhlIEFwcHJvcHJpYXRlIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkgc2VlIHRoZSBwcm9oaWJpdGlvbiBvbiB1c2luZyBgZ3JlcHBlcmAgZm9yIGBzeXMvYCBhbmQgYW55dGhpbmcgd2l0aCBgc3l6X2AsIHdoaWNoIG1ha2VzIHNlbnNlIGJlY2F1c2UgdGhvc2UgYXJlIHN5emthbGxlciBzcGVjaWZpY3MgYW5kIG5vdCBrZXJuZWwgY29kZS4gSSYjMzk7bSBsb29raW5nIGZvciByZWxldmFudCBrZXJuZWwgY29kZS4gVGhlIHByb21wdCBkaXJlY3RzIG1lIHRvIHVzZSBge3sudG9vbFJlYWREZXNjcmlwdGlvbn19YCwgYnV0IHRoYXQmIzM5O3Mgbm90IGluIG15IGF2YWlsYWJsZSB0b29scy4gSSYjMzk7dmUgZ290IGBncmVwcGVyYCwgYGNvZGVzZWFyY2gtZGlyLWluZGV4YCwgYHJlYWQtZmlsZWAsIGFuZCBgc2V0LXJlc3VsdHNgLiBTbywgSSYjMzk7bSBlZmZlY3RpdmVseSBibG9ja2VkIGZyb20gZGlyZWN0bHkgc2VhcmNoaW5nIHRob3NlIHN5emthbGxlciBkZXNjcmlwdGlvbnMuCgpOb3csIGxldCYjMzk7cyByZWZvY3VzLiBUaGUgcHJvYmxlbSBzcGFjZSBjZW50ZXJzIG9uIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIChQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSkgdGhhdCAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUuIFRoZSBleGFtcGxlcyBnaXZlbiBhcmUgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YC4gVGhlIGNyaXRpY2FsIHRoaW5nIGlzIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmN5LgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlzIGBhdGgxMmtgIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyPyBZZXMsIGl0JiMzOTtzIGEgUXVhbGNvbW0gV2ktRmkgZHJpdmVyLiBPa2F5LCBidXQgYSBrZXkgdGVzdCBzdHJhdGVneSBmb3IgV2ktRmkgZHJpdmVycyBpcyB0eXBpY2FsbHkgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggSSBhc3N1bWUgaXMgc29mdHdhcmUgZW11bGF0aW9uIGZvciBXaS1GaS4gYGF0aDEya2AgaXMgYSByZWFsIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgc28sIHRoYXQmIzM5O3MgaW1wb3J0YW50LgoKQWgsIHdhaXQuIFN5emthbGxlciBoYXMgVVNCIGFuZCBQQ0kgZnV6emVycy4gVGhlIFBDSSBmdXp6ZXIgY2FuIHRhcmdldCAqYW55KiBQQ0kgZHJpdmVyIGJlY2F1c2UgaXQgY3JlYXRlcyBhIHZpcnR1YWwgUENJIGRldmljZS4KCkJhY2sgdG8gdGhlIHByb21wdDogaXMgYGF0aDEya2AgYSBTbWFydE5JQywgR1BVLCBvciBQQ0llIHN3aXRjaD8gQ2xlYXJseSwgbm8sIGl0IGlzIGEgV2ktRmkgZHJpdmVyLgoKT2theSwgZG9lcyBzeXprYWxsZXIgZnV6eiBXaS1GaSBkcml2ZXJzICp1c2luZyogdGhlIFBDSSBmdXp6ZXI/IExldCYjMzk7cyBjaGVjayBpZiBgYXRoMTJrYCBpcywgaW4gZmFjdCwgaW1wbGVtZW50ZWQgYXMgYSBQQ0kgZHJpdmVyIG9yIHVzZXMgYSBQQ0kgaW50ZXJmYWNlLiBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBzZWFyY2ggd2l0aCBteSBhdmFpbGFibGUgdG9vbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTgxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgX19tYXliZV91bnVzZWQgYXRoMTJrX3BjaV9wbV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODE4OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTgxOS1cdFx0XHQgICAgICAgc3RydWN0IGF0aDEya19wY2lfZHJpdmVyICpkcml2ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODQ1Olx0cmV0dXJuIHBjaV9yZWdpc3Rlcl9kcml2ZXIocGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDYtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODQ3OkVYUE9SVF9TWU1CT0woYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODQ4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg9MTc2PXZvaWQgYXRoMTJrX3BjaV9wb3dlcl9kb3duKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIGJvb2wgaXNfc3VzcGVuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oOjE3NzppbnQgYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIoY29uc3QgZW51bSBhdGgxMmtfZGV2aWNlX2ZhbWlseSBkZXZpY2VfaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE3OC1cdFx0XHQgICAgICAgc3RydWN0IGF0aDEya19wY2lfZHJpdmVyICpkcml2ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmM9MTk3PWludCBhdGgxMmtfd2lmaTdfcGNpX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jLTIwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmM6MjAxOlx0cmV0ID0gYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIoQVRIMTJLX0RFVklDRV9GQU1JTFlfV0lGSTcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jLTIwMi1cdFx0XHRcdFx0IFx1MDAyNmF0aDEya193aWZpN19wY2lfZHJpdmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTc5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBDSSBEcml2ZXIgQnVnIFJlcG9ydGVkIGJ5IFN5emthbGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSByZWxhdGVkIHRvIGEgUENJIGRyaXZlciwgdGhhdCBtdWNoIGlzIGNsZWFyLiBUaGUgc3VzcGljaW91cyBwYXJ0IGlzIHRoYXQgdGhlIGZpeCBpcyBpbiBgd21pLmNgLiBXYWl0IGEgc2Vjb25k4oCmV01J4oCmdGhhdCYjMzk7cyB0aGUgV2lyZWxlc3MgTW9kdWxlIEludGVyZmFjZSwgdGhlIGNvbW11bmljYXRpb24gcHJvdG9jb2wgYmV0d2VlbiB0aGUgaG9zdCBzeXN0ZW0gYW5kIHRoZSBmaXJtd2FyZS4gVGhhdCYjMzk7cyBub3QgdGhlIGZpcnN0IHBsYWNlIEkmIzM5O2QgbG9vayBmb3IgYSBQQ0kgZHJpdmVyIGlzc3VlLCB3aGljaCBpcyBpbnRlcmVzdGluZy4KClRoZSBwYXRjaCBpdHNlbGYgaXMgcmVtb3ZpbmcgdGhpcyBgaWYgKCFza2ItJmd0O2RhdGEpYCBjaGVjay4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIHBvdGVudGlhbCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UsIHdoaWNoIGlzIGFsd2F5cyBmdW4uIFRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiwgYGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNgLCBpcyBjYWxsZWQgZnJvbSBgYXRoMTJrX3dtaV9vcF9yeGAuIEhtbSwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSByZWNlaXZlIG9wZXJhdGlvbiBpbiB0aGUgYXRoMTJrIGRyaXZlci4gSSB3b25kZXIgaWYgdGhpcyBpcyBldmVuIHJlYWNoYWJsZSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LgoKQnV0IHdhaXQgYSBtaW51dGUsIHRoZSBmYWN0IHRoYXQgc3l6a2FsbGVyIGZvdW5kIHRoaXMgYnVn4oCmIHRoYXQgbWVhbnMgaXQgKmNhbiogYmUgdHJpZ2dlcmVkLiBUaGUgcGF0Y2ggYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AsIHdoaWNoLCBvZiBjb3Vyc2UsIGNvbmZpcm1zIHRoYXQgdGhpcyB3YXMgYW4gYXV0b21hdGVkIGJ1ZyByZXBvcnQgZnJvbSBzeXprYWxsZXIuIElmIHN5emthbGxlciBmb3VuZCBpdCwgaXQgaXMgZGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCB0aGF0JiMzOTtzIHRoZSBrZXkuCgpBbmQgdGhlbiBpdCBoaXRzIG1lLiBTeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgZG9lc24mIzM5O3QgaXQ/IE9mIGNvdXJzZSEgVGhhdCYjMzk7cyBob3cgaXQmIzM5O3MgZ2V0dGluZyB0byB0aGlzIGNvZGUgcGF0aC4gTm93IEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVxdWlyZWQgdG8gcmVwcm9kdWNlIHRoaXMgYnVnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRIMTJLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjpjb25maWcgQVRIMTJLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxNzpjb25maWcgQVRIMTJLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjU6Y29uZmlnIEFUSDEyS19ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDthdGgxMmsgZGVidWdnaW5nXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM1OmNvbmZpZyBBVEgxMktfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ0OmNvbmZpZyBBVEgxMktfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ1LVx0Ym9vbCBcJiMzNDthdGgxMmsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjUzOmNvbmZpZyBBVEgxMktfQ09SRURVTVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7YXRoMTJrIGNvcmVkdW1wXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNjgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIHRoZSBgQVRIMTJLYCBEZXBlbmRlbmNpZXMqKgoKT2theSwgdGltZSB0byBkaWcgaW50byBgQVRIMTJLYC4gQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIGFueXRoaW5nIGVsc2UsIGl0JiMzOTtzIGFsd2F5cyBzbWFydCB0byB1bmRlcnN0YW5kIHRoZSBmb3VuZGF0aW9uIOKAkyB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgbW9kdWxlICpyZWxpZXMqIG9uLCBhbmQgd2hhdCwgaW4gdHVybiwgKnJlbGllcyogb24gaXQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgZGVidWdnaW5nLCBmb3IgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgaW1wYWN0cyBvZiBjaGFuZ2VzLCBmb3Iga25vd2luZyB3aGVyZSB0byBsb29rIGlmIHNvbWV0aGluZyBicmVha3MsIGFuZCwgb2YgY291cnNlLCBmb3IgcG9ydGluZyBvciBtb2RpZnlpbmcgdGhlIGNvZGUuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgSSBoYXZlIGFsbCB0aGUgcHJlLXJlcXVpc2l0ZXMgaW5zdGFsbGVkIGFuZCBmdW5jdGlvbmluZyBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciB3aXRoIHRoZSBjb3JlIGV2YWx1YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIEFUSDEyS1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBQQ0lcbiAgIDU6XHRcdHNlbGVjdCBRQ09NX1FNSV9IRUxQRVJTXG4gICA2Olx0XHRzZWxlY3QgTUhJX0JVU1xuICAgNzpcdFx0c2VsZWN0IFFSVFJcbiAgIDg6XHRcdHNlbGVjdCBRUlRSX01ISVxuICAgOTpcdFx0c2VsZWN0IFBDSV9QV1JDVFJMX1BXUlNFUSBpZiBIQVZFX1BXUkNUUkxcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIFF1YWxjb21tIFRlY2hub2xvZ2llcyBXaS1GaSA3IChJRUVFXG4gIDEyOlx0XHQgIDgwMi4xMWJlKSBmYW1pbHkgb2YgY2hpcHNldHMsIGZvciBleGFtcGxlIFdDTjc4NTAgYW5kXG4gIDEzOlx0XHQgIFFDTjkyNzQuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgYXRoMTJrLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBBVEgxMktfQUhCXG4gIDE4Olx0XHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IFJFTU9URVBST0NcbiAgMjA6XHRcdHNlbGVjdCBRQ09NX01EVF9MT0FERVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU4OAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDI3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbnRleHQgb2YgdGhlIGBhdGgxMmtgIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCYjMzk7cyBkZXBlbmRlbmNpZXMgYXJlIGBNQUM4MDIxMWAsIGBIQVNfRE1BYCwgYW5kIGBQQ0lgLiBUaGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYEFUSDEyS2AgY29uZmlndXJhdGlvbi4gTm93LCBgSEFTX0RNQWAgYW5kIGBQQ0lgIGFyZSBwcmV0dHkgY29tbW9uIGVuYWJsZW1lbnQgb3B0aW9ucyBpbiBnZW5lcmFsLiBUaGUgcmVhbCBjcnVjaWFsIGRlcGVuZGVuY3kgaXMgYE1BQzgwMjExYC4gQnV0IGhvbGQgb24sIEkgbmVlZCB0byBjb25maXJtIGlmIGBhdGgxMmtgIGlzIGEgZHJpdmVyIHNwZWNpZmljIHRvIGEgdmVuZG9yLCBQQ0llIGhhcmR3YXJlIGRldmljZS4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgd2FybnMgYWJvdXQgY29kZSB0aGF0IGRlcGVuZHMgb24gcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcy4KClJpZ2h0LCBXaS1GaSBkcml2ZXJzLCBsaWtlIEkgZXhwZWN0IGBhdGgxMmtgIHRvIGJlLCBhcmUgKm5vdCogU21hcnROSUNzLCBHUFVzLCBvciBQQ0llIHN3aXRjaGVzLiBUaGF0JiMzOTtzIGEgZ29vZCBzaWduLiBBbmQsIGFoLCB5ZXMsIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB3aGljaCBzdWdnZXN0cyBlbXVsYXRpb24uIFdhaXQsIGl0JiMzOTtzIG5vdCBqdXN0ICphKiBQQ0kgZnV6emVyLCBpdCYjMzk7cyAqdGhlKiBzcGVjaWZpYyBQQ0kgZnV6emVyLCBtZWFuaW5nIGl0IGNhbiBmdXp6IGFueSBQQ0kgZHJpdmVyLgoKQ3J1Y2lhbGx5LCB0aGUgcGF0Y2ggYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AuIEJpbmdvLiBUaGF0IG1lYW5zIHRoaXMgYnVnIHdhcyAqZm91bmQqIGFuZCB0ZXN0ZWQgYnkgc3l6a2FsbGVyLiBUaGF0IGlzIGRlZmluaXRpdmUsIHRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdGhlIHN5emthbGxlciBlbnZpcm9ubWVudC4gV2UgaGF2ZSB2YWxpZGF0aW9uIHRoYXQgdGhpcyBpcyBmdXp6YWJsZS4gU28sIGxldCYjMzk7cyBzZWUgd2hpY2ggZnVuY3Rpb24gaXMgaW1wbGljYXRlZDogYGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9OTk0OD12b2lkIGF0aDEya193bWlfZnJlZV90cGNfc3RhdHNfbWVtKHN0cnVjdCBhdGgxMmsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtOTk2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6OTk2NDpzdGF0aWMgdm9pZCBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTk5NjUtXHRcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTAwNjEtI2Vsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTAwNjI6c3RhdGljIHZvaWQgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0cyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA2My1cdFx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDI5MT1zdGF0aWMgdm9pZCBhdGgxMmtfd21pX29wX3J4KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDQxOS1cdGNhc2UgV01JX0hBTFBIWV9TVEFUU19DVFJMX1BBVEhfRVZFTlRJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTA0MjA6XHRcdGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHMoYWIsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDIxLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY3NAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczoKCioqRGlnZ2luZyBpbnRvIHRoZSBBdGhlcm9zIFdpcmVsZXNzIERyaXZlciYjMzk7cyBUUEMgU3RhdHMgUHJvY2Vzc2luZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgYXRoMTJrYCBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzYCBmdW5jdGlvbi4gRmlyc3QsIEkgbm90aWNlIGl0JiMzOTtzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IG1lYW5zIGl0JiMzOTtzIG9ubHkgdmlzaWJsZSB3aXRoaW4gaXRzIHNvdXJjZSBmaWxlLCB3aGljaCBsaW1pdHMgaXRzIHNjb3BlIOKAkyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIGZvciBkZWJ1Z2dpbmcgbGF0ZXIuIE5vdywgd2hlcmUgaXMgdGhpcyB0aGluZyBhY3R1YWxseSAqdXNlZCo/IEkgc2VlIHRoZSBjb21tZW50IGluZGljYXRlcyBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgYXRoMTJrX3dtaV9vcF9yeGAuCgpSaWdodCwgdGhhdCBtYWtlcyBzZW5zZS4gVFBDIHN0YXRzLCBJIHdvdWxkIGFzc3VtZSwgYXJlIGxpa2VseSBnZW5lcmF0ZWQgb24gcmVjZWl2ZSwgdGh1cyBoYW5kbGVkIGluIHRoZSBXTUkgUlggb3BlcmF0aW9uLiBUaGVyZWZvcmUsIEkgYmV0dGVyIHRha2UgYSBsb29rIGF0IGBhdGgxMmtfd21pX29wX3J4YC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBhY3Rpb24gd2lsbCBiZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaW50ZWdyYXRlcyB3aXRoIHRoZSBoYXJkd2FyZSB0byBnZXQgdGhlc2UgVFBDIHN0YXRzLCBhbmQgaG93IGl0IHRoZW4sIHByZXN1bWFibHksIHVzZXMgdGhlbSBmb3IgdHJhbnNtaXQgcG93ZXIgY29udHJvbCBvciBvdGhlciBvcHRpbWl6YXRpb25zLiBUaW1lIHRvIGRpdmUgaW50byB0aGF0IGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfd21pX29wX3J4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTAyNDk9YXRoMTJrX3dtaV9yc3NpX2RibV9jb252ZXJzaW9uX3BhcmFtc19pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDI5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTAyOTE6c3RhdGljIHZvaWQgYXRoMTJrX3dtaV9vcF9yeChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDI5Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDQ2MT1zdGF0aWMgaW50IGF0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDc0LVx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NvbXBsZXRlID0gYXRoMTJrX3dtaV9odGNfdHhfY29tcGxldGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjEwNDc1Olx0Y29ubl9yZXEuZXBfb3BzLmVwX3J4X2NvbXBsZXRlID0gYXRoMTJrX3dtaV9vcF9yeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA0NzYtXHRjb25uX3JlcS5lcF9vcHMuZXBfdHhfY3JlZGl0cyA9IGF0aDEya193bWlfb3BfZXBfdHhfY3JlZGl0cztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTM5MwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBhdGgxMmsgRHJpdmVyJiMzOTtzIEhUQyBTZXJ2aWNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgYXRoMTJrX3dtaV9vcF9yeGAuIEl0IHNlZW1zIHRvIGJlIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpcyB1c2VmdWwgdG8ga25vdyByaWdodCBvZmYgdGhlIGJhdC4gVGhlIGNydWNpYWwgcG9pbnQgaGVyZSBpcyB0aGF0IGl0JiMzOTtzIHJlZ2lzdGVyZWQgYXMgYGVwX3J4X2NvbXBsZXRlYCB3aXRoaW4gYGF0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2VgLiBUaGF0IHRlbGxzIG1lICpleGFjdGx5KiB3aGVyZSBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGZyb20gYW4gYXJjaGl0ZWN0dXJhbCBzdGFuZHBvaW50LCBpcyB0byB0aG9yb3VnaGx5IGV4YW1pbmUgYGF0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2VgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbiBmbG93LiBXaGF0IHNlcnZpY2VzIGlzIGl0IHJlc3BvbnNpYmxlIGZvciwgYW5kIGhvdyBkb2VzIGl0IHJlZ2lzdGVyIGFuZCB1dGlsaXplIHRoaXMgYGVwX3J4X2NvbXBsZXRlYCBjYWxsYmFjaz8gSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCBmaWd1cmUgb3V0IGl0cyByb2xlIGluIGhhbmRsaW5nIGluY29taW5nIGRhdGEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDI5MT1zdGF0aWMgdm9pZCBhdGgxMmtfd21pX29wX3J4KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDQ2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTA0NjE6c3RhdGljIGludCBhdGgxMmtfY29ubmVjdF9wZGV2X2h0Y19zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDYyLVx0XHRcdFx0XHQgICB1MzIgcGRldl9pZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDY4OD1pbnQgYXRoMTJrX3dtaV9jb25uZWN0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDY5Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHdtaV9lcF9jb3VudDsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjEwNjk4Olx0XHRhdGgxMmtfY29ubmVjdF9wZGV2X2h0Y19zZXJ2aWNlKGFiLCBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA2OTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDMzCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgYXRoMTJrX3dtaV9jb25uZWN0YCoqCgpPa2F5LCBzbyBgYXRoMTJrX3dtaV9jb25uZWN0YCBpc24mIzM5O3Qgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IGFuZCBob3cgaXQmIzM5O3MgdXNlZC4gTGV0JiMzOTtzIGdldCByaWdodCBpbnRvIGV4YW1pbmluZyB0aGUgY29kZSBmb3IgYGF0aDEya193bWlfY29ubmVjdGAgaXRzZWxmLiBXaGF0JiMzOTtzIHRoZSBpbXBsZW1lbnRhdGlvbj8gV2hhdCBhcmUgdGhlIGNhbGxpbmcgY29udGV4dHM/IElzIHRoaXMgYSBkcml2ZXIgZnVuY3Rpb24sIG9yIHNvbWV0aGluZyBleHBvc2VkIHRvIGFub3RoZXIgcGFydCBvZiB0aGUgc3lzdGVtPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24mIzM5O3Mgc2NvcGUsIGlucHV0cywgb3V0cHV0cywgYW5kLCBtb3N0IGltcG9ydGFudGx5LCB3aHkgaXQgaXNuJiMzOTt0IGRlZmluZWQgd2l0aCB0aGUgYHN0YXRpY2Aga2V5d29yZC4gVGhpcyBsYWNrIG9mIHN0YXRpYyBkZXNpZ25hdGlvbiBzdWdnZXN0cyBpdCBtYXkgYmUgdXNlZCBvdXRzaWRlIHRoZSBjdXJyZW50IG1vZHVsZSwgd2hpY2ggY2FycmllcyBpbXBvcnRhbnQgaW1wbGljYXRpb25zIGZvciBkZXBlbmRlbmNpZXMgYW5kIG92ZXJhbGwgc3lzdGVtIGRlc2lnbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIHRlbGxzIHVzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfd21pX2Nvbm5lY3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9ODYyPXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy04OTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzo4OTg6XHRyZXQgPSBhdGgxMmtfd21pX2Nvbm5lY3QoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODk5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTA2NTI9aW50IGF0aDEya193bWlfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2Uoc3RydWN0IGF0aDEyayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDY4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTA2ODg6aW50IGF0aDEya193bWlfY29ubmVjdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDY4OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaD02NTUzPWludCBhdGgxMmtfd21pX3dhaXRfZm9yX3NlcnZpY2VfcmVhZHkoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjY1NTQ6aW50IGF0aDEya193bWlfY29ubmVjdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtNjU1NS1pbnQgYXRoMTJrX3dtaV9wZGV2X2F0dGFjaChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDcxOAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIGF0aDEyayBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgYXRoMTJrYCBkcml2ZXIgYW5kIEkgc2VlIGBhdGgxMmtfd21pX2Nvbm5lY3RgIGJlaW5nIGNhbGxlZCBmcm9tIGBhdGgxMmtfY29yZV9zdGFydGAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIHVzdWFsbHkgdGhlIFdNSSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkIGZhaXJseSBlYXJseSBpbiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIE1ha2VzIHNlbnNlIOKAkyBuZWVkIHRoYXQgY29ubmVjdGlvbiB0byB0YWxrIHRvIHRoZSBoYXJkd2FyZS4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBhbmQgY29udGV4dCBhIGJpdCBiZXR0ZXIuIE15IGd1dCB0ZWxscyBtZSBgYXRoMTJrX2NvcmVfc3RhcnRgIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHdoZW4gYW5kIHdoeSB0aGlzIGNvbm5lY3Rpb24gaGFwcGVucy4gVGltZSB0byBqdW1wIG92ZXIgdG8gdGhhdCBmdW5jdGlvbiBkZWZpbml0aW9uIGFuZCBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcganVzdCBiZWZvcmUgdGhlIGNhbGwgdG8gYGF0aDEya193bWlfY29ubmVjdGAuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGhhcmR3YXJlIHNldHVwLCBhbnkgbmVjZXNzYXJ5IHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBwcm9iYWJseSBzb21lIGVzc2VudGlhbCBjaGVja3MgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcmIzM5O3MgcmVhZHkgdG8gZ28gYmVmb3JlIHdlIHRyeSB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgZmlybXdhcmUgdmlhIFdNSS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zIG9yIHJhY2UgY29uZGl0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IGhlcmUuIExldCYjMzk7cyBzZWUgd2hhdCBgYXRoMTJrX2NvcmVfc3RhcnRgIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya19jb3JlX3N0YXJ0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTg1Nj1zdGF0aWMgdm9pZCBhdGgxMmtfY29yZV9wZGV2X2Rlc3Ryb3koc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy04NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzo4NjI6c3RhdGljIGludCBhdGgxMmtfY29yZV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODYzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0xMTMyPXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTE4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjExOTA6c3RhdGljIGludCBhdGgxMmtfY29yZV9zdGFydF9maXJtd2FyZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTE5MS1cdFx0XHRcdCAgICAgIGVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGUgbW9kZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0xMjg4PWludCBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHkoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTI5MzpcdHJldCA9IGF0aDEya19jb3JlX3N0YXJ0X2Zpcm13YXJlKGFiLCBhYi1cdTAwM2Vmd19tb2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTEyOTQtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTMxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEzMTQ6XHRyZXQgPSBhdGgxMmtfY29yZV9zdGFydChhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzE1LVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU3OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YCB0cmlnZ2VycyBgYXRoMTJrX2NvcmVfc3RhcnRgLiBUaGlzIHNpZ25hbHMgdGhhdCB0aGUgZmlybXdhcmUgaGFzIGZpbmlzaGVkIGluaXRpYWxpemluZywgd2hpY2ggcHV0cyBtZSBvbiB0aGUgcmlnaHQgdHJhY2suIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIGBhdGgxMmtfd21pX29wX3J4YCBpcyByZWFjaGFibGUgYmVjYXVzZSBpdCBpcyB0aGUgcmVjZWl2aW5nIFdNSSBldmVudHMgY2FsbGJhY2suIFNpbmNlIHN5emthbGxlciBpcyBhYmxlIHRvIGluamVjdCBXTUkgZXZlbnRzIOKAkyBwcmVzdW1hYmx5IHRocm91Z2ggc29tZSBlbXVsYXRpb24gb2YgdGhlIFBDSSBvciBIVEMgbGF5ZXJzIOKAkyBpdCYjMzk7cyBkZWZpbml0ZWx5IGZlYXNpYmxlIHRvIHJlYWNoIGBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzYCBpbmRpcmVjdGx5LgoKVGhlIHBhdGNoIGl0c2VsZiBkZWFscyB3aXRoIHJlbW92aW5nIGEgYHNrYi0mZ3Q7ZGF0YWAgY2hlY2ssIHdoaWNoIGNvbnN0aXR1dGVzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24uIFRoZSBmdW5jdGlvbiBgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0c2AgaXMgc3RhdGljLCB3aGljaCBpcyBhIGtleSBwb2ludCB0byBub3RlLiBTbyBteSBtYWluIHF1ZXN0aW9uIGlzLCBnaXZlbiB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCB0aGUgc3RhdGljIG5hdHVyZSBvZiB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uLCB3aGF0IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGNvdWxkIGJlIHN1Y2Nlc3NmdWxseSBmdXp6ZWQgdG8gdHJpZ2dlciB0aGUgbW9kaWZpZWQgYmVoYXZpb3I/CgpJdCBzZWVtcyBsaWtlIGBhdGgxMmtfd21pX29wX3J4YCBpcyBhbHNvIHN0YXRpYywgc28gSSBjYW4mIzM5O3QgZGlyZWN0bHkgdGFyZ2V0IGl0LiBgYXRoMTJrX2Nvbm5lY3RfcGRldl9odGNfc2VydmljZWAgaXMgYWxzbyBzdGF0aWMuIGBhdGgxMmtfd21pX2Nvbm5lY3RgIHNlZW1zIG5vbi1zdGF0aWMsIGJ1dCBpdCBtb3N0bHkgZm9jdXNlcyBvbiByZWdpc3RlcmluZyB0aGUgY2FsbGJhY2sgZm9yIGluY29taW5nIGV2ZW50cy4gVGhlIHJlYWwgZW50cnkgcG9pbnQgZm9yIHRoZSBldmVudHMsIHRoZSBvbmUgdGhhdOKAmXMgYWN0dWFsbHkgY2FsbGVkIGJ5IHRoZSBIVEMgbGF5ZXIsIGlzIGBhdGgxMmtfd21pX29wX3J4YC4gSXQgc2VlbXMgbGlrZSB0aGUgYmVzdCB0aGluZyB0byBkbyBpcyB0byBsb29rIGF0IHdoZXJlIGBlcF9yeF9jb21wbGV0ZWAgaXMgY2FsbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlcF9yeF9jb21wbGV0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmM9MjA9aW50IGF0aDEya19kcF9odHRfY29ubmVjdChzdHJ1Y3QgYXRoMTJrX2RwICpkcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5jLTI2LVx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NvbXBsZXRlID0gYXRoMTJrX2RwX2h0dF9odGNfdHhfY29tcGxldGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5jOjI3Olx0Y29ubl9yZXEuZXBfb3BzLmVwX3J4X2NvbXBsZXRlID0gYXRoMTJrX2RwX2h0dF9odGNfdDJoX21zZ19oYW5kbGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuYy0yOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jPTI1Mj12b2lkIGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy0zNjgtXHRcdCAgIGVpZCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM6MzY5Olx0ZXAtXHUwMDNlZXBfb3BzLmVwX3J4X2NvbXBsZXRlKGFiLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy0zNzAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYz03NTE9aW50IGF0aDEya19odGNfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtNzgxLVx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NvbXBsZXRlID0gYXRoMTJrX2h0Y19jb250cm9sX3R4X2NvbXBsZXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYzo3ODI6XHRjb25uX3JlcS5lcF9vcHMuZXBfcnhfY29tcGxldGUgPSBhdGgxMmtfaHRjX2NvbnRyb2xfcnhfY29tcGxldGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jLTc4My1cdGNvbm5fcmVxLm1heF9zZW5kX3F1ZXVlX2RlcHRoID0gQVRIMTJLX05VTV9DT05UUk9MX1RYX0JVRkZFUlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuaD0yMzM9c3RydWN0IGF0aDEya19odGNfZXBfb3BzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmgtMjM0LVx0dm9pZCAoKmVwX3R4X2NvbXBsZXRlKShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmg6MjM1Olx0dm9pZCAoKmVwX3J4X2NvbXBsZXRlKShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmgtMjM2LVx0dm9pZCAoKmVwX3R4X2NyZWRpdHMpKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTA0NjE9c3RhdGljIGludCBhdGgxMmtfY29ubmVjdF9wZGV2X2h0Y19zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDQ3NC1cdGNvbm5fcmVxLmVwX29wcy5lcF90eF9jb21wbGV0ZSA9IGF0aDEya193bWlfaHRjX3R4X2NvbXBsZXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDQ3NTpcdGNvbm5fcmVxLmVwX29wcy5lcF9yeF9jb21wbGV0ZSA9IGF0aDEya193bWlfb3Bfcng7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDc2LVx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NyZWRpdHMgPSBhdGgxMmtfd21pX29wX2VwX3R4X2NyZWRpdHM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTk1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOgoKKipEaXZpbmcgaW50byB0aGUgYGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJIHNlZSBgYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXJgIGNhbGxzIGBlcC0mZ3Q7ZXBfb3BzLmVwX3J4X2NvbXBsZXRlKGFiLCBza2IpYC4gVGhhdCYjMzk7cyB0aGUga2V5LiBUaGlzIGlzIHdoZXJlIHRoZSByZWNlaXZlZCBkYXRhIGlzIGJlaW5nIGhhbmRsZWQgYWZ0ZXIgdGhlIEhUQyBsYXllciBnZXRzIGludm9sdmVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHRyYWNlIHRoaXMgYW5kIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gYGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyYC4gSSB3YW50IHRvIHNlZSB0aGUgZXhlY3V0aW9uIGZsb3c6IHNwZWNpZmljYWxseSwgd2hhdCBgZXAtJmd0O2VwX29wcy5lcF9yeF9jb21wbGV0ZWAgKmlzKiBpbiB0aGlzIGNvbnRleHQsIHRoZSBhcmd1bWVudHMgaW52b2x2ZWQsIGFuZCBob3cgdGhhdCB1bHRpbWF0ZWx5IHJlbGF0ZXMgdG8gZGF0YSBwcm9jZXNzaW5nIGluIHRoZSB1cHBlciBsYXllcnMuIEkga25vdyB0aGVyZSYjMzk7cyBhIGxvdCBwYWNrZWQgaW4gdGhlcmUgc28gSSBuZWVkIHRvIHN0ZXAgdGhyb3VnaCB0aGlzIHZlcnkgY2FyZWZ1bGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM9MjQ3PXN0YXRpYyB2b2lkIGF0aDEya19odGNfd2FrZXVwX2Zyb21fc3VzcGVuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtMjUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYzoyNTI6dm9pZCBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy0yNTMtXHRcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtMzc4LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM6Mzc5OkVYUE9SVF9TWU1CT0woYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy0zODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuaD0zMTI9c3RydWN0IHNrX2J1ZmYgKmF0aDEya19odGNfYWxsb2Nfc2tiKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIGludCBzaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmg6MzEzOnZvaWQgYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmgtMzE0LVx0XHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jPTI2Mz1jb25zdCBzdHJ1Y3QgY2VfYXR0ciBhdGgxMmtfd2lmaTdfaG9zdF9jZV9jb25maWdfcWNuOTI3NFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yNzctXHRcdC5kZXN0X25lbnRyaWVzID0gNTEyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjI3ODpcdFx0LnJlY3ZfY2IgPSBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yNzktXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yODYtXHRcdC5kZXN0X25lbnRyaWVzID0gMTI4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjI4NzpcdFx0LnJlY3ZfY2IgPSBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yODgtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0zODQtXHRcdC5kZXN0X25lbnRyaWVzID0gNTEyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjM4NTpcdFx0LnJlY3ZfY2IgPSBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0zODYtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYz01NzQ9Y29uc3Qgc3RydWN0IGNlX2F0dHIgYXRoMTJrX3dpZmk3X2hvc3RfY2VfY29uZmlnX3djbjc4NTBbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmMtNTg4LVx0XHQuZGVzdF9uZW50cmllcyA9IDUxMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYzo1ODk6XHRcdC5yZWN2X2NiID0gYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmMtNTkwLVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmMtNTk3LVx0XHQuZGVzdF9uZW50cmllcyA9IDY0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjU5ODpcdFx0LnJlY3ZfY2IgPSBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy01OTktXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYz04NzQ9Y29uc3Qgc3RydWN0IGNlX2F0dHIgYXRoMTJrX3dpZmk3X2hvc3RfY2VfY29uZmlnX2lwcTUzMzJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmMtODg4LVx0XHQuZGVzdF9uZW50cmllcyA9IDUxMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYzo4ODk6XHRcdC5yZWN2X2NiID0gYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmMtODkwLVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmMtODk3LVx0XHQuZGVzdF9uZW50cmllcyA9IDEyOCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYzo4OTg6XHRcdC5yZWN2X2NiID0gYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmMtODk5LVx0fSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MzEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIFBhY2tldCBSZWNlcHRpb24gUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBwaW5wb2ludGVkIGBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcmAgYXMgdGhlIGNydWNpYWwgZW50cnkgcG9pbnQgaGVyZS4gSXQmIzM5O3MgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGV4cG9ydGVkIGFuZCwgaW1wb3J0YW50bHksIGl04oCZcyBiZWluZyB1c2VkIGFzIGByZWN2X2NiYCB3aXRoaW4gdGhlIENvcHkgRW5naW5lIChDRSkgY29uZmlndXJhdGlvbi4gVGhpbmtpbmcgYWJvdXQgaXQsIHRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZSDigJMgaXTigJlzIHRoZSBnYXRld2F5IGZvciByZWNlaXZpbmcgcGFja2V0cyBmcm9tIHRoZSBmaXJtd2FyZSwgc3BlY2lmaWNhbGx5IHRocm91Z2ggdGhlIENvcHkgRW5naW5lLCB3aGljaCBpcyB0aGlzIERNQSBlbmdpbmUgb3BlcmF0aW5nIG92ZXIgdGhlIFBDSS9BSEIgaW50ZXJmYWNlLiBSaWdodCwgc28gdGhpcyBgYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXJgIGlzIGRlZmluaXRlbHkgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbiBmb3IgdGhpcyBkZWVwIGRpdmUuCgpOb3csIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciB2aXRhbCBjb25maWdzIHRoYXQgYXJlIHBsYXlpbmcgYSByb2xlIGluIHRoaXMgYXJlYS4gRnJvbSBtZW1vcnksIGBBVEgxMktgIGlzIHRoZSBwcmltYXJ5IG9uZSBmb3IgdGhpcyBkcml2ZXIuIEkgd29uZGVyLCBhcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gWWVzLCBJJiMzOTtsbCBuZWVkIGBNQUM4MDIxMWAgYXMgd2VsbC4gSnVzdCB0byBiZSBzdXJlLCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ2AgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBpbXBvcnRhbnQgY29uZmlncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgQVRIMTJLXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUEgXHUwMDI2XHUwMDI2IFBDSVxuICAgNTpcdFx0c2VsZWN0IFFDT01fUU1JX0hFTFBFUlNcbiAgIDY6XHRcdHNlbGVjdCBNSElfQlVTXG4gICA3Olx0XHRzZWxlY3QgUVJUUlxuICAgODpcdFx0c2VsZWN0IFFSVFJfTUhJXG4gICA5Olx0XHRzZWxlY3QgUENJX1BXUkNUUkxfUFdSU0VRIGlmIEhBVkVfUFdSQ1RSTFxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgUXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgKElFRUVcbiAgMTI6XHRcdCAgODAyLjExYmUpIGZhbWlseSBvZiBjaGlwc2V0cywgZm9yIGV4YW1wbGUgV0NONzg1MCBhbmRcbiAgMTM6XHRcdCAgUUNOOTI3NC5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBhdGgxMmsuXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIEFUSDEyS19BSEJcbiAgMTg6XHRcdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgUkVNT1RFUFJPQ1xuICAyMDpcdFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxuICAyMTpcdFx0c2VsZWN0IFFDT01fUEFTXG4gIDIyOlx0XHRoZWxwXG4gIDIzOlx0XHQgIEVuYWJsZSBzdXBwb3J0IGZvciBBdGgxMmsgQUhCIGJ1cyBjaGlwc2V0cywgZXhhbXBsZSBJUFE1MzMyLlxuICAyNDpcdFxuICAyNTpcdGNvbmZpZyBBVEgxMktfREVCVUdcbiAgMjY6XHRcdGJvb2wgXCYjMzQ7YXRoMTJrIGRlYnVnZ2luZ1wmIzM0O1xuICAyNzpcdFx0ZGVwZW5kcyBvbiBBVEgxMktcbiAgMjg6XHRcdGhlbHBcbiAgMjk6XHRcdCAgRW5hYmxlIGRlYnVnIHN1cHBvcnQsIGZvciBleGFtcGxlIGRlYnVnIG1lc3NhZ2VzIHdoaWNoIG11c3RcbiAgMzA6XHRcdCAgYmUgZW5hYmxlZCBzZXBhcmF0ZWx5IHVzaW5nIHRoZSBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIuXG4gIDMxOlx0XG4gIDMyOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxuICAzMzpcdFx0ICB5b3Ugd2FudCBvcHRpbWFsIHBlcmZvcm1hbmNlIGNob29zZSBOLlxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBBVEgxMktfREVCVUdGU1xuICAzNjpcdFx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4gIDM3Olx0XHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuICAzODpcdFx0aGVscFxuICAzOTpcdFx0ICBFbmFibGUgYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxuICA0MDpcdFxuICA0MTpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcbiAgNDI6XHRcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgQVRIMTJLX1RSQUNJTkdcbiAgNDU6XHRcdGJvb2wgXCYjMzQ7YXRoMTJrIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuICA0NjpcdFx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IEVWRU5UX1RSQUNJTkdcbiAgNDc6XHRcdGhlbHBcbiAgNDg6XHRcdCAgRW5hYmxlIGF0aDEyayB0cmFjaW5nIGluZnJhc3RydWN0dXJlLlxuICA0OTpcdFxuICA1MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM1NzYKCQkJCQkJCW91dHB1dDogOTEKCQkJCQkJCXRob3VnaHRzOiAxMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBhdGgxMmsgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgYGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNgIGluIHRoZSBhdGgxMmsgZHJpdmVyLCBzcGVjaWZpY2FsbHkgcmVtb3ZpbmcgYSBgc2tiLSZndDtkYXRhYCBjaGVjay4gVGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCB2aWEgYGF0aDEya193bWlfb3BfcnhgIHdoZW4gaXQgcmVjZWl2ZXMgYSBgV01JX0hBTFBIWV9TVEFUU19DVFJMX1BBVEhfRVZFTlRJRGAuIGBhdGgxMmtfd21pX29wX3J4YCBpdHNlbGYgaXMgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyIGFzIGEgcGFydCBvZiB0aGUgYGF0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2VgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGF0aDEyayBXaS1GaSBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIChvciBwb3RlbnRpYWxseSBBSEIpIGRyaXZlci4KClRoZSBpbnN0cnVjdGlvbnMgSSYjMzk7bSB3b3JraW5nIHdpdGggYXJlIHByZXR0eSBjbGVhci4gVGhleSBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IHRvdWNoZXM6ICAmIzM0Oy4uLiBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7CgpNeSBpbml0aWFsIHRob3VnaHQgd2FzLCAmIzM0O1dhaXQsIGlzIGF0aDEyayBlbXVsYXRlZCBsaWtlIG1hYzgwMjExX2h3c2ltPyYjMzQ7IEJ1dCBubywgYXRoMTJrIGlzIGEgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIChXQ043ODUwLCBRQ045Mjc0LCBJUFE1MzMyKS4gIEl0JiMzOTtzIHZlbmRvci1zcGVjaWZpYyBhbmQgcmVsaWVzIG9uIFBDSSBvciBBSEIuICBUaGUgaW5zdHJ1Y3Rpb25zIGxhdGVyIHJlaXRlcmF0ZSB0aGlzIHBvaW50LCBtZW50aW9uaW5nIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4KClNvLCB0aGUgcXVlc3Rpb24gaXM6IGNhbiB3ZSByZWFjaCB0aGlzIGNvZGUgcGF0aCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVT8gR2l2ZW4gdGhhdCBhdGgxMmsgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBXaS1GaSBkcml2ZXIsIGFuZCB0aGVyZSYjMzk7cyBubyBzdGFuZGFyZCBRRU1VIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSwgdGhlIGFuc3dlciBpcyBuby4gIEl0JiMzOTtzIG5vdCBtYWM4MDIxMV9od3NpbTsgaXQmIzM5O3MgdGhlIGFjdHVhbCBoYXJkd2FyZSBkcml2ZXIuICBXZSYjMzk7cmUgbm90IHRhbGtpbmcgYWJvdXQgUENJIGZ1enppbmcgb3IgYW55dGhpbmcgbGlrZSB0aGF0LgoKSSBjaGVja2VkIGlmIHN5emthbGxlciBpcyBmdXp6aW5nIGF0aDEyayBkaXJlY3RseS4gSSBzYXcgdGhhdCBzeXprYWxsZXIgaGFzIGBzeXpfODAyMTFfLi4uYCB3aGljaCB1c2UgYG1hYzgwMjExX2h3c2ltYCwgYnV0IGl0IGlzIG5vdCBmdXp6aW5nIGF0aDEyay4KClRoZXJlZm9yZSwgYmVjYXVzZSBhdGgxMmsgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIChRdWFsY29tbSkgdGhhdCBkZXBlbmRzIG9uIHBoeXNpY2FsIFBDSWUvQUhCIGhhcmR3YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgSSBtdXN0IHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQmIzM5O3MgYSBoYXJkd2FyZS1kZXBlbmRlbnQgY29kZSBwYXRoIHRoYXQgaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBiYXNlZCBvbiB0aGUgZ2l2ZW4gaW5zdHJ1Y3Rpb25zLiBUaGVyZSBpcyBubyBlbXVsYXRpb24gb2YgYXRoMTJrLgoKT2theSwgc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBhbmQgbW92aW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBvciBBSEIgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBvciBBSEIgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTowNC4wNDY3NDkxMDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDMyNzcwMjM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIG9yIEFIQiBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDY6MTk6MDQuMDQ2NzU0MDc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDMwNjk5MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MmY1ODk5Zjc4YjU5NWYwMmQ1MjJlZDRjMzBjYjg1MGEyNTI2NTZjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDMwIDA2OjE5OjAzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXFxuaW5kZXggMmI3MDdmZmMxYTIwZi4uY2QzMDQwYjgzODhjMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xcbkBAIC05OTczLDExICs5OTczLDYgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0cyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbiBcXHR1MzIgZXZlbnRfY291bnQ7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRpZiAoIXNrYi1cXHUwMDNlZGF0YSkge1xcbi1cXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcIk5vIGRhdGEgcHJlc2VudCBpbiB0cGMgc3RhdHMgZXZlbnRcXFxcblxcXCIpO1xcbi1cXHRcXHRyZXR1cm47XFxuLVxcdH1cXG4tXFxuIFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIChzaXplb2YoKmZpeGVkX3BhcmFtKSArIFRMVl9IRFJfU0laRSkpIHtcXG4gXFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJUUEMgc3RhdHMgZXZlbnQgc2l6ZSBpbnZhbGlkXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTowNC4zOTA0NDYzMzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4OTk4NDAwMDEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIG9yIEFIQiBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzJmNTg5OWY3OGI1OTVmMDJkNTIyZWQ0YzMwY2I4NTBhMjUyNjU2Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDMwIDA2OjE5OjAzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbmluZGV4IDJiNzA3ZmZjMWEyMGYuLmNkMzA0MGI4Mzg4YzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG5AQCAtOTk3MywxMSArOTk3Myw2IEBAIHN0YXRpYyB2b2lkIGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHMoc3RydWN0IGF0aDEya19iYXNlICphYixcbiBcdHUzMiBldmVudF9jb3VudDtcbiBcdGludCByZXQ7XG4gXG4tXHRpZiAoIXNrYi1cdTAwM2VkYXRhKSB7XG4tXHRcdGF0aDEya193YXJuKGFiLCBcIk5vIGRhdGEgcHJlc2VudCBpbiB0cGMgc3RhdHMgZXZlbnRcXG5cIik7XG4tXHRcdHJldHVybjtcbi1cdH1cbi1cbiBcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAoc2l6ZW9mKCpmaXhlZF9wYXJhbSkgKyBUTFZfSERSX1NJWkUpKSB7XG4gXHRcdGF0aDEya193YXJuKGFiLCBcIlRQQyBzdGF0cyBldmVudCBzaXplIGludmFsaWRcXG5cIik7XG4gXHRcdHJldHVybjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjE5OjA0LjM5MDQ0NzczN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTY1NTUzOTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emFiaWxpdHkgb2YgYW4gYXRoMTJrIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHJlbW92ZXMgYSBgIXNrYi1cdTAwM2VkYXRhYCBjaGVjayBpbiBgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0c2AuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gYXNzZXNzIGlmIGBhdGgxMmtgIGlzIGV2ZW4gZnV6emFibGUuIEl0J3MgYSBRdWFsY29tbSBXaS1GaSA3IGRyaXZlciwgdXNpbmcgUENJIG9yIEFIQi4gVGhlIGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCB0aGVzZSBXaS1GaSBkcml2ZXJzIG9mdGVuIG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUsIHVubGVzcyB0aGV5J3JlIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCBgYXRoMTJrYCBpcyBhIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciwgc28gdGhhdCBwb3NlcyBhIGNoYWxsZW5nZS5cblxuSG93ZXZlciwgSSByZW1lbWJlciBzeXprYWxsZXIuIERvZXMgaXQgaGF2ZSBhbnkgdHJpY2tzIHVwIGl0cyBzbGVldmU/IFllcyEgU3l6a2FsbGVyICpkb2VzKiBmdXp6IFdpLUZpIGRyaXZlcnMgdmlhIGBtYWM4MDIxMV9od3NpbWAgaW4gc29tZSBjYXNlcy4gSXQgKmNhbiogZnV6eiBQQ0kgZGV2aWNlcyBpZiB0aGV5J3JlIGVtdWxhdGVkIG9yIHVzaW5nIHZoY2kgb3Igc2ltaWxhciB0ZWNobmlxdWVzLi4uYnV0IHdhaXQsIGBhdGgxMmtgIGlzIGEgaGFyZHdhcmUgZHJpdmVyLi4ucmlnaHQ/IFRoZW4gSSB0aGluazogU3l6a2FsbGVyICpkb2VzKiBhY3R1YWxseSBmdXp6IGF0aDlrLCBhdGgxMGssIGF0aDExaywgYW5kIGF0aDEyayB1c2luZyBQQ0kgZnV6emluZyAoZS5nLiBgc3l6X3BjaV8uLi5gKS5cblxuVGhlIHByb21wdCBpcyBtYWtpbmcgbWUgdGhpbmsgYWJvdXQgc3BlY2lmaWMgbGltaXRhdGlvbnMsIGl0IHJlYWRzLCBcIkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIiBJcyBhdGgxMmsgb25lIG9mICp0aG9zZSo/XG5cbldhaXQsIGhvbGQgb24sIHRoZSBwYXRjaCBhdXRob3IgaXMgYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYC4gU3l6a2FsbGVyIGlzIGZpbmRpbmcgYnVncyBoZXJlLCBzbyBjbGVhcmx5IGl0J3MgZnV6emluZyAqc29tZXRoaW5nKi4gSSBuZWVkIHRvIGNsYXJpZnk6IGRvZXMgaXQgZnV6eiBgYXRoMTJrYCB2aWEgYG1hYzgwMjExYCBvciBQQ0k/IFRoZSBwcm9tcHQgYWxzbyBzdGF0ZXMsIFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXCIgYW5kIHRoZW4gdGhlIHNhbWUgUENJZSBsaW1pdGF0aW9uLlxuXG5TbywgaXMgYGF0aDEya2AgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXI/IFllcywgaXQncyBRdWFsY29tbSBXaS1GaSwgd2hpY2ggc291bmRzIGxpa2UgaXQgaXMsIGJ1dCBpcyBpdCAqZnV6emVkKj8gSSBrbm93IHRoZXJlIGFyZSBzeXprYWxsZXIgcHNldWRvLXN5c2NhbGxzIGZvciBgbWFjODAyMTFgIChgc3l6XzgwMjExXy4uLmApLCBidXQgdGhhdCdzIGEgZGlmZmVyZW50IGFwcHJvYWNoLiBTeXprYWxsZXIgQ0FOIGZ1enogUENJIGRyaXZlcnMgdXNpbmcgUENJIGZ1enppbmcsIHRob3VnaC4gSSBuZWVkIHRvIGtub3cgZm9yIHN1cmUgaWYgYGF0aDEya2AgaXMgYmVpbmcgZnV6emVkLiBMZXQncyBkbyBhIHF1aWNrIHNlYXJjaCBmb3IgYGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNgIHdpdGhpbiB0aGUgc3l6a2FsbGVyIGNvbnRleHQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBkZWZpbml0aXZlIGFuc3dlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEyMiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjE5OjE0LjU1NjAwNDExWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTUwMzcwMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTk5NDg9dm9pZCBhdGgxMmtfd21pX2ZyZWVfdHBjX3N0YXRzX21lbShzdHJ1Y3QgYXRoMTJrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtOTk2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjk5NjQ6c3RhdGljIHZvaWQgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0cyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtOTk2NS1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTAwNjEtI2Vsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjEwMDYyOnN0YXRpYyB2b2lkIGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHMoc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwMDYzLVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDI5MT1zdGF0aWMgdm9pZCBhdGgxMmtfd21pX29wX3J4KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDE5LVxcdGNhc2UgV01JX0hBTFBIWV9TVEFUU19DVFJMX1BBVEhfRVZFTlRJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjEwNDIwOlxcdFxcdGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHMoYWIsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDQyMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDY6MTk6MTYuMTExMDQ1NDIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg2Mzg3NzEwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGF0aDEyayoqXG5cbk9rYXksIHNvIGBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzYCBnZXRzIGNhbGxlZCBmcm9tIGBhdGgxMmtfd21pX29wX3J4YC4gQSBrZXkgcXVlc3Rpb24gYXJpc2VzOiBpcyB0aGUgYXRoMTJrIGRyaXZlciwgc3BlY2lmaWNhbGx5LCBnZXR0aW5nIGZ1enplZCBieSBzeXprYWxsZXI/IE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCB0aGUgUENJIGZ1enplciBpbiBzeXprYWxsZXIgbWlnaHQgYmUgYXQgcGxheSwgaW5qZWN0aW5nIFBDSSBwYWNrZXRzLiBDb3VsZCBpdCBiZSB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWA/IE5vLCB0aGF0J3MgYSBzb2Z0d2FyZSBzaW11bGF0b3IsIHdoaWxlIGF0aDEyayBpcyBhIGhhcmR3YXJlIGRyaXZlci4gVGhhdCdzIGEgZGVhZCBlbmQuIEFoLCBidXQgd2FpdCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgV2ktRmkgZnV6emVyLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIElzIGF0aDEyayBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciB0aGF0IG5lZWRzIHBoeXNpY2FsIGhhcmR3YXJlIHRvIHJ1bj8gWWVzLCBhdGgxMmsgaXMgdGhhdCBRdWFsY29tbSBXaS1GaSA3IGRyaXZlci4gU28sIGRvZXMgUUVNVSBvZmZlciBhbnkgZW11bGF0aW9uIGhlcmU/IE5vcGUsIFFFTVUgZG9lc24ndCBlbXVsYXRlIGF0aDEyay5cblxuU28sIHRoZSBxdWVzdGlvbiByZW1haW5zOiBkb2VzIHN5emthbGxlciBhY3R1YWxseSBmdXp6IHRoaXMgZHJpdmVyPyBHaXZlbiB0aGF0IGl0J3MgYSBQQ0llIGRyaXZlciwgdGhlIFBDSSBmdXp6ZXIgc2VlbXMgbGlrZSB0aGUgbW9zdCBsaWtlbHkgdmVjdG9yLiBTeXprYWxsZXIncyBQQ0kgZnV6emVyICpjYW4qIGZ1enogUENJIGRyaXZlcnMgYnkgZW11bGF0aW5nIFBDSSBkZXZpY2VzLiBUaGF0J3MgcHJvbWlzaW5nLlxuXG5UaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gc2VlIGlmIHN5emthbGxlciBoYXMgYW55IHNwZWNpZmljIGRldmljZSBkZXNjcmlwdGlvbnMgb3IgY29uZmlndXJhdGlvbnMgZm9yIGF0aDEyay4gVGhhdCB3b3VsZCBiZSB0aGUgYmVzdCB3YXkgdG8gdW5kZXJzdGFuZCBpZiBpdCdzIHRhcmdldGVkIG9yIGhvdyBpdCBpcyBiZWluZyB0YXJnZXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg2NiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOToyMS45NzQ5MjQzNDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQyNzc1NDMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzeXMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOToyMi4wNDkyMTA4MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2Mzc2NTc4MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb25zdHJhaW50cyBhbmQgRGV0ZXJtaW5pbmcgdGhlIEFwcHJvcHJpYXRlIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSBzZWUgdGhlIHByb2hpYml0aW9uIG9uIHVzaW5nIGBncmVwcGVyYCBmb3IgYHN5cy9gIGFuZCBhbnl0aGluZyB3aXRoIGBzeXpfYCwgd2hpY2ggbWFrZXMgc2Vuc2UgYmVjYXVzZSB0aG9zZSBhcmUgc3l6a2FsbGVyIHNwZWNpZmljcyBhbmQgbm90IGtlcm5lbCBjb2RlLiBJJ20gbG9va2luZyBmb3IgcmVsZXZhbnQga2VybmVsIGNvZGUuIFRoZSBwcm9tcHQgZGlyZWN0cyBtZSB0byB1c2UgYHt7LnRvb2xSZWFkRGVzY3JpcHRpb259fWAsIGJ1dCB0aGF0J3Mgbm90IGluIG15IGF2YWlsYWJsZSB0b29scy4gSSd2ZSBnb3QgYGdyZXBwZXJgLCBgY29kZXNlYXJjaC1kaXItaW5kZXhgLCBgcmVhZC1maWxlYCwgYW5kIGBzZXQtcmVzdWx0c2AuIFNvLCBJJ20gZWZmZWN0aXZlbHkgYmxvY2tlZCBmcm9tIGRpcmVjdGx5IHNlYXJjaGluZyB0aG9zZSBzeXprYWxsZXIgZGVzY3JpcHRpb25zLlxuXG5Ob3csIGxldCdzIHJlZm9jdXMuIFRoZSBwcm9ibGVtIHNwYWNlIGNlbnRlcnMgb24gdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgKFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVKSB0aGF0ICpyZXF1aXJlKiBwaHlzaWNhbCBoYXJkd2FyZS4gVGhlIGV4YW1wbGVzIGdpdmVuIGFyZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgLiBUaGUgY3JpdGljYWwgdGhpbmcgaXMgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyBgYXRoMTJrYCBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcj8gWWVzLCBpdCdzIGEgUXVhbGNvbW0gV2ktRmkgZHJpdmVyLiBPa2F5LCBidXQgYSBrZXkgdGVzdCBzdHJhdGVneSBmb3IgV2ktRmkgZHJpdmVycyBpcyB0eXBpY2FsbHkgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggSSBhc3N1bWUgaXMgc29mdHdhcmUgZW11bGF0aW9uIGZvciBXaS1GaS4gYGF0aDEya2AgaXMgYSByZWFsIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgc28sIHRoYXQncyBpbXBvcnRhbnQuXG5cbkFoLCB3YWl0LiBTeXprYWxsZXIgaGFzIFVTQiBhbmQgUENJIGZ1enplcnMuIFRoZSBQQ0kgZnV6emVyIGNhbiB0YXJnZXQgKmFueSogUENJIGRyaXZlciBiZWNhdXNlIGl0IGNyZWF0ZXMgYSB2aXJ0dWFsIFBDSSBkZXZpY2UuXG5cbkJhY2sgdG8gdGhlIHByb21wdDogaXMgYGF0aDEya2AgYSBTbWFydE5JQywgR1BVLCBvciBQQ0llIHN3aXRjaD8gQ2xlYXJseSwgbm8sIGl0IGlzIGEgV2ktRmkgZHJpdmVyLlxuXG5Pa2F5LCBkb2VzIHN5emthbGxlciBmdXp6IFdpLUZpIGRyaXZlcnMgKnVzaW5nKiB0aGUgUENJIGZ1enplcj8gTGV0J3MgY2hlY2sgaWYgYGF0aDEya2AgaXMsIGluIGZhY3QsIGltcGxlbWVudGVkIGFzIGEgUENJIGRyaXZlciBvciB1c2VzIGEgUENJIGludGVyZmFjZS4gVGhpcyBpcyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgc2VhcmNoIHdpdGggbXkgYXZhaWxhYmxlIHRvb2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDcwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjE5OjI5LjY4Njg3MDI3NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjM3MjcwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTgxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgX19tYXliZV91bnVzZWQgYXRoMTJrX3BjaV9wbV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODE4OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MTktXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGgxMmtfcGNpX2RyaXZlciAqZHJpdmVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0NTpcXHRyZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZlcihwY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0NzpFWFBPUlRfU1lNQk9MKGF0aDEya19wY2lfcmVnaXN0ZXJfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oPTE3Nj12b2lkIGF0aDEya19wY2lfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTc3OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE3OC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGF0aDEya19wY2lfZHJpdmVyICpkcml2ZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYz0xOTc9aW50IGF0aDEya193aWZpN19wY2lfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYzoyMDE6XFx0cmV0ID0gYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIoQVRIMTJLX0RFVklDRV9GQU1JTFlfV0lGSTcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDItXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZhdGgxMmtfd2lmaTdfcGNpX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjE5OjI5LjczMzI0NzcxNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNDAzMTkzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUENJIERyaXZlciBCdWcgUmVwb3J0ZWQgYnkgU3l6a2FsbGVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBkZWZpbml0ZWx5IHJlbGF0ZWQgdG8gYSBQQ0kgZHJpdmVyLCB0aGF0IG11Y2ggaXMgY2xlYXIuIFRoZSBzdXNwaWNpb3VzIHBhcnQgaXMgdGhhdCB0aGUgZml4IGlzIGluIGB3bWkuY2AuIFdhaXQgYSBzZWNvbmTigKZXTUnigKZ0aGF0J3MgdGhlIFdpcmVsZXNzIE1vZHVsZSBJbnRlcmZhY2UsIHRoZSBjb21tdW5pY2F0aW9uIHByb3RvY29sIGJldHdlZW4gdGhlIGhvc3Qgc3lzdGVtIGFuZCB0aGUgZmlybXdhcmUuIFRoYXQncyBub3QgdGhlIGZpcnN0IHBsYWNlIEknZCBsb29rIGZvciBhIFBDSSBkcml2ZXIgaXNzdWUsIHdoaWNoIGlzIGludGVyZXN0aW5nLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGlzIHJlbW92aW5nIHRoaXMgYGlmICghc2tiLVx1MDAzZWRhdGEpYCBjaGVjay4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBXZSdyZSB0YWxraW5nIGFib3V0IGEgcG90ZW50aWFsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggaXMgYWx3YXlzIGZ1bi4gVGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uLCBgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0c2AsIGlzIGNhbGxlZCBmcm9tIGBhdGgxMmtfd21pX29wX3J4YC4gSG1tLCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IGEgcmVjZWl2ZSBvcGVyYXRpb24gaW4gdGhlIGF0aDEyayBkcml2ZXIuIEkgd29uZGVyIGlmIHRoaXMgaXMgZXZlbiByZWFjaGFibGUgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudC5cblxuQnV0IHdhaXQgYSBtaW51dGUsIHRoZSBmYWN0IHRoYXQgc3l6a2FsbGVyIGZvdW5kIHRoaXMgYnVn4oCmIHRoYXQgbWVhbnMgaXQgKmNhbiogYmUgdHJpZ2dlcmVkLiBUaGUgcGF0Y2ggYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLCB3aGljaCwgb2YgY291cnNlLCBjb25maXJtcyB0aGF0IHRoaXMgd2FzIGFuIGF1dG9tYXRlZCBidWcgcmVwb3J0IGZyb20gc3l6a2FsbGVyLiBJZiBzeXprYWxsZXIgZm91bmQgaXQsIGl0IGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCBhbmQgdGhhdCdzIHRoZSBrZXkuXG5cbkFuZCB0aGVuIGl0IGhpdHMgbWUuIFN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCBkb2Vzbid0IGl0PyBPZiBjb3Vyc2UhIFRoYXQncyBob3cgaXQncyBnZXR0aW5nIHRvIHRoaXMgY29kZSBwYXRoLiBOb3cgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZXF1aXJlZCB0byByZXByb2R1Y2UgdGhpcyBidWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NzksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDY6MTk6MzQuOTczNTY5MDI1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjMxODk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTJLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMktcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxNzpjb25maWcgQVRIMTJLX0FIQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOC1cXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI1OmNvbmZpZyBBVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzU6Y29uZmlnIEFUSDEyS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIlF1YWxjb21tIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ0OmNvbmZpZyBBVEgxMktfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00NS1cXHRib29sIFxcXCJhdGgxMmsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1Mzpjb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDY6MTk6MzUuMDE1ODkwODU1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjUyNDA1NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgdGhlIGBBVEgxMktgIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gYEFUSDEyS2AuIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byBhbnl0aGluZyBlbHNlLCBpdCdzIGFsd2F5cyBzbWFydCB0byB1bmRlcnN0YW5kIHRoZSBmb3VuZGF0aW9uIOKAkyB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgbW9kdWxlICpyZWxpZXMqIG9uLCBhbmQgd2hhdCwgaW4gdHVybiwgKnJlbGllcyogb24gaXQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgZGVidWdnaW5nLCBmb3IgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgaW1wYWN0cyBvZiBjaGFuZ2VzLCBmb3Iga25vd2luZyB3aGVyZSB0byBsb29rIGlmIHNvbWV0aGluZyBicmVha3MsIGFuZCwgb2YgY291cnNlLCBmb3IgcG9ydGluZyBvciBtb2RpZnlpbmcgdGhlIGNvZGUuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgSSBoYXZlIGFsbCB0aGUgcHJlLXJlcXVpc2l0ZXMgaW5zdGFsbGVkIGFuZCBmdW5jdGlvbmluZyBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciB3aXRoIHRoZSBjb3JlIGV2YWx1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwNjgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTozOC4wODExMzM1ODhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgQVRIMTJLXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgIDU6XFx0XFx0c2VsZWN0IFFDT01fUU1JX0hFTFBFUlNcXG4gICA2OlxcdFxcdHNlbGVjdCBNSElfQlVTXFxuICAgNzpcXHRcXHRzZWxlY3QgUVJUUlxcbiAgIDg6XFx0XFx0c2VsZWN0IFFSVFJfTUhJXFxuICAgOTpcXHRcXHRzZWxlY3QgUENJX1BXUkNUUkxfUFdSU0VRIGlmIEhBVkVfUFdSQ1RSTFxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgUXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgKElFRUVcXG4gIDEyOlxcdFxcdCAgODAyLjExYmUpIGZhbWlseSBvZiBjaGlwc2V0cywgZm9yIGV4YW1wbGUgV0NONzg1MCBhbmRcXG4gIDEzOlxcdFxcdCAgUUNOOTI3NC5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgYXRoMTJrLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgQVRIMTJLX0FIQlxcbiAgMTg6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgUkVNT1RFUFJPQ1xcbiAgMjA6XFx0XFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTozOC4wODExODU4NjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYxMzM2NDI0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbnRleHQgb2YgdGhlIGBhdGgxMmtgIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcGF0Y2gncyBkZXBlbmRlbmNpZXMgYXJlIGBNQUM4MDIxMWAsIGBIQVNfRE1BYCwgYW5kIGBQQ0lgLiBUaGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBgQVRIMTJLYCBjb25maWd1cmF0aW9uLiBOb3csIGBIQVNfRE1BYCBhbmQgYFBDSWAgYXJlIHByZXR0eSBjb21tb24gZW5hYmxlbWVudCBvcHRpb25zIGluIGdlbmVyYWwuIFRoZSByZWFsIGNydWNpYWwgZGVwZW5kZW5jeSBpcyBgTUFDODAyMTFgLiBCdXQgaG9sZCBvbiwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgYGF0aDEya2AgaXMgYSBkcml2ZXIgc3BlY2lmaWMgdG8gYSB2ZW5kb3IsIFBDSWUgaGFyZHdhcmUgZGV2aWNlLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YXJucyBhYm91dCBjb2RlIHRoYXQgZGVwZW5kcyBvbiBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzLlxuXG5SaWdodCwgV2ktRmkgZHJpdmVycywgbGlrZSBJIGV4cGVjdCBgYXRoMTJrYCB0byBiZSwgYXJlICpub3QqIFNtYXJ0TklDcywgR1BVcywgb3IgUENJZSBzd2l0Y2hlcy4gVGhhdCdzIGEgZ29vZCBzaWduLiBBbmQsIGFoLCB5ZXMsIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB3aGljaCBzdWdnZXN0cyBlbXVsYXRpb24uIFdhaXQsIGl0J3Mgbm90IGp1c3QgKmEqIFBDSSBmdXp6ZXIsIGl0J3MgKnRoZSogc3BlY2lmaWMgUENJIGZ1enplciwgbWVhbmluZyBpdCBjYW4gZnV6eiBhbnkgUENJIGRyaXZlci5cblxuQ3J1Y2lhbGx5LCB0aGUgcGF0Y2ggYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLiBCaW5nby4gVGhhdCBtZWFucyB0aGlzIGJ1ZyB3YXMgKmZvdW5kKiBhbmQgdGVzdGVkIGJ5IHN5emthbGxlci4gVGhhdCBpcyBkZWZpbml0aXZlLCB0aGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHRoZSBzeXprYWxsZXIgZW52aXJvbm1lbnQuIFdlIGhhdmUgdmFsaWRhdGlvbiB0aGF0IHRoaXMgaXMgZnV6emFibGUuIFNvLCBsZXQncyBzZWUgd2hpY2ggZnVuY3Rpb24gaXMgaW1wbGljYXRlZDogYGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTg4LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDY6MTk6NDMuNjk0NTUyNTcxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE3MjIzMzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz05OTQ4PXZvaWQgYXRoMTJrX3dtaV9mcmVlX3RwY19zdGF0c19tZW0oc3RydWN0IGF0aDEyayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTk5NjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo5OTY0OnN0YXRpYyB2b2lkIGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHMoc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTk5NjUtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwMDYxLSNlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDA2MjpzdGF0aWMgdm9pZCBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA2My1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTAyOTE9c3RhdGljIHZvaWQgYXRoMTJrX3dtaV9vcF9yeChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDQxOS1cXHRjYXNlIFdNSV9IQUxQSFlfU1RBVFNfQ1RSTF9QQVRIX0VWRU5USUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDQyMDpcXHRcXHRhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzKGFiLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA0MjEtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjE5OjQ1LjMxMTc4MzQyOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ4NDg1MDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgQXRoZXJvcyBXaXJlbGVzcyBEcml2ZXIncyBUUEMgU3RhdHMgUHJvY2Vzc2luZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGF0aDEya2AgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0c2AgZnVuY3Rpb24uIEZpcnN0LCBJIG5vdGljZSBpdCdzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IG1lYW5zIGl0J3Mgb25seSB2aXNpYmxlIHdpdGhpbiBpdHMgc291cmNlIGZpbGUsIHdoaWNoIGxpbWl0cyBpdHMgc2NvcGUg4oCTIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQgZm9yIGRlYnVnZ2luZyBsYXRlci4gTm93LCB3aGVyZSBpcyB0aGlzIHRoaW5nIGFjdHVhbGx5ICp1c2VkKj8gSSBzZWUgdGhlIGNvbW1lbnQgaW5kaWNhdGVzIGl0J3MgY2FsbGVkIGZyb20gYGF0aDEya193bWlfb3BfcnhgLlxuXG5SaWdodCwgdGhhdCBtYWtlcyBzZW5zZS4gVFBDIHN0YXRzLCBJIHdvdWxkIGFzc3VtZSwgYXJlIGxpa2VseSBnZW5lcmF0ZWQgb24gcmVjZWl2ZSwgdGh1cyBoYW5kbGVkIGluIHRoZSBXTUkgUlggb3BlcmF0aW9uLiBUaGVyZWZvcmUsIEkgYmV0dGVyIHRha2UgYSBsb29rIGF0IGBhdGgxMmtfd21pX29wX3J4YC4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIGFjdGlvbiB3aWxsIGJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpbnRlZ3JhdGVzIHdpdGggdGhlIGhhcmR3YXJlIHRvIGdldCB0aGVzZSBUUEMgc3RhdHMsIGFuZCBob3cgaXQgdGhlbiwgcHJlc3VtYWJseSwgdXNlcyB0aGVtIGZvciB0cmFuc21pdCBwb3dlciBjb250cm9sIG9yIG90aGVyIG9wdGltaXphdGlvbnMuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2NzQsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTo0OS4wNjAyNzA4NDNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjA4NDA1NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX3dtaV9vcF9yeFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTEwMjQ5PWF0aDEya193bWlfcnNzaV9kYm1fY29udmVyc2lvbl9wYXJhbXNfaW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDI5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjEwMjkxOnN0YXRpYyB2b2lkIGF0aDEya193bWlfb3Bfcngoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwMjkyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTA0NjE9c3RhdGljIGludCBhdGgxMmtfY29ubmVjdF9wZGV2X2h0Y19zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDc0LVxcdGNvbm5fcmVxLmVwX29wcy5lcF90eF9jb21wbGV0ZSA9IGF0aDEya193bWlfaHRjX3R4X2NvbXBsZXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTA0NzU6XFx0Y29ubl9yZXEuZXBfb3BzLmVwX3J4X2NvbXBsZXRlID0gYXRoMTJrX3dtaV9vcF9yeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDc2LVxcdGNvbm5fcmVxLmVwX29wcy5lcF90eF9jcmVkaXRzID0gYXRoMTJrX3dtaV9vcF9lcF90eF9jcmVkaXRzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTo1MC40ODExMTU5MTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2OTM4MDc2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIGF0aDEyayBEcml2ZXIncyBIVEMgU2VydmljZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBhdGgxMmtfd21pX29wX3J4YC4gSXQgc2VlbXMgdG8gYmUgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGlzIHVzZWZ1bCB0byBrbm93IHJpZ2h0IG9mZiB0aGUgYmF0LiBUaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHRoYXQgaXQncyByZWdpc3RlcmVkIGFzIGBlcF9yeF9jb21wbGV0ZWAgd2l0aGluIGBhdGgxMmtfY29ubmVjdF9wZGV2X2h0Y19zZXJ2aWNlYC4gVGhhdCB0ZWxscyBtZSAqZXhhY3RseSogd2hlcmUgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwLCBmcm9tIGFuIGFyY2hpdGVjdHVyYWwgc3RhbmRwb2ludCwgaXMgdG8gdGhvcm91Z2hseSBleGFtaW5lIGBhdGgxMmtfY29ubmVjdF9wZGV2X2h0Y19zZXJ2aWNlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gZmxvdy4gV2hhdCBzZXJ2aWNlcyBpcyBpdCByZXNwb25zaWJsZSBmb3IsIGFuZCBob3cgZG9lcyBpdCByZWdpc3RlciBhbmQgdXRpbGl6ZSB0aGlzIGBlcF9yeF9jb21wbGV0ZWAgY2FsbGJhY2s/IEknbSBnb2luZyB0byBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCBmaWd1cmUgb3V0IGl0cyByb2xlIGluIGhhbmRsaW5nIGluY29taW5nIGRhdGEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzOTMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTo1My44NTA0OTg0MzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjIyNjMxNTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX2Nvbm5lY3RfcGRldl9odGNfc2VydmljZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTEwMjkxPXN0YXRpYyB2b2lkIGF0aDEya193bWlfb3Bfcngoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA0NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDQ2MTpzdGF0aWMgaW50IGF0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDYyLVxcdFxcdFxcdFxcdFxcdCAgIHUzMiBwZGV2X2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTA2ODg9aW50IGF0aDEya193bWlfY29ubmVjdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDY5Ny1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd21pX2VwX2NvdW50OyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDY5ODpcXHRcXHRhdGgxMmtfY29ubmVjdF9wZGV2X2h0Y19zZXJ2aWNlKGFiLCBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNjk5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTo1NS4zMTI3NjU3NTlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2MTcwMzI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgYXRoMTJrX3dtaV9jb25uZWN0YCoqXG5cbk9rYXksIHNvIGBhdGgxMmtfd21pX2Nvbm5lY3RgIGlzbid0IHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSBhbmQgaG93IGl0J3MgdXNlZC4gTGV0J3MgZ2V0IHJpZ2h0IGludG8gZXhhbWluaW5nIHRoZSBjb2RlIGZvciBgYXRoMTJrX3dtaV9jb25uZWN0YCBpdHNlbGYuIFdoYXQncyB0aGUgaW1wbGVtZW50YXRpb24/IFdoYXQgYXJlIHRoZSBjYWxsaW5nIGNvbnRleHRzPyBJcyB0aGlzIGEgZHJpdmVyIGZ1bmN0aW9uLCBvciBzb21ldGhpbmcgZXhwb3NlZCB0byBhbm90aGVyIHBhcnQgb2YgdGhlIHN5c3RlbT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uJ3Mgc2NvcGUsIGlucHV0cywgb3V0cHV0cywgYW5kLCBtb3N0IGltcG9ydGFudGx5LCB3aHkgaXQgaXNuJ3QgZGVmaW5lZCB3aXRoIHRoZSBgc3RhdGljYCBrZXl3b3JkLiBUaGlzIGxhY2sgb2Ygc3RhdGljIGRlc2lnbmF0aW9uIHN1Z2dlc3RzIGl0IG1heSBiZSB1c2VkIG91dHNpZGUgdGhlIGN1cnJlbnQgbW9kdWxlLCB3aGljaCBjYXJyaWVzIGltcG9ydGFudCBpbXBsaWNhdGlvbnMgZm9yIGRlcGVuZGVuY2llcyBhbmQgb3ZlcmFsbCBzeXN0ZW0gZGVzaWduLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSB0ZWxscyB1cyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMzMsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTo1OC4zNzQ0NzA2NjJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzgzMjU3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX3dtaV9jb25uZWN0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTg2Mj1zdGF0aWMgaW50IGF0aDEya19jb3JlX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy04OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6ODk4OlxcdHJldCA9IGF0aDEya193bWlfY29ubmVjdChhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODk5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTA2NTI9aW50IGF0aDEya193bWlfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2Uoc3RydWN0IGF0aDEyayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNjg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTA2ODg6aW50IGF0aDEya193bWlfY29ubmVjdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA2ODkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaD02NTUzPWludCBhdGgxMmtfd21pX3dhaXRfZm9yX3NlcnZpY2VfcmVhZHkoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDo2NTU0OmludCBhdGgxMmtfd21pX2Nvbm5lY3Qoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC02NTU1LWludCBhdGgxMmtfd21pX3BkZXZfYXR0YWNoKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjE5OjU5LjgxMjgwMTE4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NTkwODM2MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIGF0aDEyayBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGF0aDEya2AgZHJpdmVyIGFuZCBJIHNlZSBgYXRoMTJrX3dtaV9jb25uZWN0YCBiZWluZyBjYWxsZWQgZnJvbSBgYXRoMTJrX2NvcmVfc3RhcnRgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIHVzdWFsbHkgdGhlIFdNSSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkIGZhaXJseSBlYXJseSBpbiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIE1ha2VzIHNlbnNlIOKAkyBuZWVkIHRoYXQgY29ubmVjdGlvbiB0byB0YWxrIHRvIHRoZSBoYXJkd2FyZS4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBhbmQgY29udGV4dCBhIGJpdCBiZXR0ZXIuIE15IGd1dCB0ZWxscyBtZSBgYXRoMTJrX2NvcmVfc3RhcnRgIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHdoZW4gYW5kIHdoeSB0aGlzIGNvbm5lY3Rpb24gaGFwcGVucy4gVGltZSB0byBqdW1wIG92ZXIgdG8gdGhhdCBmdW5jdGlvbiBkZWZpbml0aW9uIGFuZCBzZWUgd2hhdCdzIGhhcHBlbmluZyBqdXN0IGJlZm9yZSB0aGUgY2FsbCB0byBgYXRoMTJrX3dtaV9jb25uZWN0YC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBoYXJkd2FyZSBzZXR1cCwgYW55IG5lY2Vzc2FyeSByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgcHJvYmFibHkgc29tZSBlc3NlbnRpYWwgY2hlY2tzIHRvIGVuc3VyZSBldmVyeXRoaW5nJ3MgcmVhZHkgdG8gZ28gYmVmb3JlIHdlIHRyeSB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgZmlybXdhcmUgdmlhIFdNSS4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbnMgb3IgcmFjZSBjb25kaXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgaGVyZS4gTGV0J3Mgc2VlIHdoYXQgYGF0aDEya19jb3JlX3N0YXJ0YCByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDcxOCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjIwOjA1LjM3MTg4Njg0NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0MDM1MjIxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMmtfY29yZV9zdGFydFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz04NTY9c3RhdGljIHZvaWQgYXRoMTJrX2NvcmVfcGRldl9kZXN0cm95KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy04NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6ODYyOnN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy04NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTEzMj1zdGF0aWMgaW50IGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0KHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTE4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMTkwOnN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc3RhcnRfZmlybXdhcmUoc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMTkxLVxcdFxcdFxcdFxcdCAgICAgIGVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGUgbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTEyODg9aW50IGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTI5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMjkzOlxcdHJldCA9IGF0aDEya19jb3JlX3N0YXJ0X2Zpcm13YXJlKGFiLCBhYi1cXHUwMDNlZndfbW9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTI5NC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEzMTQ6XFx0cmV0ID0gYXRoMTJrX2NvcmVfc3RhcnQoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTEzMTUtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoyMDowNy4wMTIyNDQ4MTdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjExNzg4NjIzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIGBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgIHRyaWdnZXJzIGBhdGgxMmtfY29yZV9zdGFydGAuIFRoaXMgc2lnbmFscyB0aGF0IHRoZSBmaXJtd2FyZSBoYXMgZmluaXNoZWQgaW5pdGlhbGl6aW5nLCB3aGljaCBwdXRzIG1lIG9uIHRoZSByaWdodCB0cmFjay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgYGF0aDEya193bWlfb3BfcnhgIGlzIHJlYWNoYWJsZSBiZWNhdXNlIGl0IGlzIHRoZSByZWNlaXZpbmcgV01JIGV2ZW50cyBjYWxsYmFjay4gU2luY2Ugc3l6a2FsbGVyIGlzIGFibGUgdG8gaW5qZWN0IFdNSSBldmVudHMg4oCTIHByZXN1bWFibHkgdGhyb3VnaCBzb21lIGVtdWxhdGlvbiBvZiB0aGUgUENJIG9yIEhUQyBsYXllcnMg4oCTIGl0J3MgZGVmaW5pdGVseSBmZWFzaWJsZSB0byByZWFjaCBgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0c2AgaW5kaXJlY3RseS5cblxuVGhlIHBhdGNoIGl0c2VsZiBkZWFscyB3aXRoIHJlbW92aW5nIGEgYHNrYi1cdTAwM2VkYXRhYCBjaGVjaywgd2hpY2ggY29uc3RpdHV0ZXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbi4gVGhlIGZ1bmN0aW9uIGBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGEga2V5IHBvaW50IHRvIG5vdGUuIFNvIG15IG1haW4gcXVlc3Rpb24gaXMsIGdpdmVuIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIHRoZSBzdGF0aWMgbmF0dXJlIG9mIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24sIHdoYXQgbm9uLXN0YXRpYyBmdW5jdGlvbnMgY291bGQgYmUgc3VjY2Vzc2Z1bGx5IGZ1enplZCB0byB0cmlnZ2VyIHRoZSBtb2RpZmllZCBiZWhhdmlvcj9cblxuSXQgc2VlbXMgbGlrZSBgYXRoMTJrX3dtaV9vcF9yeGAgaXMgYWxzbyBzdGF0aWMsIHNvIEkgY2FuJ3QgZGlyZWN0bHkgdGFyZ2V0IGl0LiBgYXRoMTJrX2Nvbm5lY3RfcGRldl9odGNfc2VydmljZWAgaXMgYWxzbyBzdGF0aWMuIGBhdGgxMmtfd21pX2Nvbm5lY3RgIHNlZW1zIG5vbi1zdGF0aWMsIGJ1dCBpdCBtb3N0bHkgZm9jdXNlcyBvbiByZWdpc3RlcmluZyB0aGUgY2FsbGJhY2sgZm9yIGluY29taW5nIGV2ZW50cy4gVGhlIHJlYWwgZW50cnkgcG9pbnQgZm9yIHRoZSBldmVudHMsIHRoZSBvbmUgdGhhdOKAmXMgYWN0dWFsbHkgY2FsbGVkIGJ5IHRoZSBIVEMgbGF5ZXIsIGlzIGBhdGgxMmtfd21pX29wX3J4YC4gSXQgc2VlbXMgbGlrZSB0aGUgYmVzdCB0aGluZyB0byBkbyBpcyB0byBsb29rIGF0IHdoZXJlIGBlcF9yeF9jb21wbGV0ZWAgaXMgY2FsbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTU3OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoyMDoxMy4xMzAxMzI5ODVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjI0MDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVwX3J4X2NvbXBsZXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmM9MjA9aW50IGF0aDEya19kcF9odHRfY29ubmVjdChzdHJ1Y3QgYXRoMTJrX2RwICpkcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmMtMjYtXFx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NvbXBsZXRlID0gYXRoMTJrX2RwX2h0dF9odGNfdHhfY29tcGxldGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuYzoyNzpcXHRjb25uX3JlcS5lcF9vcHMuZXBfcnhfY29tcGxldGUgPSBhdGgxMmtfZHBfaHR0X2h0Y190MmhfbXNnX2hhbmRsZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuYy0yOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM9MjUyPXZvaWQgYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtMzY4LVxcdFxcdCAgIGVpZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jOjM2OTpcXHRlcC1cXHUwMDNlZXBfb3BzLmVwX3J4X2NvbXBsZXRlKGFiLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtMzcwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYz03NTE9aW50IGF0aDEya19odGNfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy03ODEtXFx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NvbXBsZXRlID0gYXRoMTJrX2h0Y19jb250cm9sX3R4X2NvbXBsZXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM6NzgyOlxcdGNvbm5fcmVxLmVwX29wcy5lcF9yeF9jb21wbGV0ZSA9IGF0aDEya19odGNfY29udHJvbF9yeF9jb21wbGV0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jLTc4My1cXHRjb25uX3JlcS5tYXhfc2VuZF9xdWV1ZV9kZXB0aCA9IEFUSDEyS19OVU1fQ09OVFJPTF9UWF9CVUZGRVJTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuaD0yMzM9c3RydWN0IGF0aDEya19odGNfZXBfb3BzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5oLTIzNC1cXHR2b2lkICgqZXBfdHhfY29tcGxldGUpKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmg6MjM1OlxcdHZvaWQgKCplcF9yeF9jb21wbGV0ZSkoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuaC0yMzYtXFx0dm9pZCAoKmVwX3R4X2NyZWRpdHMpKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDQ2MT1zdGF0aWMgaW50IGF0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA0NzQtXFx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NvbXBsZXRlID0gYXRoMTJrX3dtaV9odGNfdHhfY29tcGxldGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDQ3NTpcXHRjb25uX3JlcS5lcF9vcHMuZXBfcnhfY29tcGxldGUgPSBhdGgxMmtfd21pX29wX3J4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA0NzYtXFx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NyZWRpdHMgPSBhdGgxMmtfd21pX29wX2VwX3R4X2NyZWRpdHM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjIwOjEzLjE3Mjc2MDE5NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjAwOTkyNDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXJgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBzZWUgYGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyYCBjYWxscyBgZXAtXHUwMDNlZXBfb3BzLmVwX3J4X2NvbXBsZXRlKGFiLCBza2IpYC4gVGhhdCdzIHRoZSBrZXkuIFRoaXMgaXMgd2hlcmUgdGhlIHJlY2VpdmVkIGRhdGEgaXMgYmVpbmcgaGFuZGxlZCBhZnRlciB0aGUgSFRDIGxheWVyIGdldHMgaW52b2x2ZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyB0cmFjZSB0aGlzIGFuZCB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gYGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyYC4gSSB3YW50IHRvIHNlZSB0aGUgZXhlY3V0aW9uIGZsb3c6IHNwZWNpZmljYWxseSwgd2hhdCBgZXAtXHUwMDNlZXBfb3BzLmVwX3J4X2NvbXBsZXRlYCAqaXMqIGluIHRoaXMgY29udGV4dCwgdGhlIGFyZ3VtZW50cyBpbnZvbHZlZCwgYW5kIGhvdyB0aGF0IHVsdGltYXRlbHkgcmVsYXRlcyB0byBkYXRhIHByb2Nlc3NpbmcgaW4gdGhlIHVwcGVyIGxheWVycy4gSSBrbm93IHRoZXJlJ3MgYSBsb3QgcGFja2VkIGluIHRoZXJlIHNvIEkgbmVlZCB0byBzdGVwIHRocm91Z2ggdGhpcyB2ZXJ5IGNhcmVmdWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxOTUsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoyMDoxNi43NzM3NTUzOTNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMDg4OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM9MjQ3PXN0YXRpYyB2b2lkIGF0aDEya19odGNfd2FrZXVwX2Zyb21fc3VzcGVuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy0yNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYzoyNTI6dm9pZCBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtMjUzLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jLTM3OC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYzozNzk6RVhQT1JUX1NZTUJPTChhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy0zODAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5oPTMxMj1zdHJ1Y3Qgc2tfYnVmZiAqYXRoMTJrX2h0Y19hbGxvY19za2Ioc3RydWN0IGF0aDEya19iYXNlICphYiwgaW50IHNpemUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmg6MzEzOnZvaWQgYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5oLTMxNC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYz0yNjM9Y29uc3Qgc3RydWN0IGNlX2F0dHIgYXRoMTJrX3dpZmk3X2hvc3RfY2VfY29uZmlnX3FjbjkyNzRbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yNzctXFx0XFx0LmRlc3RfbmVudHJpZXMgPSA1MTIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjI3ODpcXHRcXHQucmVjdl9jYiA9IGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yNzktXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yODYtXFx0XFx0LmRlc3RfbmVudHJpZXMgPSAxMjgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjI4NzpcXHRcXHQucmVjdl9jYiA9IGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yODgtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0zODQtXFx0XFx0LmRlc3RfbmVudHJpZXMgPSA1MTIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjM4NTpcXHRcXHQucmVjdl9jYiA9IGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0zODYtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYz01NzQ9Y29uc3Qgc3RydWN0IGNlX2F0dHIgYXRoMTJrX3dpZmk3X2hvc3RfY2VfY29uZmlnX3djbjc4NTBbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy01ODgtXFx0XFx0LmRlc3RfbmVudHJpZXMgPSA1MTIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjU4OTpcXHRcXHQucmVjdl9jYiA9IGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy01OTAtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy01OTctXFx0XFx0LmRlc3RfbmVudHJpZXMgPSA2NCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmM6NTk4OlxcdFxcdC5yZWN2X2NiID0gYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jLTU5OS1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jPTg3ND1jb25zdCBzdHJ1Y3QgY2VfYXR0ciBhdGgxMmtfd2lmaTdfaG9zdF9jZV9jb25maWdfaXBxNTMzMltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jLTg4OC1cXHRcXHQuZGVzdF9uZW50cmllcyA9IDUxMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmM6ODg5OlxcdFxcdC5yZWN2X2NiID0gYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jLTg5MC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jLTg5Ny1cXHRcXHQuZGVzdF9uZW50cmllcyA9IDEyOCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmM6ODk4OlxcdFxcdC5yZWN2X2NiID0gYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jLTg5OS1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoyMDoxNi44MTY4NTA5MzNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwMDE5NjAzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgUGFja2V0IFJlY2VwdGlvbiBQYXRoKipcblxuT2theSwgc28gSSd2ZSBwaW5wb2ludGVkIGBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcmAgYXMgdGhlIGNydWNpYWwgZW50cnkgcG9pbnQgaGVyZS4gSXQncyB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQncyBleHBvcnRlZCBhbmQsIGltcG9ydGFudGx5LCBpdOKAmXMgYmVpbmcgdXNlZCBhcyBgcmVjdl9jYmAgd2l0aGluIHRoZSBDb3B5IEVuZ2luZSAoQ0UpIGNvbmZpZ3VyYXRpb24uIFRoaW5raW5nIGFib3V0IGl0LCB0aGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2Ug4oCTIGl04oCZcyB0aGUgZ2F0ZXdheSBmb3IgcmVjZWl2aW5nIHBhY2tldHMgZnJvbSB0aGUgZmlybXdhcmUsIHNwZWNpZmljYWxseSB0aHJvdWdoIHRoZSBDb3B5IEVuZ2luZSwgd2hpY2ggaXMgdGhpcyBETUEgZW5naW5lIG9wZXJhdGluZyBvdmVyIHRoZSBQQ0kvQUhCIGludGVyZmFjZS4gUmlnaHQsIHNvIHRoaXMgYGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyYCBpcyBkZWZpbml0ZWx5IGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24gZm9yIHRoaXMgZGVlcCBkaXZlLlxuXG5Ob3csIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciB2aXRhbCBjb25maWdzIHRoYXQgYXJlIHBsYXlpbmcgYSByb2xlIGluIHRoaXMgYXJlYS4gRnJvbSBtZW1vcnksIGBBVEgxMktgIGlzIHRoZSBwcmltYXJ5IG9uZSBmb3IgdGhpcyBkcml2ZXIuIEkgd29uZGVyLCBhcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gWWVzLCBJJ2xsIG5lZWQgYE1BQzgwMjExYCBhcyB3ZWxsLiBKdXN0IHRvIGJlIHN1cmUsIGxldCdzIHRha2UgYSBsb29rIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdgIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgaW1wb3J0YW50IGNvbmZpZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0ODMxLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjIwOjIxLjUxNzA0ODc0OFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBBVEgxMktcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUEgXFx1MDAyNlxcdTAwMjYgUENJXFxuICAgNTpcXHRcXHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xcbiAgIDY6XFx0XFx0c2VsZWN0IE1ISV9CVVNcXG4gICA3OlxcdFxcdHNlbGVjdCBRUlRSXFxuICAgODpcXHRcXHRzZWxlY3QgUVJUUl9NSElcXG4gICA5OlxcdFxcdHNlbGVjdCBQQ0lfUFdSQ1RSTF9QV1JTRVEgaWYgSEFWRV9QV1JDVFJMXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIEVuYWJsZSBzdXBwb3J0IGZvciBRdWFsY29tbSBUZWNobm9sb2dpZXMgV2ktRmkgNyAoSUVFRVxcbiAgMTI6XFx0XFx0ICA4MDIuMTFiZSkgZmFtaWx5IG9mIGNoaXBzZXRzLCBmb3IgZXhhbXBsZSBXQ043ODUwIGFuZFxcbiAgMTM6XFx0XFx0ICBRQ045Mjc0LlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBhdGgxMmsuXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBBVEgxMktfQUhCXFxuICAxODpcXHRcXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBSRU1PVEVQUk9DXFxuICAyMDpcXHRcXHRzZWxlY3QgUUNPTV9NRFRfTE9BREVSXFxuICAyMTpcXHRcXHRzZWxlY3QgUUNPTV9QQVNcXG4gIDIyOlxcdFxcdGhlbHBcXG4gIDIzOlxcdFxcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIEF0aDEyayBBSEIgYnVzIGNoaXBzZXRzLCBleGFtcGxlIElQUTUzMzIuXFxuICAyNDpcXHRcXG4gIDI1OlxcdGNvbmZpZyBBVEgxMktfREVCVUdcXG4gIDI2OlxcdFxcdGJvb2wgXFxcImF0aDEyayBkZWJ1Z2dpbmdcXFwiXFxuICAyNzpcXHRcXHRkZXBlbmRzIG9uIEFUSDEyS1xcbiAgMjg6XFx0XFx0aGVscFxcbiAgMjk6XFx0XFx0ICBFbmFibGUgZGVidWcgc3VwcG9ydCwgZm9yIGV4YW1wbGUgZGVidWcgbWVzc2FnZXMgd2hpY2ggbXVzdFxcbiAgMzA6XFx0XFx0ICBiZSBlbmFibGVkIHNlcGFyYXRlbHkgdXNpbmcgdGhlIGRlYnVnX21hc2sgbW9kdWxlIHBhcmFtZXRlci5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcXG4gIDMzOlxcdFxcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIEFUSDEyS19ERUJVR0ZTXFxuICAzNjpcXHRcXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbiAgMzc6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbiAgMzg6XFx0XFx0aGVscFxcbiAgMzk6XFx0XFx0ICBFbmFibGUgYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcbiAgNDA6XFx0XFxuICA0MTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxcbiAgNDI6XFx0XFx0ICB5b3Ugd2FudCBvcHRpbWFsIHBlcmZvcm1hbmNlIGNob29zZSBOLlxcbiAgNDM6XFx0XFxuICA0NDpcXHRjb25maWcgQVRIMTJLX1RSQUNJTkdcXG4gIDQ1OlxcdFxcdGJvb2wgXFxcImF0aDEyayB0cmFjaW5nIHN1cHBvcnRcXFwiXFxuICA0NjpcXHRcXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBFVkVOVF9UUkFDSU5HXFxuICA0NzpcXHRcXHRoZWxwXFxuICA0ODpcXHRcXHQgIEVuYWJsZSBhdGgxMmsgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS5cXG4gIDQ5OlxcdFxcbiAgNTA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDY6MjA6MjEuNTE3MTIzODU4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyODU3MzAwMDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBhdGgxMmsgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzYCBpbiB0aGUgYXRoMTJrIGRyaXZlciwgc3BlY2lmaWNhbGx5IHJlbW92aW5nIGEgYHNrYi1cdTAwM2VkYXRhYCBjaGVjay4gVGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCB2aWEgYGF0aDEya193bWlfb3BfcnhgIHdoZW4gaXQgcmVjZWl2ZXMgYSBgV01JX0hBTFBIWV9TVEFUU19DVFJMX1BBVEhfRVZFTlRJRGAuIGBhdGgxMmtfd21pX29wX3J4YCBpdHNlbGYgaXMgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyIGFzIGEgcGFydCBvZiB0aGUgYGF0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2VgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGF0aDEyayBXaS1GaSBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIChvciBwb3RlbnRpYWxseSBBSEIpIGRyaXZlci5cblxuVGhlIGluc3RydWN0aW9ucyBJJ20gd29ya2luZyB3aXRoIGFyZSBwcmV0dHkgY2xlYXIuIFRoZXkgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggb25seSB0b3VjaGVzOiAgXCIuLi4gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzLCBcIldhaXQsIGlzIGF0aDEyayBlbXVsYXRlZCBsaWtlIG1hYzgwMjExX2h3c2ltP1wiIEJ1dCBubywgYXRoMTJrIGlzIGEgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIChXQ043ODUwLCBRQ045Mjc0LCBJUFE1MzMyKS4gIEl0J3MgdmVuZG9yLXNwZWNpZmljIGFuZCByZWxpZXMgb24gUENJIG9yIEFIQi4gIFRoZSBpbnN0cnVjdGlvbnMgbGF0ZXIgcmVpdGVyYXRlIHRoaXMgcG9pbnQsIG1lbnRpb25pbmcgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLlxuXG5TbywgdGhlIHF1ZXN0aW9uIGlzOiBjYW4gd2UgcmVhY2ggdGhpcyBjb2RlIHBhdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IEdpdmVuIHRoYXQgYXRoMTJrIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgV2ktRmkgZHJpdmVyLCBhbmQgdGhlcmUncyBubyBzdGFuZGFyZCBRRU1VIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSwgdGhlIGFuc3dlciBpcyBuby4gIEl0J3Mgbm90IG1hYzgwMjExX2h3c2ltOyBpdCdzIHRoZSBhY3R1YWwgaGFyZHdhcmUgZHJpdmVyLiAgV2UncmUgbm90IHRhbGtpbmcgYWJvdXQgUENJIGZ1enppbmcgb3IgYW55dGhpbmcgbGlrZSB0aGF0LlxuXG5JIGNoZWNrZWQgaWYgc3l6a2FsbGVyIGlzIGZ1enppbmcgYXRoMTJrIGRpcmVjdGx5LiBJIHNhdyB0aGF0IHN5emthbGxlciBoYXMgYHN5el84MDIxMV8uLi5gIHdoaWNoIHVzZSBgbWFjODAyMTFfaHdzaW1gLCBidXQgaXQgaXMgbm90IGZ1enppbmcgYXRoMTJrLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgYXRoMTJrIGlzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciAoUXVhbGNvbW0pIHRoYXQgZGVwZW5kcyBvbiBwaHlzaWNhbCBQQ0llL0FIQiBoYXJkd2FyZSB0aGF0IGlzbid0IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgSSBtdXN0IHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQncyBhIGhhcmR3YXJlLWRlcGVuZGVudCBjb2RlIHBhdGggdGhhdCBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJhc2VkIG9uIHRoZSBnaXZlbiBpbnN0cnVjdGlvbnMuIFRoZXJlIGlzIG5vIGVtdWxhdGlvbiBvZiBhdGgxMmsuXG5cbk9rYXksIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIG1vdmluZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1NzYsIk91dHB1dFRva2VucyI6OTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDY6MjA6MzQuMzc0NDI1NDY5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIG9yIEFIQiBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIG9yIEFIQiBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownfd5s[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-30 06:00:44 +0000 UTC FinishedAt: 2026-07-30 06:20:35 +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+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBvciBBSEIgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MmY1ODk5Zjc4YjU5NWYwMmQ1MjJlZDRjMzBjYjg1MGEyNTI2NTZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDY6MTk6MDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbmluZGV4IDJiNzA3ZmZjMWEyMGYuLmNkMzA0MGI4Mzg4YzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG5AQCAtOTk3MywxMSAmIzQzOzk5NzMsNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4gXHR1MzIgZXZlbnRfY291bnQ7XG4gXHRpbnQgcmV0O1xuIFxuLVx0aWYgKCFza2ItXHUwMDNlZGF0YSkge1xuLVx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7Tm8gZGF0YSBwcmVzZW50IGluIHRwYyBzdGF0cyBldmVudFxcblwmIzM0Oyk7XG4tXHRcdHJldHVybjtcbi1cdH1cbi1cbiBcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAoc2l6ZW9mKCpmaXhlZF9wYXJhbSkgJiM0MzsgVExWX0hEUl9TSVpFKSkge1xuIFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7VFBDIHN0YXRzIGV2ZW50IHNpemUgaW52YWxpZFxcblwmIzM0Oyk7XG4gXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIG9yIEFIQiBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcyZjU4OTlmNzhiNTk1ZjAyZDUyMmVkNGMzMGNiODUwYTI1MjY1NmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAzMCAwNjoxOTowMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jCmluZGV4IDJiNzA3ZmZjMWEyMGYuLmNkMzA0MGI4Mzg4YzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYwpAQCAtOTk3MywxMSAmIzQzOzk5NzMsNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCiAJdTMyIGV2ZW50X2NvdW50OwogCWludCByZXQ7CiAKLQlpZiAoIXNrYi0mZ3Q7ZGF0YSkgewotCQlhdGgxMmtfd2FybihhYiwgJiMzNDtObyBkYXRhIHByZXNlbnQgaW4gdHBjIHN0YXRzIGV2ZW50XG4mIzM0Oyk7Ci0JCXJldHVybjsKLQl9Ci0KIAlpZiAoc2tiLSZndDtsZW4gJmx0OyAoc2l6ZW9mKCpmaXhlZF9wYXJhbSkgJiM0MzsgVExWX0hEUl9TSVpFKSkgewogCQlhdGgxMmtfd2FybihhYiwgJiMzNDtUUEMgc3RhdHMgZXZlbnQgc2l6ZSBpbnZhbGlkXG4mIzM0Oyk7CiAJCXJldHVybjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEyMgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDYyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enphYmlsaXR5IG9mIGFuIGF0aDEyayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHJlbW92ZXMgYSBgIXNrYi0mZ3Q7ZGF0YWAgY2hlY2sgaW4gYGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGFzc2VzcyBpZiBgYXRoMTJrYCBpcyBldmVuIGZ1enphYmxlLiBJdCYjMzk7cyBhIFF1YWxjb21tIFdpLUZpIDcgZHJpdmVyLCB1c2luZyBQQ0kgb3IgQUhCLiBUaGUgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IHRoZXNlIFdpLUZpIGRyaXZlcnMgb2Z0ZW4gbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSwgdW5sZXNzIHRoZXkmIzM5O3JlIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCBgYXRoMTJrYCBpcyBhIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciwgc28gdGhhdCBwb3NlcyBhIGNoYWxsZW5nZS4KCkhvd2V2ZXIsIEkgcmVtZW1iZXIgc3l6a2FsbGVyLiBEb2VzIGl0IGhhdmUgYW55IHRyaWNrcyB1cCBpdHMgc2xlZXZlPyBZZXMhIFN5emthbGxlciAqZG9lcyogZnV6eiBXaS1GaSBkcml2ZXJzIHZpYSBgbWFjODAyMTFfaHdzaW1gIGluIHNvbWUgY2FzZXMuIEl0ICpjYW4qIGZ1enogUENJIGRldmljZXMgaWYgdGhleSYjMzk7cmUgZW11bGF0ZWQgb3IgdXNpbmcgdmhjaSBvciBzaW1pbGFyIHRlY2huaXF1ZXMuLi5idXQgd2FpdCwgYGF0aDEya2AgaXMgYSBoYXJkd2FyZSBkcml2ZXIuLi5yaWdodD8gVGhlbiBJIHRoaW5rOiBTeXprYWxsZXIgKmRvZXMqIGFjdHVhbGx5IGZ1enogYXRoOWssIGF0aDEwaywgYXRoMTFrLCBhbmQgYXRoMTJrIHVzaW5nIFBDSSBmdXp6aW5nIChlLmcuIGBzeXpfcGNpXy4uLmApLgoKVGhlIHByb21wdCBpcyBtYWtpbmcgbWUgdGhpbmsgYWJvdXQgc3BlY2lmaWMgbGltaXRhdGlvbnMsIGl0IHJlYWRzLCAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBJcyBhdGgxMmsgb25lIG9mICp0aG9zZSo/CgpXYWl0LCBob2xkIG9uLCB0aGUgcGF0Y2ggYXV0aG9yIGlzIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YC4gU3l6a2FsbGVyIGlzIGZpbmRpbmcgYnVncyBoZXJlLCBzbyBjbGVhcmx5IGl0JiMzOTtzIGZ1enppbmcgKnNvbWV0aGluZyouIEkgbmVlZCB0byBjbGFyaWZ5OiBkb2VzIGl0IGZ1enogYGF0aDEya2AgdmlhIGBtYWM4MDIxMWAgb3IgUENJPyBUaGUgcHJvbXB0IGFsc28gc3RhdGVzLCAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7IGFuZCB0aGVuIHRoZSBzYW1lIFBDSWUgbGltaXRhdGlvbi4KClNvLCBpcyBgYXRoMTJrYCBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcj8gWWVzLCBpdCYjMzk7cyBRdWFsY29tbSBXaS1GaSwgd2hpY2ggc291bmRzIGxpa2UgaXQgaXMsIGJ1dCBpcyBpdCAqZnV6emVkKj8gSSBrbm93IHRoZXJlIGFyZSBzeXprYWxsZXIgcHNldWRvLXN5c2NhbGxzIGZvciBgbWFjODAyMTFgIChgc3l6XzgwMjExXy4uLmApLCBidXQgdGhhdCYjMzk7cyBhIGRpZmZlcmVudCBhcHByb2FjaC4gU3l6a2FsbGVyIENBTiBmdXp6IFBDSSBkcml2ZXJzIHVzaW5nIFBDSSBmdXp6aW5nLCB0aG91Z2guIEkgbmVlZCB0byBrbm93IGZvciBzdXJlIGlmIGBhdGgxMmtgIGlzIGJlaW5nIGZ1enplZC4gTGV0JiMzOTtzIGRvIGEgcXVpY2sgc2VhcmNoIGZvciBgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0c2Agd2l0aGluIHRoZSBzeXprYWxsZXIgY29udGV4dC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGRlZmluaXRpdmUgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz05OTQ4PXZvaWQgYXRoMTJrX3dtaV9mcmVlX3RwY19zdGF0c19tZW0oc3RydWN0IGF0aDEyayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy05OTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo5OTY0OnN0YXRpYyB2b2lkIGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHMoc3RydWN0IGF0aDEya19iYXNlICphYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtOTk2NS1cdFx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA2MS0jZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDA2MjpzdGF0aWMgdm9pZCBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwMDYzLVx0XHRcdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTEwMjkxPXN0YXRpYyB2b2lkIGF0aDEya193bWlfb3Bfcngoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDE5LVx0Y2FzZSBXTUlfSEFMUEhZX1NUQVRTX0NUUkxfUEFUSF9FVkVOVElEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDQyMDpcdFx0YXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0cyhhYiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA0MjEtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NjYKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhdGgxMmsqKgoKT2theSwgc28gYGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNgIGdldHMgY2FsbGVkIGZyb20gYGF0aDEya193bWlfb3BfcnhgLiBBIGtleSBxdWVzdGlvbiBhcmlzZXM6IGlzIHRoZSBhdGgxMmsgZHJpdmVyLCBzcGVjaWZpY2FsbHksIGdldHRpbmcgZnV6emVkIGJ5IHN5emthbGxlcj8gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHRoZSBQQ0kgZnV6emVyIGluIHN5emthbGxlciBtaWdodCBiZSBhdCBwbGF5LCBpbmplY3RpbmcgUENJIHBhY2tldHMuIENvdWxkIGl0IGJlIHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQmIzM5O3MgYSBzb2Z0d2FyZSBzaW11bGF0b3IsIHdoaWxlIGF0aDEyayBpcyBhIGhhcmR3YXJlIGRyaXZlci4gVGhhdCYjMzk7cyBhIGRlYWQgZW5kLiBBaCwgYnV0IHdhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSBhIFdpLUZpIGZ1enplci4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gSXMgYXRoMTJrIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyIHRoYXQgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmUgdG8gcnVuPyBZZXMsIGF0aDEyayBpcyB0aGF0IFF1YWxjb21tIFdpLUZpIDcgZHJpdmVyLiBTbywgZG9lcyBRRU1VIG9mZmVyIGFueSBlbXVsYXRpb24gaGVyZT8gTm9wZSwgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGF0aDEyay4KClNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogZG9lcyBzeXprYWxsZXIgYWN0dWFsbHkgZnV6eiB0aGlzIGRyaXZlcj8gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIFBDSWUgZHJpdmVyLCB0aGUgUENJIGZ1enplciBzZWVtcyBsaWtlIHRoZSBtb3N0IGxpa2VseSB2ZWN0b3IuIFN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyICpjYW4qIGZ1enogUENJIGRyaXZlcnMgYnkgZW11bGF0aW5nIFBDSSBkZXZpY2VzLiBUaGF0JiMzOTtzIHByb21pc2luZy4KClRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgc3l6a2FsbGVyIGhhcyBhbnkgc3BlY2lmaWMgZGV2aWNlIGRlc2NyaXB0aW9ucyBvciBjb25maWd1cmF0aW9ucyBmb3IgYXRoMTJrLiBUaGF0IHdvdWxkIGJlIHRoZSBiZXN0IHdheSB0byB1bmRlcnN0YW5kIGlmIGl0JiMzOTtzIHRhcmdldGVkIG9yIGhvdyBpdCBpcyBiZWluZyB0YXJnZXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEyayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NzAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0MTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25zdHJhaW50cyBhbmQgRGV0ZXJtaW5pbmcgdGhlIEFwcHJvcHJpYXRlIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkgc2VlIHRoZSBwcm9oaWJpdGlvbiBvbiB1c2luZyBgZ3JlcHBlcmAgZm9yIGBzeXMvYCBhbmQgYW55dGhpbmcgd2l0aCBgc3l6X2AsIHdoaWNoIG1ha2VzIHNlbnNlIGJlY2F1c2UgdGhvc2UgYXJlIHN5emthbGxlciBzcGVjaWZpY3MgYW5kIG5vdCBrZXJuZWwgY29kZS4gSSYjMzk7bSBsb29raW5nIGZvciByZWxldmFudCBrZXJuZWwgY29kZS4gVGhlIHByb21wdCBkaXJlY3RzIG1lIHRvIHVzZSBge3sudG9vbFJlYWREZXNjcmlwdGlvbn19YCwgYnV0IHRoYXQmIzM5O3Mgbm90IGluIG15IGF2YWlsYWJsZSB0b29scy4gSSYjMzk7dmUgZ290IGBncmVwcGVyYCwgYGNvZGVzZWFyY2gtZGlyLWluZGV4YCwgYHJlYWQtZmlsZWAsIGFuZCBgc2V0LXJlc3VsdHNgLiBTbywgSSYjMzk7bSBlZmZlY3RpdmVseSBibG9ja2VkIGZyb20gZGlyZWN0bHkgc2VhcmNoaW5nIHRob3NlIHN5emthbGxlciBkZXNjcmlwdGlvbnMuCgpOb3csIGxldCYjMzk7cyByZWZvY3VzLiBUaGUgcHJvYmxlbSBzcGFjZSBjZW50ZXJzIG9uIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIChQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSkgdGhhdCAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUuIFRoZSBleGFtcGxlcyBnaXZlbiBhcmUgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YC4gVGhlIGNyaXRpY2FsIHRoaW5nIGlzIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmN5LgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlzIGBhdGgxMmtgIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyPyBZZXMsIGl0JiMzOTtzIGEgUXVhbGNvbW0gV2ktRmkgZHJpdmVyLiBPa2F5LCBidXQgYSBrZXkgdGVzdCBzdHJhdGVneSBmb3IgV2ktRmkgZHJpdmVycyBpcyB0eXBpY2FsbHkgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggSSBhc3N1bWUgaXMgc29mdHdhcmUgZW11bGF0aW9uIGZvciBXaS1GaS4gYGF0aDEya2AgaXMgYSByZWFsIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgc28sIHRoYXQmIzM5O3MgaW1wb3J0YW50LgoKQWgsIHdhaXQuIFN5emthbGxlciBoYXMgVVNCIGFuZCBQQ0kgZnV6emVycy4gVGhlIFBDSSBmdXp6ZXIgY2FuIHRhcmdldCAqYW55KiBQQ0kgZHJpdmVyIGJlY2F1c2UgaXQgY3JlYXRlcyBhIHZpcnR1YWwgUENJIGRldmljZS4KCkJhY2sgdG8gdGhlIHByb21wdDogaXMgYGF0aDEya2AgYSBTbWFydE5JQywgR1BVLCBvciBQQ0llIHN3aXRjaD8gQ2xlYXJseSwgbm8sIGl0IGlzIGEgV2ktRmkgZHJpdmVyLgoKT2theSwgZG9lcyBzeXprYWxsZXIgZnV6eiBXaS1GaSBkcml2ZXJzICp1c2luZyogdGhlIFBDSSBmdXp6ZXI/IExldCYjMzk7cyBjaGVjayBpZiBgYXRoMTJrYCBpcywgaW4gZmFjdCwgaW1wbGVtZW50ZWQgYXMgYSBQQ0kgZHJpdmVyIG9yIHVzZXMgYSBQQ0kgaW50ZXJmYWNlLiBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBzZWFyY2ggd2l0aCBteSBhdmFpbGFibGUgdG9vbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTgxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgX19tYXliZV91bnVzZWQgYXRoMTJrX3BjaV9wbV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODE4OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTgxOS1cdFx0XHQgICAgICAgc3RydWN0IGF0aDEya19wY2lfZHJpdmVyICpkcml2ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODQ1Olx0cmV0dXJuIHBjaV9yZWdpc3Rlcl9kcml2ZXIocGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDYtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODQ3OkVYUE9SVF9TWU1CT0woYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODQ4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg9MTc2PXZvaWQgYXRoMTJrX3BjaV9wb3dlcl9kb3duKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIGJvb2wgaXNfc3VzcGVuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oOjE3NzppbnQgYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIoY29uc3QgZW51bSBhdGgxMmtfZGV2aWNlX2ZhbWlseSBkZXZpY2VfaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE3OC1cdFx0XHQgICAgICAgc3RydWN0IGF0aDEya19wY2lfZHJpdmVyICpkcml2ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmM9MTk3PWludCBhdGgxMmtfd2lmaTdfcGNpX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jLTIwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmM6MjAxOlx0cmV0ID0gYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIoQVRIMTJLX0RFVklDRV9GQU1JTFlfV0lGSTcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jLTIwMi1cdFx0XHRcdFx0IFx1MDAyNmF0aDEya193aWZpN19wY2lfZHJpdmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTc5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBDSSBEcml2ZXIgQnVnIFJlcG9ydGVkIGJ5IFN5emthbGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSByZWxhdGVkIHRvIGEgUENJIGRyaXZlciwgdGhhdCBtdWNoIGlzIGNsZWFyLiBUaGUgc3VzcGljaW91cyBwYXJ0IGlzIHRoYXQgdGhlIGZpeCBpcyBpbiBgd21pLmNgLiBXYWl0IGEgc2Vjb25k4oCmV01J4oCmdGhhdCYjMzk7cyB0aGUgV2lyZWxlc3MgTW9kdWxlIEludGVyZmFjZSwgdGhlIGNvbW11bmljYXRpb24gcHJvdG9jb2wgYmV0d2VlbiB0aGUgaG9zdCBzeXN0ZW0gYW5kIHRoZSBmaXJtd2FyZS4gVGhhdCYjMzk7cyBub3QgdGhlIGZpcnN0IHBsYWNlIEkmIzM5O2QgbG9vayBmb3IgYSBQQ0kgZHJpdmVyIGlzc3VlLCB3aGljaCBpcyBpbnRlcmVzdGluZy4KClRoZSBwYXRjaCBpdHNlbGYgaXMgcmVtb3ZpbmcgdGhpcyBgaWYgKCFza2ItJmd0O2RhdGEpYCBjaGVjay4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIHBvdGVudGlhbCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UsIHdoaWNoIGlzIGFsd2F5cyBmdW4uIFRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiwgYGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNgLCBpcyBjYWxsZWQgZnJvbSBgYXRoMTJrX3dtaV9vcF9yeGAuIEhtbSwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSByZWNlaXZlIG9wZXJhdGlvbiBpbiB0aGUgYXRoMTJrIGRyaXZlci4gSSB3b25kZXIgaWYgdGhpcyBpcyBldmVuIHJlYWNoYWJsZSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LgoKQnV0IHdhaXQgYSBtaW51dGUsIHRoZSBmYWN0IHRoYXQgc3l6a2FsbGVyIGZvdW5kIHRoaXMgYnVn4oCmIHRoYXQgbWVhbnMgaXQgKmNhbiogYmUgdHJpZ2dlcmVkLiBUaGUgcGF0Y2ggYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AsIHdoaWNoLCBvZiBjb3Vyc2UsIGNvbmZpcm1zIHRoYXQgdGhpcyB3YXMgYW4gYXV0b21hdGVkIGJ1ZyByZXBvcnQgZnJvbSBzeXprYWxsZXIuIElmIHN5emthbGxlciBmb3VuZCBpdCwgaXQgaXMgZGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCB0aGF0JiMzOTtzIHRoZSBrZXkuCgpBbmQgdGhlbiBpdCBoaXRzIG1lLiBTeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgZG9lc24mIzM5O3QgaXQ/IE9mIGNvdXJzZSEgVGhhdCYjMzk7cyBob3cgaXQmIzM5O3MgZ2V0dGluZyB0byB0aGlzIGNvZGUgcGF0aC4gTm93IEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVxdWlyZWQgdG8gcmVwcm9kdWNlIHRoaXMgYnVnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRIMTJLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjpjb25maWcgQVRIMTJLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxNzpjb25maWcgQVRIMTJLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjU6Y29uZmlnIEFUSDEyS19ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDthdGgxMmsgZGVidWdnaW5nXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM1OmNvbmZpZyBBVEgxMktfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ0OmNvbmZpZyBBVEgxMktfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ1LVx0Ym9vbCBcJiMzNDthdGgxMmsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjUzOmNvbmZpZyBBVEgxMktfQ09SRURVTVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7YXRoMTJrIGNvcmVkdW1wXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNjgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIHRoZSBgQVRIMTJLYCBEZXBlbmRlbmNpZXMqKgoKT2theSwgdGltZSB0byBkaWcgaW50byBgQVRIMTJLYC4gQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIGFueXRoaW5nIGVsc2UsIGl0JiMzOTtzIGFsd2F5cyBzbWFydCB0byB1bmRlcnN0YW5kIHRoZSBmb3VuZGF0aW9uIOKAkyB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgbW9kdWxlICpyZWxpZXMqIG9uLCBhbmQgd2hhdCwgaW4gdHVybiwgKnJlbGllcyogb24gaXQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgZGVidWdnaW5nLCBmb3IgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgaW1wYWN0cyBvZiBjaGFuZ2VzLCBmb3Iga25vd2luZyB3aGVyZSB0byBsb29rIGlmIHNvbWV0aGluZyBicmVha3MsIGFuZCwgb2YgY291cnNlLCBmb3IgcG9ydGluZyBvciBtb2RpZnlpbmcgdGhlIGNvZGUuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgSSBoYXZlIGFsbCB0aGUgcHJlLXJlcXVpc2l0ZXMgaW5zdGFsbGVkIGFuZCBmdW5jdGlvbmluZyBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciB3aXRoIHRoZSBjb3JlIGV2YWx1YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIEFUSDEyS1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBQQ0lcbiAgIDU6XHRcdHNlbGVjdCBRQ09NX1FNSV9IRUxQRVJTXG4gICA2Olx0XHRzZWxlY3QgTUhJX0JVU1xuICAgNzpcdFx0c2VsZWN0IFFSVFJcbiAgIDg6XHRcdHNlbGVjdCBRUlRSX01ISVxuICAgOTpcdFx0c2VsZWN0IFBDSV9QV1JDVFJMX1BXUlNFUSBpZiBIQVZFX1BXUkNUUkxcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIFF1YWxjb21tIFRlY2hub2xvZ2llcyBXaS1GaSA3IChJRUVFXG4gIDEyOlx0XHQgIDgwMi4xMWJlKSBmYW1pbHkgb2YgY2hpcHNldHMsIGZvciBleGFtcGxlIFdDTjc4NTAgYW5kXG4gIDEzOlx0XHQgIFFDTjkyNzQuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgYXRoMTJrLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBBVEgxMktfQUhCXG4gIDE4Olx0XHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IFJFTU9URVBST0NcbiAgMjA6XHRcdHNlbGVjdCBRQ09NX01EVF9MT0FERVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU4OAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDI3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbnRleHQgb2YgdGhlIGBhdGgxMmtgIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCYjMzk7cyBkZXBlbmRlbmNpZXMgYXJlIGBNQUM4MDIxMWAsIGBIQVNfRE1BYCwgYW5kIGBQQ0lgLiBUaGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYEFUSDEyS2AgY29uZmlndXJhdGlvbi4gTm93LCBgSEFTX0RNQWAgYW5kIGBQQ0lgIGFyZSBwcmV0dHkgY29tbW9uIGVuYWJsZW1lbnQgb3B0aW9ucyBpbiBnZW5lcmFsLiBUaGUgcmVhbCBjcnVjaWFsIGRlcGVuZGVuY3kgaXMgYE1BQzgwMjExYC4gQnV0IGhvbGQgb24sIEkgbmVlZCB0byBjb25maXJtIGlmIGBhdGgxMmtgIGlzIGEgZHJpdmVyIHNwZWNpZmljIHRvIGEgdmVuZG9yLCBQQ0llIGhhcmR3YXJlIGRldmljZS4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgd2FybnMgYWJvdXQgY29kZSB0aGF0IGRlcGVuZHMgb24gcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcy4KClJpZ2h0LCBXaS1GaSBkcml2ZXJzLCBsaWtlIEkgZXhwZWN0IGBhdGgxMmtgIHRvIGJlLCBhcmUgKm5vdCogU21hcnROSUNzLCBHUFVzLCBvciBQQ0llIHN3aXRjaGVzLiBUaGF0JiMzOTtzIGEgZ29vZCBzaWduLiBBbmQsIGFoLCB5ZXMsIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB3aGljaCBzdWdnZXN0cyBlbXVsYXRpb24uIFdhaXQsIGl0JiMzOTtzIG5vdCBqdXN0ICphKiBQQ0kgZnV6emVyLCBpdCYjMzk7cyAqdGhlKiBzcGVjaWZpYyBQQ0kgZnV6emVyLCBtZWFuaW5nIGl0IGNhbiBmdXp6IGFueSBQQ0kgZHJpdmVyLgoKQ3J1Y2lhbGx5LCB0aGUgcGF0Y2ggYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AuIEJpbmdvLiBUaGF0IG1lYW5zIHRoaXMgYnVnIHdhcyAqZm91bmQqIGFuZCB0ZXN0ZWQgYnkgc3l6a2FsbGVyLiBUaGF0IGlzIGRlZmluaXRpdmUsIHRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdGhlIHN5emthbGxlciBlbnZpcm9ubWVudC4gV2UgaGF2ZSB2YWxpZGF0aW9uIHRoYXQgdGhpcyBpcyBmdXp6YWJsZS4gU28sIGxldCYjMzk7cyBzZWUgd2hpY2ggZnVuY3Rpb24gaXMgaW1wbGljYXRlZDogYGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9OTk0OD12b2lkIGF0aDEya193bWlfZnJlZV90cGNfc3RhdHNfbWVtKHN0cnVjdCBhdGgxMmsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtOTk2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6OTk2NDpzdGF0aWMgdm9pZCBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTk5NjUtXHRcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTAwNjEtI2Vsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTAwNjI6c3RhdGljIHZvaWQgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0cyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA2My1cdFx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDI5MT1zdGF0aWMgdm9pZCBhdGgxMmtfd21pX29wX3J4KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDQxOS1cdGNhc2UgV01JX0hBTFBIWV9TVEFUU19DVFJMX1BBVEhfRVZFTlRJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTA0MjA6XHRcdGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHMoYWIsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDIxLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY3NAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczoKCioqRGlnZ2luZyBpbnRvIHRoZSBBdGhlcm9zIFdpcmVsZXNzIERyaXZlciYjMzk7cyBUUEMgU3RhdHMgUHJvY2Vzc2luZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgYXRoMTJrYCBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzYCBmdW5jdGlvbi4gRmlyc3QsIEkgbm90aWNlIGl0JiMzOTtzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IG1lYW5zIGl0JiMzOTtzIG9ubHkgdmlzaWJsZSB3aXRoaW4gaXRzIHNvdXJjZSBmaWxlLCB3aGljaCBsaW1pdHMgaXRzIHNjb3BlIOKAkyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIGZvciBkZWJ1Z2dpbmcgbGF0ZXIuIE5vdywgd2hlcmUgaXMgdGhpcyB0aGluZyBhY3R1YWxseSAqdXNlZCo/IEkgc2VlIHRoZSBjb21tZW50IGluZGljYXRlcyBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgYXRoMTJrX3dtaV9vcF9yeGAuCgpSaWdodCwgdGhhdCBtYWtlcyBzZW5zZS4gVFBDIHN0YXRzLCBJIHdvdWxkIGFzc3VtZSwgYXJlIGxpa2VseSBnZW5lcmF0ZWQgb24gcmVjZWl2ZSwgdGh1cyBoYW5kbGVkIGluIHRoZSBXTUkgUlggb3BlcmF0aW9uLiBUaGVyZWZvcmUsIEkgYmV0dGVyIHRha2UgYSBsb29rIGF0IGBhdGgxMmtfd21pX29wX3J4YC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBhY3Rpb24gd2lsbCBiZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaW50ZWdyYXRlcyB3aXRoIHRoZSBoYXJkd2FyZSB0byBnZXQgdGhlc2UgVFBDIHN0YXRzLCBhbmQgaG93IGl0IHRoZW4sIHByZXN1bWFibHksIHVzZXMgdGhlbSBmb3IgdHJhbnNtaXQgcG93ZXIgY29udHJvbCBvciBvdGhlciBvcHRpbWl6YXRpb25zLiBUaW1lIHRvIGRpdmUgaW50byB0aGF0IGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfd21pX29wX3J4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTAyNDk9YXRoMTJrX3dtaV9yc3NpX2RibV9jb252ZXJzaW9uX3BhcmFtc19pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDI5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTAyOTE6c3RhdGljIHZvaWQgYXRoMTJrX3dtaV9vcF9yeChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDI5Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDQ2MT1zdGF0aWMgaW50IGF0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDc0LVx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NvbXBsZXRlID0gYXRoMTJrX3dtaV9odGNfdHhfY29tcGxldGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjEwNDc1Olx0Y29ubl9yZXEuZXBfb3BzLmVwX3J4X2NvbXBsZXRlID0gYXRoMTJrX3dtaV9vcF9yeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA0NzYtXHRjb25uX3JlcS5lcF9vcHMuZXBfdHhfY3JlZGl0cyA9IGF0aDEya193bWlfb3BfZXBfdHhfY3JlZGl0cztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTM5MwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBhdGgxMmsgRHJpdmVyJiMzOTtzIEhUQyBTZXJ2aWNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgYXRoMTJrX3dtaV9vcF9yeGAuIEl0IHNlZW1zIHRvIGJlIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBpcyB1c2VmdWwgdG8ga25vdyByaWdodCBvZmYgdGhlIGJhdC4gVGhlIGNydWNpYWwgcG9pbnQgaGVyZSBpcyB0aGF0IGl0JiMzOTtzIHJlZ2lzdGVyZWQgYXMgYGVwX3J4X2NvbXBsZXRlYCB3aXRoaW4gYGF0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2VgLiBUaGF0IHRlbGxzIG1lICpleGFjdGx5KiB3aGVyZSBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGZyb20gYW4gYXJjaGl0ZWN0dXJhbCBzdGFuZHBvaW50LCBpcyB0byB0aG9yb3VnaGx5IGV4YW1pbmUgYGF0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2VgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbiBmbG93LiBXaGF0IHNlcnZpY2VzIGlzIGl0IHJlc3BvbnNpYmxlIGZvciwgYW5kIGhvdyBkb2VzIGl0IHJlZ2lzdGVyIGFuZCB1dGlsaXplIHRoaXMgYGVwX3J4X2NvbXBsZXRlYCBjYWxsYmFjaz8gSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCBmaWd1cmUgb3V0IGl0cyByb2xlIGluIGhhbmRsaW5nIGluY29taW5nIGRhdGEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDI5MT1zdGF0aWMgdm9pZCBhdGgxMmtfd21pX29wX3J4KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDQ2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTA0NjE6c3RhdGljIGludCBhdGgxMmtfY29ubmVjdF9wZGV2X2h0Y19zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDYyLVx0XHRcdFx0XHQgICB1MzIgcGRldl9pZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDY4OD1pbnQgYXRoMTJrX3dtaV9jb25uZWN0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDY5Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHdtaV9lcF9jb3VudDsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjEwNjk4Olx0XHRhdGgxMmtfY29ubmVjdF9wZGV2X2h0Y19zZXJ2aWNlKGFiLCBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA2OTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDMzCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgYXRoMTJrX3dtaV9jb25uZWN0YCoqCgpPa2F5LCBzbyBgYXRoMTJrX3dtaV9jb25uZWN0YCBpc24mIzM5O3Qgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IGFuZCBob3cgaXQmIzM5O3MgdXNlZC4gTGV0JiMzOTtzIGdldCByaWdodCBpbnRvIGV4YW1pbmluZyB0aGUgY29kZSBmb3IgYGF0aDEya193bWlfY29ubmVjdGAgaXRzZWxmLiBXaGF0JiMzOTtzIHRoZSBpbXBsZW1lbnRhdGlvbj8gV2hhdCBhcmUgdGhlIGNhbGxpbmcgY29udGV4dHM/IElzIHRoaXMgYSBkcml2ZXIgZnVuY3Rpb24sIG9yIHNvbWV0aGluZyBleHBvc2VkIHRvIGFub3RoZXIgcGFydCBvZiB0aGUgc3lzdGVtPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24mIzM5O3Mgc2NvcGUsIGlucHV0cywgb3V0cHV0cywgYW5kLCBtb3N0IGltcG9ydGFudGx5LCB3aHkgaXQgaXNuJiMzOTt0IGRlZmluZWQgd2l0aCB0aGUgYHN0YXRpY2Aga2V5d29yZC4gVGhpcyBsYWNrIG9mIHN0YXRpYyBkZXNpZ25hdGlvbiBzdWdnZXN0cyBpdCBtYXkgYmUgdXNlZCBvdXRzaWRlIHRoZSBjdXJyZW50IG1vZHVsZSwgd2hpY2ggY2FycmllcyBpbXBvcnRhbnQgaW1wbGljYXRpb25zIGZvciBkZXBlbmRlbmNpZXMgYW5kIG92ZXJhbGwgc3lzdGVtIGRlc2lnbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIHRlbGxzIHVzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfd21pX2Nvbm5lY3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9ODYyPXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy04OTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzo4OTg6XHRyZXQgPSBhdGgxMmtfd21pX2Nvbm5lY3QoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODk5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTA2NTI9aW50IGF0aDEya193bWlfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2Uoc3RydWN0IGF0aDEyayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDY4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTA2ODg6aW50IGF0aDEya193bWlfY29ubmVjdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDY4OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaD02NTUzPWludCBhdGgxMmtfd21pX3dhaXRfZm9yX3NlcnZpY2VfcmVhZHkoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjY1NTQ6aW50IGF0aDEya193bWlfY29ubmVjdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtNjU1NS1pbnQgYXRoMTJrX3dtaV9wZGV2X2F0dGFjaChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDcxOAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIGF0aDEyayBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgYXRoMTJrYCBkcml2ZXIgYW5kIEkgc2VlIGBhdGgxMmtfd21pX2Nvbm5lY3RgIGJlaW5nIGNhbGxlZCBmcm9tIGBhdGgxMmtfY29yZV9zdGFydGAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIHVzdWFsbHkgdGhlIFdNSSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkIGZhaXJseSBlYXJseSBpbiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIE1ha2VzIHNlbnNlIOKAkyBuZWVkIHRoYXQgY29ubmVjdGlvbiB0byB0YWxrIHRvIHRoZSBoYXJkd2FyZS4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBhbmQgY29udGV4dCBhIGJpdCBiZXR0ZXIuIE15IGd1dCB0ZWxscyBtZSBgYXRoMTJrX2NvcmVfc3RhcnRgIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHdoZW4gYW5kIHdoeSB0aGlzIGNvbm5lY3Rpb24gaGFwcGVucy4gVGltZSB0byBqdW1wIG92ZXIgdG8gdGhhdCBmdW5jdGlvbiBkZWZpbml0aW9uIGFuZCBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcganVzdCBiZWZvcmUgdGhlIGNhbGwgdG8gYGF0aDEya193bWlfY29ubmVjdGAuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGhhcmR3YXJlIHNldHVwLCBhbnkgbmVjZXNzYXJ5IHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBwcm9iYWJseSBzb21lIGVzc2VudGlhbCBjaGVja3MgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcmIzM5O3MgcmVhZHkgdG8gZ28gYmVmb3JlIHdlIHRyeSB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgZmlybXdhcmUgdmlhIFdNSS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zIG9yIHJhY2UgY29uZGl0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IGhlcmUuIExldCYjMzk7cyBzZWUgd2hhdCBgYXRoMTJrX2NvcmVfc3RhcnRgIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya19jb3JlX3N0YXJ0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTg1Nj1zdGF0aWMgdm9pZCBhdGgxMmtfY29yZV9wZGV2X2Rlc3Ryb3koc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy04NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzo4NjI6c3RhdGljIGludCBhdGgxMmtfY29yZV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODYzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0xMTMyPXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnQoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTE4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjExOTA6c3RhdGljIGludCBhdGgxMmtfY29yZV9zdGFydF9maXJtd2FyZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTE5MS1cdFx0XHRcdCAgICAgIGVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGUgbW9kZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0xMjg4PWludCBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHkoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTI5MzpcdHJldCA9IGF0aDEya19jb3JlX3N0YXJ0X2Zpcm13YXJlKGFiLCBhYi1cdTAwM2Vmd19tb2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTEyOTQtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTMxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEzMTQ6XHRyZXQgPSBhdGgxMmtfY29yZV9zdGFydChhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzE1LVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU3OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBgYXRoMTJrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YCB0cmlnZ2VycyBgYXRoMTJrX2NvcmVfc3RhcnRgLiBUaGlzIHNpZ25hbHMgdGhhdCB0aGUgZmlybXdhcmUgaGFzIGZpbmlzaGVkIGluaXRpYWxpemluZywgd2hpY2ggcHV0cyBtZSBvbiB0aGUgcmlnaHQgdHJhY2suIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIGBhdGgxMmtfd21pX29wX3J4YCBpcyByZWFjaGFibGUgYmVjYXVzZSBpdCBpcyB0aGUgcmVjZWl2aW5nIFdNSSBldmVudHMgY2FsbGJhY2suIFNpbmNlIHN5emthbGxlciBpcyBhYmxlIHRvIGluamVjdCBXTUkgZXZlbnRzIOKAkyBwcmVzdW1hYmx5IHRocm91Z2ggc29tZSBlbXVsYXRpb24gb2YgdGhlIFBDSSBvciBIVEMgbGF5ZXJzIOKAkyBpdCYjMzk7cyBkZWZpbml0ZWx5IGZlYXNpYmxlIHRvIHJlYWNoIGBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzYCBpbmRpcmVjdGx5LgoKVGhlIHBhdGNoIGl0c2VsZiBkZWFscyB3aXRoIHJlbW92aW5nIGEgYHNrYi0mZ3Q7ZGF0YWAgY2hlY2ssIHdoaWNoIGNvbnN0aXR1dGVzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24uIFRoZSBmdW5jdGlvbiBgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0c2AgaXMgc3RhdGljLCB3aGljaCBpcyBhIGtleSBwb2ludCB0byBub3RlLiBTbyBteSBtYWluIHF1ZXN0aW9uIGlzLCBnaXZlbiB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCB0aGUgc3RhdGljIG5hdHVyZSBvZiB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uLCB3aGF0IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGNvdWxkIGJlIHN1Y2Nlc3NmdWxseSBmdXp6ZWQgdG8gdHJpZ2dlciB0aGUgbW9kaWZpZWQgYmVoYXZpb3I/CgpJdCBzZWVtcyBsaWtlIGBhdGgxMmtfd21pX29wX3J4YCBpcyBhbHNvIHN0YXRpYywgc28gSSBjYW4mIzM5O3QgZGlyZWN0bHkgdGFyZ2V0IGl0LiBgYXRoMTJrX2Nvbm5lY3RfcGRldl9odGNfc2VydmljZWAgaXMgYWxzbyBzdGF0aWMuIGBhdGgxMmtfd21pX2Nvbm5lY3RgIHNlZW1zIG5vbi1zdGF0aWMsIGJ1dCBpdCBtb3N0bHkgZm9jdXNlcyBvbiByZWdpc3RlcmluZyB0aGUgY2FsbGJhY2sgZm9yIGluY29taW5nIGV2ZW50cy4gVGhlIHJlYWwgZW50cnkgcG9pbnQgZm9yIHRoZSBldmVudHMsIHRoZSBvbmUgdGhhdOKAmXMgYWN0dWFsbHkgY2FsbGVkIGJ5IHRoZSBIVEMgbGF5ZXIsIGlzIGBhdGgxMmtfd21pX29wX3J4YC4gSXQgc2VlbXMgbGlrZSB0aGUgYmVzdCB0aGluZyB0byBkbyBpcyB0byBsb29rIGF0IHdoZXJlIGBlcF9yeF9jb21wbGV0ZWAgaXMgY2FsbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlcF9yeF9jb21wbGV0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmM9MjA9aW50IGF0aDEya19kcF9odHRfY29ubmVjdChzdHJ1Y3QgYXRoMTJrX2RwICpkcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5jLTI2LVx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NvbXBsZXRlID0gYXRoMTJrX2RwX2h0dF9odGNfdHhfY29tcGxldGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5jOjI3Olx0Y29ubl9yZXEuZXBfb3BzLmVwX3J4X2NvbXBsZXRlID0gYXRoMTJrX2RwX2h0dF9odGNfdDJoX21zZ19oYW5kbGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuYy0yOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jPTI1Mj12b2lkIGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy0zNjgtXHRcdCAgIGVpZCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM6MzY5Olx0ZXAtXHUwMDNlZXBfb3BzLmVwX3J4X2NvbXBsZXRlKGFiLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy0zNzAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYz03NTE9aW50IGF0aDEya19odGNfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtNzgxLVx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NvbXBsZXRlID0gYXRoMTJrX2h0Y19jb250cm9sX3R4X2NvbXBsZXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYzo3ODI6XHRjb25uX3JlcS5lcF9vcHMuZXBfcnhfY29tcGxldGUgPSBhdGgxMmtfaHRjX2NvbnRyb2xfcnhfY29tcGxldGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jLTc4My1cdGNvbm5fcmVxLm1heF9zZW5kX3F1ZXVlX2RlcHRoID0gQVRIMTJLX05VTV9DT05UUk9MX1RYX0JVRkZFUlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuaD0yMzM9c3RydWN0IGF0aDEya19odGNfZXBfb3BzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmgtMjM0LVx0dm9pZCAoKmVwX3R4X2NvbXBsZXRlKShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmg6MjM1Olx0dm9pZCAoKmVwX3J4X2NvbXBsZXRlKShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmgtMjM2LVx0dm9pZCAoKmVwX3R4X2NyZWRpdHMpKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTA0NjE9c3RhdGljIGludCBhdGgxMmtfY29ubmVjdF9wZGV2X2h0Y19zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDQ3NC1cdGNvbm5fcmVxLmVwX29wcy5lcF90eF9jb21wbGV0ZSA9IGF0aDEya193bWlfaHRjX3R4X2NvbXBsZXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDQ3NTpcdGNvbm5fcmVxLmVwX29wcy5lcF9yeF9jb21wbGV0ZSA9IGF0aDEya193bWlfb3Bfcng7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDc2LVx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NyZWRpdHMgPSBhdGgxMmtfd21pX29wX2VwX3R4X2NyZWRpdHM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA2OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTk1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOgoKKipEaXZpbmcgaW50byB0aGUgYGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJIHNlZSBgYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXJgIGNhbGxzIGBlcC0mZ3Q7ZXBfb3BzLmVwX3J4X2NvbXBsZXRlKGFiLCBza2IpYC4gVGhhdCYjMzk7cyB0aGUga2V5LiBUaGlzIGlzIHdoZXJlIHRoZSByZWNlaXZlZCBkYXRhIGlzIGJlaW5nIGhhbmRsZWQgYWZ0ZXIgdGhlIEhUQyBsYXllciBnZXRzIGludm9sdmVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHRyYWNlIHRoaXMgYW5kIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gYGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyYC4gSSB3YW50IHRvIHNlZSB0aGUgZXhlY3V0aW9uIGZsb3c6IHNwZWNpZmljYWxseSwgd2hhdCBgZXAtJmd0O2VwX29wcy5lcF9yeF9jb21wbGV0ZWAgKmlzKiBpbiB0aGlzIGNvbnRleHQsIHRoZSBhcmd1bWVudHMgaW52b2x2ZWQsIGFuZCBob3cgdGhhdCB1bHRpbWF0ZWx5IHJlbGF0ZXMgdG8gZGF0YSBwcm9jZXNzaW5nIGluIHRoZSB1cHBlciBsYXllcnMuIEkga25vdyB0aGVyZSYjMzk7cyBhIGxvdCBwYWNrZWQgaW4gdGhlcmUgc28gSSBuZWVkIHRvIHN0ZXAgdGhyb3VnaCB0aGlzIHZlcnkgY2FyZWZ1bGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM9MjQ3PXN0YXRpYyB2b2lkIGF0aDEya19odGNfd2FrZXVwX2Zyb21fc3VzcGVuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtMjUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYzoyNTI6dm9pZCBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy0yNTMtXHRcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtMzc4LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM6Mzc5OkVYUE9SVF9TWU1CT0woYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy0zODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuaD0zMTI9c3RydWN0IHNrX2J1ZmYgKmF0aDEya19odGNfYWxsb2Nfc2tiKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIGludCBzaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmg6MzEzOnZvaWQgYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmgtMzE0LVx0XHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jPTI2Mz1jb25zdCBzdHJ1Y3QgY2VfYXR0ciBhdGgxMmtfd2lmaTdfaG9zdF9jZV9jb25maWdfcWNuOTI3NFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yNzctXHRcdC5kZXN0X25lbnRyaWVzID0gNTEyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjI3ODpcdFx0LnJlY3ZfY2IgPSBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yNzktXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yODYtXHRcdC5kZXN0X25lbnRyaWVzID0gMTI4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjI4NzpcdFx0LnJlY3ZfY2IgPSBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yODgtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0zODQtXHRcdC5kZXN0X25lbnRyaWVzID0gNTEyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjM4NTpcdFx0LnJlY3ZfY2IgPSBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0zODYtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYz01NzQ9Y29uc3Qgc3RydWN0IGNlX2F0dHIgYXRoMTJrX3dpZmk3X2hvc3RfY2VfY29uZmlnX3djbjc4NTBbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmMtNTg4LVx0XHQuZGVzdF9uZW50cmllcyA9IDUxMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYzo1ODk6XHRcdC5yZWN2X2NiID0gYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmMtNTkwLVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmMtNTk3LVx0XHQuZGVzdF9uZW50cmllcyA9IDY0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjU5ODpcdFx0LnJlY3ZfY2IgPSBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy01OTktXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYz04NzQ9Y29uc3Qgc3RydWN0IGNlX2F0dHIgYXRoMTJrX3dpZmk3X2hvc3RfY2VfY29uZmlnX2lwcTUzMzJbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmMtODg4LVx0XHQuZGVzdF9uZW50cmllcyA9IDUxMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYzo4ODk6XHRcdC5yZWN2X2NiID0gYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmMtODkwLVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmMtODk3LVx0XHQuZGVzdF9uZW50cmllcyA9IDEyOCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYzo4OTg6XHRcdC5yZWN2X2NiID0gYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmMtODk5LVx0fSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MzEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIFBhY2tldCBSZWNlcHRpb24gUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBwaW5wb2ludGVkIGBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcmAgYXMgdGhlIGNydWNpYWwgZW50cnkgcG9pbnQgaGVyZS4gSXQmIzM5O3MgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGV4cG9ydGVkIGFuZCwgaW1wb3J0YW50bHksIGl04oCZcyBiZWluZyB1c2VkIGFzIGByZWN2X2NiYCB3aXRoaW4gdGhlIENvcHkgRW5naW5lIChDRSkgY29uZmlndXJhdGlvbi4gVGhpbmtpbmcgYWJvdXQgaXQsIHRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZSDigJMgaXTigJlzIHRoZSBnYXRld2F5IGZvciByZWNlaXZpbmcgcGFja2V0cyBmcm9tIHRoZSBmaXJtd2FyZSwgc3BlY2lmaWNhbGx5IHRocm91Z2ggdGhlIENvcHkgRW5naW5lLCB3aGljaCBpcyB0aGlzIERNQSBlbmdpbmUgb3BlcmF0aW5nIG92ZXIgdGhlIFBDSS9BSEIgaW50ZXJmYWNlLiBSaWdodCwgc28gdGhpcyBgYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXJgIGlzIGRlZmluaXRlbHkgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbiBmb3IgdGhpcyBkZWVwIGRpdmUuCgpOb3csIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciB2aXRhbCBjb25maWdzIHRoYXQgYXJlIHBsYXlpbmcgYSByb2xlIGluIHRoaXMgYXJlYS4gRnJvbSBtZW1vcnksIGBBVEgxMktgIGlzIHRoZSBwcmltYXJ5IG9uZSBmb3IgdGhpcyBkcml2ZXIuIEkgd29uZGVyLCBhcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gWWVzLCBJJiMzOTtsbCBuZWVkIGBNQUM4MDIxMWAgYXMgd2VsbC4gSnVzdCB0byBiZSBzdXJlLCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ2AgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBpbXBvcnRhbnQgY29uZmlncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgQVRIMTJLXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUEgXHUwMDI2XHUwMDI2IFBDSVxuICAgNTpcdFx0c2VsZWN0IFFDT01fUU1JX0hFTFBFUlNcbiAgIDY6XHRcdHNlbGVjdCBNSElfQlVTXG4gICA3Olx0XHRzZWxlY3QgUVJUUlxuICAgODpcdFx0c2VsZWN0IFFSVFJfTUhJXG4gICA5Olx0XHRzZWxlY3QgUENJX1BXUkNUUkxfUFdSU0VRIGlmIEhBVkVfUFdSQ1RSTFxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgUXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgKElFRUVcbiAgMTI6XHRcdCAgODAyLjExYmUpIGZhbWlseSBvZiBjaGlwc2V0cywgZm9yIGV4YW1wbGUgV0NONzg1MCBhbmRcbiAgMTM6XHRcdCAgUUNOOTI3NC5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBhdGgxMmsuXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIEFUSDEyS19BSEJcbiAgMTg6XHRcdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgUkVNT1RFUFJPQ1xuICAyMDpcdFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxuICAyMTpcdFx0c2VsZWN0IFFDT01fUEFTXG4gIDIyOlx0XHRoZWxwXG4gIDIzOlx0XHQgIEVuYWJsZSBzdXBwb3J0IGZvciBBdGgxMmsgQUhCIGJ1cyBjaGlwc2V0cywgZXhhbXBsZSBJUFE1MzMyLlxuICAyNDpcdFxuICAyNTpcdGNvbmZpZyBBVEgxMktfREVCVUdcbiAgMjY6XHRcdGJvb2wgXCYjMzQ7YXRoMTJrIGRlYnVnZ2luZ1wmIzM0O1xuICAyNzpcdFx0ZGVwZW5kcyBvbiBBVEgxMktcbiAgMjg6XHRcdGhlbHBcbiAgMjk6XHRcdCAgRW5hYmxlIGRlYnVnIHN1cHBvcnQsIGZvciBleGFtcGxlIGRlYnVnIG1lc3NhZ2VzIHdoaWNoIG11c3RcbiAgMzA6XHRcdCAgYmUgZW5hYmxlZCBzZXBhcmF0ZWx5IHVzaW5nIHRoZSBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIuXG4gIDMxOlx0XG4gIDMyOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxuICAzMzpcdFx0ICB5b3Ugd2FudCBvcHRpbWFsIHBlcmZvcm1hbmNlIGNob29zZSBOLlxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBBVEgxMktfREVCVUdGU1xuICAzNjpcdFx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4gIDM3Olx0XHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuICAzODpcdFx0aGVscFxuICAzOTpcdFx0ICBFbmFibGUgYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxuICA0MDpcdFxuICA0MTpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcbiAgNDI6XHRcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgQVRIMTJLX1RSQUNJTkdcbiAgNDU6XHRcdGJvb2wgXCYjMzQ7YXRoMTJrIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuICA0NjpcdFx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IEVWRU5UX1RSQUNJTkdcbiAgNDc6XHRcdGhlbHBcbiAgNDg6XHRcdCAgRW5hYmxlIGF0aDEyayB0cmFjaW5nIGluZnJhc3RydWN0dXJlLlxuICA0OTpcdFxuICA1MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDY6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM1NzYKCQkJCQkJCW91dHB1dDogOTEKCQkJCQkJCXRob3VnaHRzOiAxMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBhdGgxMmsgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgYGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNgIGluIHRoZSBhdGgxMmsgZHJpdmVyLCBzcGVjaWZpY2FsbHkgcmVtb3ZpbmcgYSBgc2tiLSZndDtkYXRhYCBjaGVjay4gVGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCB2aWEgYGF0aDEya193bWlfb3BfcnhgIHdoZW4gaXQgcmVjZWl2ZXMgYSBgV01JX0hBTFBIWV9TVEFUU19DVFJMX1BBVEhfRVZFTlRJRGAuIGBhdGgxMmtfd21pX29wX3J4YCBpdHNlbGYgaXMgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyIGFzIGEgcGFydCBvZiB0aGUgYGF0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2VgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGF0aDEyayBXaS1GaSBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIChvciBwb3RlbnRpYWxseSBBSEIpIGRyaXZlci4KClRoZSBpbnN0cnVjdGlvbnMgSSYjMzk7bSB3b3JraW5nIHdpdGggYXJlIHByZXR0eSBjbGVhci4gVGhleSBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IHRvdWNoZXM6ICAmIzM0Oy4uLiBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7CgpNeSBpbml0aWFsIHRob3VnaHQgd2FzLCAmIzM0O1dhaXQsIGlzIGF0aDEyayBlbXVsYXRlZCBsaWtlIG1hYzgwMjExX2h3c2ltPyYjMzQ7IEJ1dCBubywgYXRoMTJrIGlzIGEgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIChXQ043ODUwLCBRQ045Mjc0LCBJUFE1MzMyKS4gIEl0JiMzOTtzIHZlbmRvci1zcGVjaWZpYyBhbmQgcmVsaWVzIG9uIFBDSSBvciBBSEIuICBUaGUgaW5zdHJ1Y3Rpb25zIGxhdGVyIHJlaXRlcmF0ZSB0aGlzIHBvaW50LCBtZW50aW9uaW5nIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4KClNvLCB0aGUgcXVlc3Rpb24gaXM6IGNhbiB3ZSByZWFjaCB0aGlzIGNvZGUgcGF0aCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVT8gR2l2ZW4gdGhhdCBhdGgxMmsgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBXaS1GaSBkcml2ZXIsIGFuZCB0aGVyZSYjMzk7cyBubyBzdGFuZGFyZCBRRU1VIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSwgdGhlIGFuc3dlciBpcyBuby4gIEl0JiMzOTtzIG5vdCBtYWM4MDIxMV9od3NpbTsgaXQmIzM5O3MgdGhlIGFjdHVhbCBoYXJkd2FyZSBkcml2ZXIuICBXZSYjMzk7cmUgbm90IHRhbGtpbmcgYWJvdXQgUENJIGZ1enppbmcgb3IgYW55dGhpbmcgbGlrZSB0aGF0LgoKSSBjaGVja2VkIGlmIHN5emthbGxlciBpcyBmdXp6aW5nIGF0aDEyayBkaXJlY3RseS4gSSBzYXcgdGhhdCBzeXprYWxsZXIgaGFzIGBzeXpfODAyMTFfLi4uYCB3aGljaCB1c2UgYG1hYzgwMjExX2h3c2ltYCwgYnV0IGl0IGlzIG5vdCBmdXp6aW5nIGF0aDEyay4KClRoZXJlZm9yZSwgYmVjYXVzZSBhdGgxMmsgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIChRdWFsY29tbSkgdGhhdCBkZXBlbmRzIG9uIHBoeXNpY2FsIFBDSWUvQUhCIGhhcmR3YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgSSBtdXN0IHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQmIzM5O3MgYSBoYXJkd2FyZS1kZXBlbmRlbnQgY29kZSBwYXRoIHRoYXQgaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBiYXNlZCBvbiB0aGUgZ2l2ZW4gaW5zdHJ1Y3Rpb25zLiBUaGVyZSBpcyBubyBlbXVsYXRpb24gb2YgYXRoMTJrLgoKT2theSwgc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBhbmQgbW92aW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBvciBBSEIgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBvciBBSEIgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTowNC4wNDY3NDkxMDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDMyNzcwMjM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIG9yIEFIQiBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDY6MTk6MDQuMDQ2NzU0MDc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDMwNjk5MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MmY1ODk5Zjc4YjU5NWYwMmQ1MjJlZDRjMzBjYjg1MGEyNTI2NTZjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDMwIDA2OjE5OjAzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXFxuaW5kZXggMmI3MDdmZmMxYTIwZi4uY2QzMDQwYjgzODhjMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xcbkBAIC05OTczLDExICs5OTczLDYgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0cyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbiBcXHR1MzIgZXZlbnRfY291bnQ7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRpZiAoIXNrYi1cXHUwMDNlZGF0YSkge1xcbi1cXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcIk5vIGRhdGEgcHJlc2VudCBpbiB0cGMgc3RhdHMgZXZlbnRcXFxcblxcXCIpO1xcbi1cXHRcXHRyZXR1cm47XFxuLVxcdH1cXG4tXFxuIFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIChzaXplb2YoKmZpeGVkX3BhcmFtKSArIFRMVl9IRFJfU0laRSkpIHtcXG4gXFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJUUEMgc3RhdHMgZXZlbnQgc2l6ZSBpbnZhbGlkXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTowNC4zOTA0NDYzMzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4OTk4NDAwMDEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIG9yIEFIQiBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzJmNTg5OWY3OGI1OTVmMDJkNTIyZWQ0YzMwY2I4NTBhMjUyNjU2Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDMwIDA2OjE5OjAzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbmluZGV4IDJiNzA3ZmZjMWEyMGYuLmNkMzA0MGI4Mzg4YzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG5AQCAtOTk3MywxMSArOTk3Myw2IEBAIHN0YXRpYyB2b2lkIGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHMoc3RydWN0IGF0aDEya19iYXNlICphYixcbiBcdHUzMiBldmVudF9jb3VudDtcbiBcdGludCByZXQ7XG4gXG4tXHRpZiAoIXNrYi1cdTAwM2VkYXRhKSB7XG4tXHRcdGF0aDEya193YXJuKGFiLCBcIk5vIGRhdGEgcHJlc2VudCBpbiB0cGMgc3RhdHMgZXZlbnRcXG5cIik7XG4tXHRcdHJldHVybjtcbi1cdH1cbi1cbiBcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAoc2l6ZW9mKCpmaXhlZF9wYXJhbSkgKyBUTFZfSERSX1NJWkUpKSB7XG4gXHRcdGF0aDEya193YXJuKGFiLCBcIlRQQyBzdGF0cyBldmVudCBzaXplIGludmFsaWRcXG5cIik7XG4gXHRcdHJldHVybjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjE5OjA0LjM5MDQ0NzczN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTY1NTUzOTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emFiaWxpdHkgb2YgYW4gYXRoMTJrIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHJlbW92ZXMgYSBgIXNrYi1cdTAwM2VkYXRhYCBjaGVjayBpbiBgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0c2AuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gYXNzZXNzIGlmIGBhdGgxMmtgIGlzIGV2ZW4gZnV6emFibGUuIEl0J3MgYSBRdWFsY29tbSBXaS1GaSA3IGRyaXZlciwgdXNpbmcgUENJIG9yIEFIQi4gVGhlIGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCB0aGVzZSBXaS1GaSBkcml2ZXJzIG9mdGVuIG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUsIHVubGVzcyB0aGV5J3JlIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCBgYXRoMTJrYCBpcyBhIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciwgc28gdGhhdCBwb3NlcyBhIGNoYWxsZW5nZS5cblxuSG93ZXZlciwgSSByZW1lbWJlciBzeXprYWxsZXIuIERvZXMgaXQgaGF2ZSBhbnkgdHJpY2tzIHVwIGl0cyBzbGVldmU/IFllcyEgU3l6a2FsbGVyICpkb2VzKiBmdXp6IFdpLUZpIGRyaXZlcnMgdmlhIGBtYWM4MDIxMV9od3NpbWAgaW4gc29tZSBjYXNlcy4gSXQgKmNhbiogZnV6eiBQQ0kgZGV2aWNlcyBpZiB0aGV5J3JlIGVtdWxhdGVkIG9yIHVzaW5nIHZoY2kgb3Igc2ltaWxhciB0ZWNobmlxdWVzLi4uYnV0IHdhaXQsIGBhdGgxMmtgIGlzIGEgaGFyZHdhcmUgZHJpdmVyLi4ucmlnaHQ/IFRoZW4gSSB0aGluazogU3l6a2FsbGVyICpkb2VzKiBhY3R1YWxseSBmdXp6IGF0aDlrLCBhdGgxMGssIGF0aDExaywgYW5kIGF0aDEyayB1c2luZyBQQ0kgZnV6emluZyAoZS5nLiBgc3l6X3BjaV8uLi5gKS5cblxuVGhlIHByb21wdCBpcyBtYWtpbmcgbWUgdGhpbmsgYWJvdXQgc3BlY2lmaWMgbGltaXRhdGlvbnMsIGl0IHJlYWRzLCBcIkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIiBJcyBhdGgxMmsgb25lIG9mICp0aG9zZSo/XG5cbldhaXQsIGhvbGQgb24sIHRoZSBwYXRjaCBhdXRob3IgaXMgYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYC4gU3l6a2FsbGVyIGlzIGZpbmRpbmcgYnVncyBoZXJlLCBzbyBjbGVhcmx5IGl0J3MgZnV6emluZyAqc29tZXRoaW5nKi4gSSBuZWVkIHRvIGNsYXJpZnk6IGRvZXMgaXQgZnV6eiBgYXRoMTJrYCB2aWEgYG1hYzgwMjExYCBvciBQQ0k/IFRoZSBwcm9tcHQgYWxzbyBzdGF0ZXMsIFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXCIgYW5kIHRoZW4gdGhlIHNhbWUgUENJZSBsaW1pdGF0aW9uLlxuXG5TbywgaXMgYGF0aDEya2AgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXI/IFllcywgaXQncyBRdWFsY29tbSBXaS1GaSwgd2hpY2ggc291bmRzIGxpa2UgaXQgaXMsIGJ1dCBpcyBpdCAqZnV6emVkKj8gSSBrbm93IHRoZXJlIGFyZSBzeXprYWxsZXIgcHNldWRvLXN5c2NhbGxzIGZvciBgbWFjODAyMTFgIChgc3l6XzgwMjExXy4uLmApLCBidXQgdGhhdCdzIGEgZGlmZmVyZW50IGFwcHJvYWNoLiBTeXprYWxsZXIgQ0FOIGZ1enogUENJIGRyaXZlcnMgdXNpbmcgUENJIGZ1enppbmcsIHRob3VnaC4gSSBuZWVkIHRvIGtub3cgZm9yIHN1cmUgaWYgYGF0aDEya2AgaXMgYmVpbmcgZnV6emVkLiBMZXQncyBkbyBhIHF1aWNrIHNlYXJjaCBmb3IgYGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNgIHdpdGhpbiB0aGUgc3l6a2FsbGVyIGNvbnRleHQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBkZWZpbml0aXZlIGFuc3dlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEyMiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjE5OjE0LjU1NjAwNDExWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTUwMzcwMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTk5NDg9dm9pZCBhdGgxMmtfd21pX2ZyZWVfdHBjX3N0YXRzX21lbShzdHJ1Y3QgYXRoMTJrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtOTk2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjk5NjQ6c3RhdGljIHZvaWQgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0cyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtOTk2NS1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTAwNjEtI2Vsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjEwMDYyOnN0YXRpYyB2b2lkIGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHMoc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwMDYzLVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDI5MT1zdGF0aWMgdm9pZCBhdGgxMmtfd21pX29wX3J4KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDE5LVxcdGNhc2UgV01JX0hBTFBIWV9TVEFUU19DVFJMX1BBVEhfRVZFTlRJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjEwNDIwOlxcdFxcdGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHMoYWIsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDQyMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDY6MTk6MTYuMTExMDQ1NDIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg2Mzg3NzEwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGF0aDEyayoqXG5cbk9rYXksIHNvIGBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzYCBnZXRzIGNhbGxlZCBmcm9tIGBhdGgxMmtfd21pX29wX3J4YC4gQSBrZXkgcXVlc3Rpb24gYXJpc2VzOiBpcyB0aGUgYXRoMTJrIGRyaXZlciwgc3BlY2lmaWNhbGx5LCBnZXR0aW5nIGZ1enplZCBieSBzeXprYWxsZXI/IE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCB0aGUgUENJIGZ1enplciBpbiBzeXprYWxsZXIgbWlnaHQgYmUgYXQgcGxheSwgaW5qZWN0aW5nIFBDSSBwYWNrZXRzLiBDb3VsZCBpdCBiZSB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWA/IE5vLCB0aGF0J3MgYSBzb2Z0d2FyZSBzaW11bGF0b3IsIHdoaWxlIGF0aDEyayBpcyBhIGhhcmR3YXJlIGRyaXZlci4gVGhhdCdzIGEgZGVhZCBlbmQuIEFoLCBidXQgd2FpdCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgV2ktRmkgZnV6emVyLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIElzIGF0aDEyayBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciB0aGF0IG5lZWRzIHBoeXNpY2FsIGhhcmR3YXJlIHRvIHJ1bj8gWWVzLCBhdGgxMmsgaXMgdGhhdCBRdWFsY29tbSBXaS1GaSA3IGRyaXZlci4gU28sIGRvZXMgUUVNVSBvZmZlciBhbnkgZW11bGF0aW9uIGhlcmU/IE5vcGUsIFFFTVUgZG9lc24ndCBlbXVsYXRlIGF0aDEyay5cblxuU28sIHRoZSBxdWVzdGlvbiByZW1haW5zOiBkb2VzIHN5emthbGxlciBhY3R1YWxseSBmdXp6IHRoaXMgZHJpdmVyPyBHaXZlbiB0aGF0IGl0J3MgYSBQQ0llIGRyaXZlciwgdGhlIFBDSSBmdXp6ZXIgc2VlbXMgbGlrZSB0aGUgbW9zdCBsaWtlbHkgdmVjdG9yLiBTeXprYWxsZXIncyBQQ0kgZnV6emVyICpjYW4qIGZ1enogUENJIGRyaXZlcnMgYnkgZW11bGF0aW5nIFBDSSBkZXZpY2VzLiBUaGF0J3MgcHJvbWlzaW5nLlxuXG5UaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gc2VlIGlmIHN5emthbGxlciBoYXMgYW55IHNwZWNpZmljIGRldmljZSBkZXNjcmlwdGlvbnMgb3IgY29uZmlndXJhdGlvbnMgZm9yIGF0aDEyay4gVGhhdCB3b3VsZCBiZSB0aGUgYmVzdCB3YXkgdG8gdW5kZXJzdGFuZCBpZiBpdCdzIHRhcmdldGVkIG9yIGhvdyBpdCBpcyBiZWluZyB0YXJnZXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg2NiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOToyMS45NzQ5MjQzNDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQyNzc1NDMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzeXMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOToyMi4wNDkyMTA4MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2Mzc2NTc4MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb25zdHJhaW50cyBhbmQgRGV0ZXJtaW5pbmcgdGhlIEFwcHJvcHJpYXRlIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSBzZWUgdGhlIHByb2hpYml0aW9uIG9uIHVzaW5nIGBncmVwcGVyYCBmb3IgYHN5cy9gIGFuZCBhbnl0aGluZyB3aXRoIGBzeXpfYCwgd2hpY2ggbWFrZXMgc2Vuc2UgYmVjYXVzZSB0aG9zZSBhcmUgc3l6a2FsbGVyIHNwZWNpZmljcyBhbmQgbm90IGtlcm5lbCBjb2RlLiBJJ20gbG9va2luZyBmb3IgcmVsZXZhbnQga2VybmVsIGNvZGUuIFRoZSBwcm9tcHQgZGlyZWN0cyBtZSB0byB1c2UgYHt7LnRvb2xSZWFkRGVzY3JpcHRpb259fWAsIGJ1dCB0aGF0J3Mgbm90IGluIG15IGF2YWlsYWJsZSB0b29scy4gSSd2ZSBnb3QgYGdyZXBwZXJgLCBgY29kZXNlYXJjaC1kaXItaW5kZXhgLCBgcmVhZC1maWxlYCwgYW5kIGBzZXQtcmVzdWx0c2AuIFNvLCBJJ20gZWZmZWN0aXZlbHkgYmxvY2tlZCBmcm9tIGRpcmVjdGx5IHNlYXJjaGluZyB0aG9zZSBzeXprYWxsZXIgZGVzY3JpcHRpb25zLlxuXG5Ob3csIGxldCdzIHJlZm9jdXMuIFRoZSBwcm9ibGVtIHNwYWNlIGNlbnRlcnMgb24gdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgKFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVKSB0aGF0ICpyZXF1aXJlKiBwaHlzaWNhbCBoYXJkd2FyZS4gVGhlIGV4YW1wbGVzIGdpdmVuIGFyZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgLiBUaGUgY3JpdGljYWwgdGhpbmcgaXMgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyBgYXRoMTJrYCBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcj8gWWVzLCBpdCdzIGEgUXVhbGNvbW0gV2ktRmkgZHJpdmVyLiBPa2F5LCBidXQgYSBrZXkgdGVzdCBzdHJhdGVneSBmb3IgV2ktRmkgZHJpdmVycyBpcyB0eXBpY2FsbHkgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggSSBhc3N1bWUgaXMgc29mdHdhcmUgZW11bGF0aW9uIGZvciBXaS1GaS4gYGF0aDEya2AgaXMgYSByZWFsIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgc28sIHRoYXQncyBpbXBvcnRhbnQuXG5cbkFoLCB3YWl0LiBTeXprYWxsZXIgaGFzIFVTQiBhbmQgUENJIGZ1enplcnMuIFRoZSBQQ0kgZnV6emVyIGNhbiB0YXJnZXQgKmFueSogUENJIGRyaXZlciBiZWNhdXNlIGl0IGNyZWF0ZXMgYSB2aXJ0dWFsIFBDSSBkZXZpY2UuXG5cbkJhY2sgdG8gdGhlIHByb21wdDogaXMgYGF0aDEya2AgYSBTbWFydE5JQywgR1BVLCBvciBQQ0llIHN3aXRjaD8gQ2xlYXJseSwgbm8sIGl0IGlzIGEgV2ktRmkgZHJpdmVyLlxuXG5Pa2F5LCBkb2VzIHN5emthbGxlciBmdXp6IFdpLUZpIGRyaXZlcnMgKnVzaW5nKiB0aGUgUENJIGZ1enplcj8gTGV0J3MgY2hlY2sgaWYgYGF0aDEya2AgaXMsIGluIGZhY3QsIGltcGxlbWVudGVkIGFzIGEgUENJIGRyaXZlciBvciB1c2VzIGEgUENJIGludGVyZmFjZS4gVGhpcyBpcyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgc2VhcmNoIHdpdGggbXkgYXZhaWxhYmxlIHRvb2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDcwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjE5OjI5LjY4Njg3MDI3NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjM3MjcwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTgxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgX19tYXliZV91bnVzZWQgYXRoMTJrX3BjaV9wbV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODE4OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MTktXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGgxMmtfcGNpX2RyaXZlciAqZHJpdmVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0NTpcXHRyZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZlcihwY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0NzpFWFBPUlRfU1lNQk9MKGF0aDEya19wY2lfcmVnaXN0ZXJfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oPTE3Nj12b2lkIGF0aDEya19wY2lfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTc3OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE3OC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGF0aDEya19wY2lfZHJpdmVyICpkcml2ZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYz0xOTc9aW50IGF0aDEya193aWZpN19wY2lfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYzoyMDE6XFx0cmV0ID0gYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIoQVRIMTJLX0RFVklDRV9GQU1JTFlfV0lGSTcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDItXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZhdGgxMmtfd2lmaTdfcGNpX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjE5OjI5LjczMzI0NzcxNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNDAzMTkzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUENJIERyaXZlciBCdWcgUmVwb3J0ZWQgYnkgU3l6a2FsbGVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBkZWZpbml0ZWx5IHJlbGF0ZWQgdG8gYSBQQ0kgZHJpdmVyLCB0aGF0IG11Y2ggaXMgY2xlYXIuIFRoZSBzdXNwaWNpb3VzIHBhcnQgaXMgdGhhdCB0aGUgZml4IGlzIGluIGB3bWkuY2AuIFdhaXQgYSBzZWNvbmTigKZXTUnigKZ0aGF0J3MgdGhlIFdpcmVsZXNzIE1vZHVsZSBJbnRlcmZhY2UsIHRoZSBjb21tdW5pY2F0aW9uIHByb3RvY29sIGJldHdlZW4gdGhlIGhvc3Qgc3lzdGVtIGFuZCB0aGUgZmlybXdhcmUuIFRoYXQncyBub3QgdGhlIGZpcnN0IHBsYWNlIEknZCBsb29rIGZvciBhIFBDSSBkcml2ZXIgaXNzdWUsIHdoaWNoIGlzIGludGVyZXN0aW5nLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGlzIHJlbW92aW5nIHRoaXMgYGlmICghc2tiLVx1MDAzZWRhdGEpYCBjaGVjay4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBXZSdyZSB0YWxraW5nIGFib3V0IGEgcG90ZW50aWFsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggaXMgYWx3YXlzIGZ1bi4gVGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uLCBgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0c2AsIGlzIGNhbGxlZCBmcm9tIGBhdGgxMmtfd21pX29wX3J4YC4gSG1tLCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IGEgcmVjZWl2ZSBvcGVyYXRpb24gaW4gdGhlIGF0aDEyayBkcml2ZXIuIEkgd29uZGVyIGlmIHRoaXMgaXMgZXZlbiByZWFjaGFibGUgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudC5cblxuQnV0IHdhaXQgYSBtaW51dGUsIHRoZSBmYWN0IHRoYXQgc3l6a2FsbGVyIGZvdW5kIHRoaXMgYnVn4oCmIHRoYXQgbWVhbnMgaXQgKmNhbiogYmUgdHJpZ2dlcmVkLiBUaGUgcGF0Y2ggYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLCB3aGljaCwgb2YgY291cnNlLCBjb25maXJtcyB0aGF0IHRoaXMgd2FzIGFuIGF1dG9tYXRlZCBidWcgcmVwb3J0IGZyb20gc3l6a2FsbGVyLiBJZiBzeXprYWxsZXIgZm91bmQgaXQsIGl0IGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCBhbmQgdGhhdCdzIHRoZSBrZXkuXG5cbkFuZCB0aGVuIGl0IGhpdHMgbWUuIFN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCBkb2Vzbid0IGl0PyBPZiBjb3Vyc2UhIFRoYXQncyBob3cgaXQncyBnZXR0aW5nIHRvIHRoaXMgY29kZSBwYXRoLiBOb3cgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZXF1aXJlZCB0byByZXByb2R1Y2UgdGhpcyBidWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NzksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDY6MTk6MzQuOTczNTY5MDI1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjMxODk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTJLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMktcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxNzpjb25maWcgQVRIMTJLX0FIQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOC1cXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI1OmNvbmZpZyBBVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzU6Y29uZmlnIEFUSDEyS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIlF1YWxjb21tIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ0OmNvbmZpZyBBVEgxMktfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00NS1cXHRib29sIFxcXCJhdGgxMmsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1Mzpjb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDY6MTk6MzUuMDE1ODkwODU1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjUyNDA1NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgdGhlIGBBVEgxMktgIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gYEFUSDEyS2AuIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byBhbnl0aGluZyBlbHNlLCBpdCdzIGFsd2F5cyBzbWFydCB0byB1bmRlcnN0YW5kIHRoZSBmb3VuZGF0aW9uIOKAkyB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgbW9kdWxlICpyZWxpZXMqIG9uLCBhbmQgd2hhdCwgaW4gdHVybiwgKnJlbGllcyogb24gaXQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgZGVidWdnaW5nLCBmb3IgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgaW1wYWN0cyBvZiBjaGFuZ2VzLCBmb3Iga25vd2luZyB3aGVyZSB0byBsb29rIGlmIHNvbWV0aGluZyBicmVha3MsIGFuZCwgb2YgY291cnNlLCBmb3IgcG9ydGluZyBvciBtb2RpZnlpbmcgdGhlIGNvZGUuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgSSBoYXZlIGFsbCB0aGUgcHJlLXJlcXVpc2l0ZXMgaW5zdGFsbGVkIGFuZCBmdW5jdGlvbmluZyBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciB3aXRoIHRoZSBjb3JlIGV2YWx1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwNjgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTozOC4wODExMzM1ODhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgQVRIMTJLXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgIDU6XFx0XFx0c2VsZWN0IFFDT01fUU1JX0hFTFBFUlNcXG4gICA2OlxcdFxcdHNlbGVjdCBNSElfQlVTXFxuICAgNzpcXHRcXHRzZWxlY3QgUVJUUlxcbiAgIDg6XFx0XFx0c2VsZWN0IFFSVFJfTUhJXFxuICAgOTpcXHRcXHRzZWxlY3QgUENJX1BXUkNUUkxfUFdSU0VRIGlmIEhBVkVfUFdSQ1RSTFxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgUXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgKElFRUVcXG4gIDEyOlxcdFxcdCAgODAyLjExYmUpIGZhbWlseSBvZiBjaGlwc2V0cywgZm9yIGV4YW1wbGUgV0NONzg1MCBhbmRcXG4gIDEzOlxcdFxcdCAgUUNOOTI3NC5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgYXRoMTJrLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgQVRIMTJLX0FIQlxcbiAgMTg6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgUkVNT1RFUFJPQ1xcbiAgMjA6XFx0XFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTozOC4wODExODU4NjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYxMzM2NDI0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbnRleHQgb2YgdGhlIGBhdGgxMmtgIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcGF0Y2gncyBkZXBlbmRlbmNpZXMgYXJlIGBNQUM4MDIxMWAsIGBIQVNfRE1BYCwgYW5kIGBQQ0lgLiBUaGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBgQVRIMTJLYCBjb25maWd1cmF0aW9uLiBOb3csIGBIQVNfRE1BYCBhbmQgYFBDSWAgYXJlIHByZXR0eSBjb21tb24gZW5hYmxlbWVudCBvcHRpb25zIGluIGdlbmVyYWwuIFRoZSByZWFsIGNydWNpYWwgZGVwZW5kZW5jeSBpcyBgTUFDODAyMTFgLiBCdXQgaG9sZCBvbiwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgYGF0aDEya2AgaXMgYSBkcml2ZXIgc3BlY2lmaWMgdG8gYSB2ZW5kb3IsIFBDSWUgaGFyZHdhcmUgZGV2aWNlLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YXJucyBhYm91dCBjb2RlIHRoYXQgZGVwZW5kcyBvbiBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzLlxuXG5SaWdodCwgV2ktRmkgZHJpdmVycywgbGlrZSBJIGV4cGVjdCBgYXRoMTJrYCB0byBiZSwgYXJlICpub3QqIFNtYXJ0TklDcywgR1BVcywgb3IgUENJZSBzd2l0Y2hlcy4gVGhhdCdzIGEgZ29vZCBzaWduLiBBbmQsIGFoLCB5ZXMsIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB3aGljaCBzdWdnZXN0cyBlbXVsYXRpb24uIFdhaXQsIGl0J3Mgbm90IGp1c3QgKmEqIFBDSSBmdXp6ZXIsIGl0J3MgKnRoZSogc3BlY2lmaWMgUENJIGZ1enplciwgbWVhbmluZyBpdCBjYW4gZnV6eiBhbnkgUENJIGRyaXZlci5cblxuQ3J1Y2lhbGx5LCB0aGUgcGF0Y2ggYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLiBCaW5nby4gVGhhdCBtZWFucyB0aGlzIGJ1ZyB3YXMgKmZvdW5kKiBhbmQgdGVzdGVkIGJ5IHN5emthbGxlci4gVGhhdCBpcyBkZWZpbml0aXZlLCB0aGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHRoZSBzeXprYWxsZXIgZW52aXJvbm1lbnQuIFdlIGhhdmUgdmFsaWRhdGlvbiB0aGF0IHRoaXMgaXMgZnV6emFibGUuIFNvLCBsZXQncyBzZWUgd2hpY2ggZnVuY3Rpb24gaXMgaW1wbGljYXRlZDogYGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTg4LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDY6MTk6NDMuNjk0NTUyNTcxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE3MjIzMzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz05OTQ4PXZvaWQgYXRoMTJrX3dtaV9mcmVlX3RwY19zdGF0c19tZW0oc3RydWN0IGF0aDEyayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTk5NjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo5OTY0OnN0YXRpYyB2b2lkIGF0aDEya193bWlfcHJvY2Vzc190cGNfc3RhdHMoc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTk5NjUtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwMDYxLSNlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDA2MjpzdGF0aWMgdm9pZCBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDA2My1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTAyOTE9c3RhdGljIHZvaWQgYXRoMTJrX3dtaV9vcF9yeChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDQxOS1cXHRjYXNlIFdNSV9IQUxQSFlfU1RBVFNfQ1RSTF9QQVRIX0VWRU5USUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDQyMDpcXHRcXHRhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzKGFiLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA0MjEtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjE5OjQ1LjMxMTc4MzQyOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ4NDg1MDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgQXRoZXJvcyBXaXJlbGVzcyBEcml2ZXIncyBUUEMgU3RhdHMgUHJvY2Vzc2luZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGF0aDEya2AgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0c2AgZnVuY3Rpb24uIEZpcnN0LCBJIG5vdGljZSBpdCdzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IG1lYW5zIGl0J3Mgb25seSB2aXNpYmxlIHdpdGhpbiBpdHMgc291cmNlIGZpbGUsIHdoaWNoIGxpbWl0cyBpdHMgc2NvcGUg4oCTIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQgZm9yIGRlYnVnZ2luZyBsYXRlci4gTm93LCB3aGVyZSBpcyB0aGlzIHRoaW5nIGFjdHVhbGx5ICp1c2VkKj8gSSBzZWUgdGhlIGNvbW1lbnQgaW5kaWNhdGVzIGl0J3MgY2FsbGVkIGZyb20gYGF0aDEya193bWlfb3BfcnhgLlxuXG5SaWdodCwgdGhhdCBtYWtlcyBzZW5zZS4gVFBDIHN0YXRzLCBJIHdvdWxkIGFzc3VtZSwgYXJlIGxpa2VseSBnZW5lcmF0ZWQgb24gcmVjZWl2ZSwgdGh1cyBoYW5kbGVkIGluIHRoZSBXTUkgUlggb3BlcmF0aW9uLiBUaGVyZWZvcmUsIEkgYmV0dGVyIHRha2UgYSBsb29rIGF0IGBhdGgxMmtfd21pX29wX3J4YC4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIGFjdGlvbiB3aWxsIGJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpbnRlZ3JhdGVzIHdpdGggdGhlIGhhcmR3YXJlIHRvIGdldCB0aGVzZSBUUEMgc3RhdHMsIGFuZCBob3cgaXQgdGhlbiwgcHJlc3VtYWJseSwgdXNlcyB0aGVtIGZvciB0cmFuc21pdCBwb3dlciBjb250cm9sIG9yIG90aGVyIG9wdGltaXphdGlvbnMuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2NzQsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTo0OS4wNjAyNzA4NDNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjA4NDA1NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX3dtaV9vcF9yeFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTEwMjQ5PWF0aDEya193bWlfcnNzaV9kYm1fY29udmVyc2lvbl9wYXJhbXNfaW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDI5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjEwMjkxOnN0YXRpYyB2b2lkIGF0aDEya193bWlfb3Bfcngoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwMjkyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTA0NjE9c3RhdGljIGludCBhdGgxMmtfY29ubmVjdF9wZGV2X2h0Y19zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDc0LVxcdGNvbm5fcmVxLmVwX29wcy5lcF90eF9jb21wbGV0ZSA9IGF0aDEya193bWlfaHRjX3R4X2NvbXBsZXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTA0NzU6XFx0Y29ubl9yZXEuZXBfb3BzLmVwX3J4X2NvbXBsZXRlID0gYXRoMTJrX3dtaV9vcF9yeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDc2LVxcdGNvbm5fcmVxLmVwX29wcy5lcF90eF9jcmVkaXRzID0gYXRoMTJrX3dtaV9vcF9lcF90eF9jcmVkaXRzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTo1MC40ODExMTU5MTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2OTM4MDc2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIGF0aDEyayBEcml2ZXIncyBIVEMgU2VydmljZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBhdGgxMmtfd21pX29wX3J4YC4gSXQgc2VlbXMgdG8gYmUgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGlzIHVzZWZ1bCB0byBrbm93IHJpZ2h0IG9mZiB0aGUgYmF0LiBUaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHRoYXQgaXQncyByZWdpc3RlcmVkIGFzIGBlcF9yeF9jb21wbGV0ZWAgd2l0aGluIGBhdGgxMmtfY29ubmVjdF9wZGV2X2h0Y19zZXJ2aWNlYC4gVGhhdCB0ZWxscyBtZSAqZXhhY3RseSogd2hlcmUgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwLCBmcm9tIGFuIGFyY2hpdGVjdHVyYWwgc3RhbmRwb2ludCwgaXMgdG8gdGhvcm91Z2hseSBleGFtaW5lIGBhdGgxMmtfY29ubmVjdF9wZGV2X2h0Y19zZXJ2aWNlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gZmxvdy4gV2hhdCBzZXJ2aWNlcyBpcyBpdCByZXNwb25zaWJsZSBmb3IsIGFuZCBob3cgZG9lcyBpdCByZWdpc3RlciBhbmQgdXRpbGl6ZSB0aGlzIGBlcF9yeF9jb21wbGV0ZWAgY2FsbGJhY2s/IEknbSBnb2luZyB0byBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCBmaWd1cmUgb3V0IGl0cyByb2xlIGluIGhhbmRsaW5nIGluY29taW5nIGRhdGEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzOTMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTo1My44NTA0OTg0MzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjIyNjMxNTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX2Nvbm5lY3RfcGRldl9odGNfc2VydmljZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTEwMjkxPXN0YXRpYyB2b2lkIGF0aDEya193bWlfb3Bfcngoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA0NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDQ2MTpzdGF0aWMgaW50IGF0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNDYyLVxcdFxcdFxcdFxcdFxcdCAgIHUzMiBwZGV2X2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTA2ODg9aW50IGF0aDEya193bWlfY29ubmVjdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDY5Ny1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd21pX2VwX2NvdW50OyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDY5ODpcXHRcXHRhdGgxMmtfY29ubmVjdF9wZGV2X2h0Y19zZXJ2aWNlKGFiLCBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNjk5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTo1NS4zMTI3NjU3NTlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2MTcwMzI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgYXRoMTJrX3dtaV9jb25uZWN0YCoqXG5cbk9rYXksIHNvIGBhdGgxMmtfd21pX2Nvbm5lY3RgIGlzbid0IHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSBhbmQgaG93IGl0J3MgdXNlZC4gTGV0J3MgZ2V0IHJpZ2h0IGludG8gZXhhbWluaW5nIHRoZSBjb2RlIGZvciBgYXRoMTJrX3dtaV9jb25uZWN0YCBpdHNlbGYuIFdoYXQncyB0aGUgaW1wbGVtZW50YXRpb24/IFdoYXQgYXJlIHRoZSBjYWxsaW5nIGNvbnRleHRzPyBJcyB0aGlzIGEgZHJpdmVyIGZ1bmN0aW9uLCBvciBzb21ldGhpbmcgZXhwb3NlZCB0byBhbm90aGVyIHBhcnQgb2YgdGhlIHN5c3RlbT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uJ3Mgc2NvcGUsIGlucHV0cywgb3V0cHV0cywgYW5kLCBtb3N0IGltcG9ydGFudGx5LCB3aHkgaXQgaXNuJ3QgZGVmaW5lZCB3aXRoIHRoZSBgc3RhdGljYCBrZXl3b3JkLiBUaGlzIGxhY2sgb2Ygc3RhdGljIGRlc2lnbmF0aW9uIHN1Z2dlc3RzIGl0IG1heSBiZSB1c2VkIG91dHNpZGUgdGhlIGN1cnJlbnQgbW9kdWxlLCB3aGljaCBjYXJyaWVzIGltcG9ydGFudCBpbXBsaWNhdGlvbnMgZm9yIGRlcGVuZGVuY2llcyBhbmQgb3ZlcmFsbCBzeXN0ZW0gZGVzaWduLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSB0ZWxscyB1cyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMzMsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoxOTo1OC4zNzQ0NzA2NjJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzgzMjU3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX3dtaV9jb25uZWN0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTg2Mj1zdGF0aWMgaW50IGF0aDEya19jb3JlX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy04OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6ODk4OlxcdHJldCA9IGF0aDEya193bWlfY29ubmVjdChhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODk5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTA2NTI9aW50IGF0aDEya193bWlfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2Uoc3RydWN0IGF0aDEyayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNjg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTA2ODg6aW50IGF0aDEya193bWlfY29ubmVjdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA2ODkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaD02NTUzPWludCBhdGgxMmtfd21pX3dhaXRfZm9yX3NlcnZpY2VfcmVhZHkoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDo2NTU0OmludCBhdGgxMmtfd21pX2Nvbm5lY3Qoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC02NTU1LWludCBhdGgxMmtfd21pX3BkZXZfYXR0YWNoKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjE5OjU5LjgxMjgwMTE4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NTkwODM2MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIGF0aDEyayBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGF0aDEya2AgZHJpdmVyIGFuZCBJIHNlZSBgYXRoMTJrX3dtaV9jb25uZWN0YCBiZWluZyBjYWxsZWQgZnJvbSBgYXRoMTJrX2NvcmVfc3RhcnRgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIHVzdWFsbHkgdGhlIFdNSSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkIGZhaXJseSBlYXJseSBpbiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIE1ha2VzIHNlbnNlIOKAkyBuZWVkIHRoYXQgY29ubmVjdGlvbiB0byB0YWxrIHRvIHRoZSBoYXJkd2FyZS4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBhbmQgY29udGV4dCBhIGJpdCBiZXR0ZXIuIE15IGd1dCB0ZWxscyBtZSBgYXRoMTJrX2NvcmVfc3RhcnRgIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHdoZW4gYW5kIHdoeSB0aGlzIGNvbm5lY3Rpb24gaGFwcGVucy4gVGltZSB0byBqdW1wIG92ZXIgdG8gdGhhdCBmdW5jdGlvbiBkZWZpbml0aW9uIGFuZCBzZWUgd2hhdCdzIGhhcHBlbmluZyBqdXN0IGJlZm9yZSB0aGUgY2FsbCB0byBgYXRoMTJrX3dtaV9jb25uZWN0YC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBoYXJkd2FyZSBzZXR1cCwgYW55IG5lY2Vzc2FyeSByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgcHJvYmFibHkgc29tZSBlc3NlbnRpYWwgY2hlY2tzIHRvIGVuc3VyZSBldmVyeXRoaW5nJ3MgcmVhZHkgdG8gZ28gYmVmb3JlIHdlIHRyeSB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgZmlybXdhcmUgdmlhIFdNSS4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbnMgb3IgcmFjZSBjb25kaXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgaGVyZS4gTGV0J3Mgc2VlIHdoYXQgYGF0aDEya19jb3JlX3N0YXJ0YCByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDcxOCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjIwOjA1LjM3MTg4Njg0NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0MDM1MjIxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMmtfY29yZV9zdGFydFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz04NTY9c3RhdGljIHZvaWQgYXRoMTJrX2NvcmVfcGRldl9kZXN0cm95KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy04NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6ODYyOnN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy04NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTEzMj1zdGF0aWMgaW50IGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0KHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTE4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMTkwOnN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc3RhcnRfZmlybXdhcmUoc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMTkxLVxcdFxcdFxcdFxcdCAgICAgIGVudW0gYXRoMTJrX2Zpcm13YXJlX21vZGUgbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTEyODg9aW50IGF0aDEya19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTI5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMjkzOlxcdHJldCA9IGF0aDEya19jb3JlX3N0YXJ0X2Zpcm13YXJlKGFiLCBhYi1cXHUwMDNlZndfbW9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTI5NC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMzEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjEzMTQ6XFx0cmV0ID0gYXRoMTJrX2NvcmVfc3RhcnQoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTEzMTUtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoyMDowNy4wMTIyNDQ4MTdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjExNzg4NjIzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIGBhdGgxMmtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgIHRyaWdnZXJzIGBhdGgxMmtfY29yZV9zdGFydGAuIFRoaXMgc2lnbmFscyB0aGF0IHRoZSBmaXJtd2FyZSBoYXMgZmluaXNoZWQgaW5pdGlhbGl6aW5nLCB3aGljaCBwdXRzIG1lIG9uIHRoZSByaWdodCB0cmFjay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgYGF0aDEya193bWlfb3BfcnhgIGlzIHJlYWNoYWJsZSBiZWNhdXNlIGl0IGlzIHRoZSByZWNlaXZpbmcgV01JIGV2ZW50cyBjYWxsYmFjay4gU2luY2Ugc3l6a2FsbGVyIGlzIGFibGUgdG8gaW5qZWN0IFdNSSBldmVudHMg4oCTIHByZXN1bWFibHkgdGhyb3VnaCBzb21lIGVtdWxhdGlvbiBvZiB0aGUgUENJIG9yIEhUQyBsYXllcnMg4oCTIGl0J3MgZGVmaW5pdGVseSBmZWFzaWJsZSB0byByZWFjaCBgYXRoMTJrX3dtaV9wcm9jZXNzX3RwY19zdGF0c2AgaW5kaXJlY3RseS5cblxuVGhlIHBhdGNoIGl0c2VsZiBkZWFscyB3aXRoIHJlbW92aW5nIGEgYHNrYi1cdTAwM2VkYXRhYCBjaGVjaywgd2hpY2ggY29uc3RpdHV0ZXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbi4gVGhlIGZ1bmN0aW9uIGBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGEga2V5IHBvaW50IHRvIG5vdGUuIFNvIG15IG1haW4gcXVlc3Rpb24gaXMsIGdpdmVuIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIHRoZSBzdGF0aWMgbmF0dXJlIG9mIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24sIHdoYXQgbm9uLXN0YXRpYyBmdW5jdGlvbnMgY291bGQgYmUgc3VjY2Vzc2Z1bGx5IGZ1enplZCB0byB0cmlnZ2VyIHRoZSBtb2RpZmllZCBiZWhhdmlvcj9cblxuSXQgc2VlbXMgbGlrZSBgYXRoMTJrX3dtaV9vcF9yeGAgaXMgYWxzbyBzdGF0aWMsIHNvIEkgY2FuJ3QgZGlyZWN0bHkgdGFyZ2V0IGl0LiBgYXRoMTJrX2Nvbm5lY3RfcGRldl9odGNfc2VydmljZWAgaXMgYWxzbyBzdGF0aWMuIGBhdGgxMmtfd21pX2Nvbm5lY3RgIHNlZW1zIG5vbi1zdGF0aWMsIGJ1dCBpdCBtb3N0bHkgZm9jdXNlcyBvbiByZWdpc3RlcmluZyB0aGUgY2FsbGJhY2sgZm9yIGluY29taW5nIGV2ZW50cy4gVGhlIHJlYWwgZW50cnkgcG9pbnQgZm9yIHRoZSBldmVudHMsIHRoZSBvbmUgdGhhdOKAmXMgYWN0dWFsbHkgY2FsbGVkIGJ5IHRoZSBIVEMgbGF5ZXIsIGlzIGBhdGgxMmtfd21pX29wX3J4YC4gSXQgc2VlbXMgbGlrZSB0aGUgYmVzdCB0aGluZyB0byBkbyBpcyB0byBsb29rIGF0IHdoZXJlIGBlcF9yeF9jb21wbGV0ZWAgaXMgY2FsbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTU3OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoyMDoxMy4xMzAxMzI5ODVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjI0MDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVwX3J4X2NvbXBsZXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmM9MjA9aW50IGF0aDEya19kcF9odHRfY29ubmVjdChzdHJ1Y3QgYXRoMTJrX2RwICpkcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmMtMjYtXFx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NvbXBsZXRlID0gYXRoMTJrX2RwX2h0dF9odGNfdHhfY29tcGxldGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuYzoyNzpcXHRjb25uX3JlcS5lcF9vcHMuZXBfcnhfY29tcGxldGUgPSBhdGgxMmtfZHBfaHR0X2h0Y190MmhfbXNnX2hhbmRsZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuYy0yOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM9MjUyPXZvaWQgYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtMzY4LVxcdFxcdCAgIGVpZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jOjM2OTpcXHRlcC1cXHUwMDNlZXBfb3BzLmVwX3J4X2NvbXBsZXRlKGFiLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtMzcwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYz03NTE9aW50IGF0aDEya19odGNfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy03ODEtXFx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NvbXBsZXRlID0gYXRoMTJrX2h0Y19jb250cm9sX3R4X2NvbXBsZXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM6NzgyOlxcdGNvbm5fcmVxLmVwX29wcy5lcF9yeF9jb21wbGV0ZSA9IGF0aDEya19odGNfY29udHJvbF9yeF9jb21wbGV0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jLTc4My1cXHRjb25uX3JlcS5tYXhfc2VuZF9xdWV1ZV9kZXB0aCA9IEFUSDEyS19OVU1fQ09OVFJPTF9UWF9CVUZGRVJTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuaD0yMzM9c3RydWN0IGF0aDEya19odGNfZXBfb3BzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5oLTIzNC1cXHR2b2lkICgqZXBfdHhfY29tcGxldGUpKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmg6MjM1OlxcdHZvaWQgKCplcF9yeF9jb21wbGV0ZSkoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuaC0yMzYtXFx0dm9pZCAoKmVwX3R4X2NyZWRpdHMpKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDQ2MT1zdGF0aWMgaW50IGF0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA0NzQtXFx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NvbXBsZXRlID0gYXRoMTJrX3dtaV9odGNfdHhfY29tcGxldGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDQ3NTpcXHRjb25uX3JlcS5lcF9vcHMuZXBfcnhfY29tcGxldGUgPSBhdGgxMmtfd21pX29wX3J4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA0NzYtXFx0Y29ubl9yZXEuZXBfb3BzLmVwX3R4X2NyZWRpdHMgPSBhdGgxMmtfd21pX29wX2VwX3R4X2NyZWRpdHM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjIwOjEzLjE3Mjc2MDE5NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjAwOTkyNDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXJgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBzZWUgYGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyYCBjYWxscyBgZXAtXHUwMDNlZXBfb3BzLmVwX3J4X2NvbXBsZXRlKGFiLCBza2IpYC4gVGhhdCdzIHRoZSBrZXkuIFRoaXMgaXMgd2hlcmUgdGhlIHJlY2VpdmVkIGRhdGEgaXMgYmVpbmcgaGFuZGxlZCBhZnRlciB0aGUgSFRDIGxheWVyIGdldHMgaW52b2x2ZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyB0cmFjZSB0aGlzIGFuZCB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gYGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyYC4gSSB3YW50IHRvIHNlZSB0aGUgZXhlY3V0aW9uIGZsb3c6IHNwZWNpZmljYWxseSwgd2hhdCBgZXAtXHUwMDNlZXBfb3BzLmVwX3J4X2NvbXBsZXRlYCAqaXMqIGluIHRoaXMgY29udGV4dCwgdGhlIGFyZ3VtZW50cyBpbnZvbHZlZCwgYW5kIGhvdyB0aGF0IHVsdGltYXRlbHkgcmVsYXRlcyB0byBkYXRhIHByb2Nlc3NpbmcgaW4gdGhlIHVwcGVyIGxheWVycy4gSSBrbm93IHRoZXJlJ3MgYSBsb3QgcGFja2VkIGluIHRoZXJlIHNvIEkgbmVlZCB0byBzdGVwIHRocm91Z2ggdGhpcyB2ZXJ5IGNhcmVmdWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxOTUsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoyMDoxNi43NzM3NTUzOTNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMDg4OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM9MjQ3PXN0YXRpYyB2b2lkIGF0aDEya19odGNfd2FrZXVwX2Zyb21fc3VzcGVuZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy0yNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYzoyNTI6dm9pZCBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtMjUzLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jLTM3OC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYzozNzk6RVhQT1JUX1NZTUJPTChhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy0zODAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5oPTMxMj1zdHJ1Y3Qgc2tfYnVmZiAqYXRoMTJrX2h0Y19hbGxvY19za2Ioc3RydWN0IGF0aDEya19iYXNlICphYiwgaW50IHNpemUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmg6MzEzOnZvaWQgYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5oLTMxNC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYz0yNjM9Y29uc3Qgc3RydWN0IGNlX2F0dHIgYXRoMTJrX3dpZmk3X2hvc3RfY2VfY29uZmlnX3FjbjkyNzRbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yNzctXFx0XFx0LmRlc3RfbmVudHJpZXMgPSA1MTIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjI3ODpcXHRcXHQucmVjdl9jYiA9IGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yNzktXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yODYtXFx0XFx0LmRlc3RfbmVudHJpZXMgPSAxMjgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjI4NzpcXHRcXHQucmVjdl9jYiA9IGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0yODgtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0zODQtXFx0XFx0LmRlc3RfbmVudHJpZXMgPSA1MTIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjM4NTpcXHRcXHQucmVjdl9jYiA9IGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy0zODYtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYz01NzQ9Y29uc3Qgc3RydWN0IGNlX2F0dHIgYXRoMTJrX3dpZmk3X2hvc3RfY2VfY29uZmlnX3djbjc4NTBbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy01ODgtXFx0XFx0LmRlc3RfbmVudHJpZXMgPSA1MTIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jOjU4OTpcXHRcXHQucmVjdl9jYiA9IGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy01OTAtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY2UuYy01OTctXFx0XFx0LmRlc3RfbmVudHJpZXMgPSA2NCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmM6NTk4OlxcdFxcdC5yZWN2X2NiID0gYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jLTU5OS1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jPTg3ND1jb25zdCBzdHJ1Y3QgY2VfYXR0ciBhdGgxMmtfd2lmaTdfaG9zdF9jZV9jb25maWdfaXBxNTMzMltdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jLTg4OC1cXHRcXHQuZGVzdF9uZW50cmllcyA9IDUxMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmM6ODg5OlxcdFxcdC5yZWN2X2NiID0gYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jLTg5MC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jLTg5Ny1cXHRcXHQuZGVzdF9uZW50cmllcyA9IDEyOCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NlLmM6ODk4OlxcdFxcdC5yZWN2X2NiID0gYXRoMTJrX2h0Y19yeF9jb21wbGV0aW9uX2hhbmRsZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jZS5jLTg5OS1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNjoyMDoxNi44MTY4NTA5MzNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwMDE5NjAzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgUGFja2V0IFJlY2VwdGlvbiBQYXRoKipcblxuT2theSwgc28gSSd2ZSBwaW5wb2ludGVkIGBhdGgxMmtfaHRjX3J4X2NvbXBsZXRpb25faGFuZGxlcmAgYXMgdGhlIGNydWNpYWwgZW50cnkgcG9pbnQgaGVyZS4gSXQncyB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQncyBleHBvcnRlZCBhbmQsIGltcG9ydGFudGx5LCBpdOKAmXMgYmVpbmcgdXNlZCBhcyBgcmVjdl9jYmAgd2l0aGluIHRoZSBDb3B5IEVuZ2luZSAoQ0UpIGNvbmZpZ3VyYXRpb24uIFRoaW5raW5nIGFib3V0IGl0LCB0aGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2Ug4oCTIGl04oCZcyB0aGUgZ2F0ZXdheSBmb3IgcmVjZWl2aW5nIHBhY2tldHMgZnJvbSB0aGUgZmlybXdhcmUsIHNwZWNpZmljYWxseSB0aHJvdWdoIHRoZSBDb3B5IEVuZ2luZSwgd2hpY2ggaXMgdGhpcyBETUEgZW5naW5lIG9wZXJhdGluZyBvdmVyIHRoZSBQQ0kvQUhCIGludGVyZmFjZS4gUmlnaHQsIHNvIHRoaXMgYGF0aDEya19odGNfcnhfY29tcGxldGlvbl9oYW5kbGVyYCBpcyBkZWZpbml0ZWx5IGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24gZm9yIHRoaXMgZGVlcCBkaXZlLlxuXG5Ob3csIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciB2aXRhbCBjb25maWdzIHRoYXQgYXJlIHBsYXlpbmcgYSByb2xlIGluIHRoaXMgYXJlYS4gRnJvbSBtZW1vcnksIGBBVEgxMktgIGlzIHRoZSBwcmltYXJ5IG9uZSBmb3IgdGhpcyBkcml2ZXIuIEkgd29uZGVyLCBhcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gWWVzLCBJJ2xsIG5lZWQgYE1BQzgwMjExYCBhcyB3ZWxsLiBKdXN0IHRvIGJlIHN1cmUsIGxldCdzIHRha2UgYSBsb29rIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdgIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgaW1wb3J0YW50IGNvbmZpZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0ODMxLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA2OjIwOjIxLjUxNzA0ODc0OFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBBVEgxMktcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUEgXFx1MDAyNlxcdTAwMjYgUENJXFxuICAgNTpcXHRcXHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xcbiAgIDY6XFx0XFx0c2VsZWN0IE1ISV9CVVNcXG4gICA3OlxcdFxcdHNlbGVjdCBRUlRSXFxuICAgODpcXHRcXHRzZWxlY3QgUVJUUl9NSElcXG4gICA5OlxcdFxcdHNlbGVjdCBQQ0lfUFdSQ1RSTF9QV1JTRVEgaWYgSEFWRV9QV1JDVFJMXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIEVuYWJsZSBzdXBwb3J0IGZvciBRdWFsY29tbSBUZWNobm9sb2dpZXMgV2ktRmkgNyAoSUVFRVxcbiAgMTI6XFx0XFx0ICA4MDIuMTFiZSkgZmFtaWx5IG9mIGNoaXBzZXRzLCBmb3IgZXhhbXBsZSBXQ043ODUwIGFuZFxcbiAgMTM6XFx0XFx0ICBRQ045Mjc0LlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBhdGgxMmsuXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBBVEgxMktfQUhCXFxuICAxODpcXHRcXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgQUhCIHN1cHBvcnRcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBSRU1PVEVQUk9DXFxuICAyMDpcXHRcXHRzZWxlY3QgUUNPTV9NRFRfTE9BREVSXFxuICAyMTpcXHRcXHRzZWxlY3QgUUNPTV9QQVNcXG4gIDIyOlxcdFxcdGhlbHBcXG4gIDIzOlxcdFxcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIEF0aDEyayBBSEIgYnVzIGNoaXBzZXRzLCBleGFtcGxlIElQUTUzMzIuXFxuICAyNDpcXHRcXG4gIDI1OlxcdGNvbmZpZyBBVEgxMktfREVCVUdcXG4gIDI2OlxcdFxcdGJvb2wgXFxcImF0aDEyayBkZWJ1Z2dpbmdcXFwiXFxuICAyNzpcXHRcXHRkZXBlbmRzIG9uIEFUSDEyS1xcbiAgMjg6XFx0XFx0aGVscFxcbiAgMjk6XFx0XFx0ICBFbmFibGUgZGVidWcgc3VwcG9ydCwgZm9yIGV4YW1wbGUgZGVidWcgbWVzc2FnZXMgd2hpY2ggbXVzdFxcbiAgMzA6XFx0XFx0ICBiZSBlbmFibGVkIHNlcGFyYXRlbHkgdXNpbmcgdGhlIGRlYnVnX21hc2sgbW9kdWxlIHBhcmFtZXRlci5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcXG4gIDMzOlxcdFxcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIEFUSDEyS19ERUJVR0ZTXFxuICAzNjpcXHRcXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbiAgMzc6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbiAgMzg6XFx0XFx0aGVscFxcbiAgMzk6XFx0XFx0ICBFbmFibGUgYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcbiAgNDA6XFx0XFxuICA0MTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxcbiAgNDI6XFx0XFx0ICB5b3Ugd2FudCBvcHRpbWFsIHBlcmZvcm1hbmNlIGNob29zZSBOLlxcbiAgNDM6XFx0XFxuICA0NDpcXHRjb25maWcgQVRIMTJLX1RSQUNJTkdcXG4gIDQ1OlxcdFxcdGJvb2wgXFxcImF0aDEyayB0cmFjaW5nIHN1cHBvcnRcXFwiXFxuICA0NjpcXHRcXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBFVkVOVF9UUkFDSU5HXFxuICA0NzpcXHRcXHRoZWxwXFxuICA0ODpcXHRcXHQgIEVuYWJsZSBhdGgxMmsgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS5cXG4gIDQ5OlxcdFxcbiAgNTA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDY6MjA6MjEuNTE3MTIzODU4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyODU3MzAwMDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBhdGgxMmsgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBhdGgxMmtfd21pX3Byb2Nlc3NfdHBjX3N0YXRzYCBpbiB0aGUgYXRoMTJrIGRyaXZlciwgc3BlY2lmaWNhbGx5IHJlbW92aW5nIGEgYHNrYi1cdTAwM2VkYXRhYCBjaGVjay4gVGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCB2aWEgYGF0aDEya193bWlfb3BfcnhgIHdoZW4gaXQgcmVjZWl2ZXMgYSBgV01JX0hBTFBIWV9TVEFUU19DVFJMX1BBVEhfRVZFTlRJRGAuIGBhdGgxMmtfd21pX29wX3J4YCBpdHNlbGYgaXMgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyIGFzIGEgcGFydCBvZiB0aGUgYGF0aDEya19jb25uZWN0X3BkZXZfaHRjX3NlcnZpY2VgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGF0aDEyayBXaS1GaSBkcml2ZXIsIHdoaWNoIGlzIGEgUENJIChvciBwb3RlbnRpYWxseSBBSEIpIGRyaXZlci5cblxuVGhlIGluc3RydWN0aW9ucyBJJ20gd29ya2luZyB3aXRoIGFyZSBwcmV0dHkgY2xlYXIuIFRoZXkgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggb25seSB0b3VjaGVzOiAgXCIuLi4gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzLCBcIldhaXQsIGlzIGF0aDEyayBlbXVsYXRlZCBsaWtlIG1hYzgwMjExX2h3c2ltP1wiIEJ1dCBubywgYXRoMTJrIGlzIGEgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIChXQ043ODUwLCBRQ045Mjc0LCBJUFE1MzMyKS4gIEl0J3MgdmVuZG9yLXNwZWNpZmljIGFuZCByZWxpZXMgb24gUENJIG9yIEFIQi4gIFRoZSBpbnN0cnVjdGlvbnMgbGF0ZXIgcmVpdGVyYXRlIHRoaXMgcG9pbnQsIG1lbnRpb25pbmcgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLlxuXG5TbywgdGhlIHF1ZXN0aW9uIGlzOiBjYW4gd2UgcmVhY2ggdGhpcyBjb2RlIHBhdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IEdpdmVuIHRoYXQgYXRoMTJrIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgV2ktRmkgZHJpdmVyLCBhbmQgdGhlcmUncyBubyBzdGFuZGFyZCBRRU1VIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSwgdGhlIGFuc3dlciBpcyBuby4gIEl0J3Mgbm90IG1hYzgwMjExX2h3c2ltOyBpdCdzIHRoZSBhY3R1YWwgaGFyZHdhcmUgZHJpdmVyLiAgV2UncmUgbm90IHRhbGtpbmcgYWJvdXQgUENJIGZ1enppbmcgb3IgYW55dGhpbmcgbGlrZSB0aGF0LlxuXG5JIGNoZWNrZWQgaWYgc3l6a2FsbGVyIGlzIGZ1enppbmcgYXRoMTJrIGRpcmVjdGx5LiBJIHNhdyB0aGF0IHN5emthbGxlciBoYXMgYHN5el84MDIxMV8uLi5gIHdoaWNoIHVzZSBgbWFjODAyMTFfaHdzaW1gLCBidXQgaXQgaXMgbm90IGZ1enppbmcgYXRoMTJrLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgYXRoMTJrIGlzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciAoUXVhbGNvbW0pIHRoYXQgZGVwZW5kcyBvbiBwaHlzaWNhbCBQQ0llL0FIQiBoYXJkd2FyZSB0aGF0IGlzbid0IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgSSBtdXN0IHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQncyBhIGhhcmR3YXJlLWRlcGVuZGVudCBjb2RlIHBhdGggdGhhdCBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJhc2VkIG9uIHRoZSBnaXZlbiBpbnN0cnVjdGlvbnMuIFRoZXJlIGlzIG5vIGVtdWxhdGlvbiBvZiBhdGgxMmsuXG5cbk9rYXksIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIG1vdmluZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1NzYsIk91dHB1dFRva2VucyI6OTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDY6MjA6MzQuMzc0NDI1NDY5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIG9yIEFIQiBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIG9yIEFIQiBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownfd5s[1] Phase: Running StartedAt: 2026-07-30 06:21:17 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownfd5s[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-30 06:21:17 +0000 UTC FinishedAt: 2026-07-30 06:21:22 +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,}