Name: series-workflow2scxv Phase: Failed StartedAt: 2026-08-15 15:23:22 +0000 UTC FinishedAt: 2026-08-15 15:26:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2scxv[0] Phase: Succeeded StartedAt: 2026-08-15 15:23:22 +0000 UTC FinishedAt: 2026-08-15 15:26:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2scxv[0].run-triage Phase: Succeeded StartedAt: 2026-08-15 15:23:22 +0000 UTC FinishedAt: 2026-08-15 15:26:24 +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+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFdpLUZpIGRyaXZlciBmb3IgUXVhbGNvbW0gaGFyZHdhcmUuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgb3IgQUhCIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBpbml0aWFsaXplLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDQwYWY4NjI2MmU0MTZkMzVmNTFhYzZhMTQ2YzY1ZmIxNzhhNmE4Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDE1OjI1OjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5pbmRleCAyZDU1Y2RjNGQxNjVkLi5lMjNhMjk1ZjlhN2Y4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuQEAgLTEwMTcyLDYgJiM0MzsxMDE3MiwxNSBAQCBzdGF0aWMgaW50IGF0aDExa19tYWNfc2V0dXBfY2hhbm5lbHNfcmF0ZXMoc3RydWN0IGF0aDExayAqYXIsXG4gXHRyZWdfY2FwID0gXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlaGFsX3JlZ19jYXBbYXItXHUwMDNlcGRldl9pZHhdO1xuIFx0dGVtcF9yZWdfY2FwID0gcmVnX2NhcDtcbiBcbiYjNDM7XHQvKiBRQ042MTIyIGZpcm13YXJlIG9taXRzIHRoZSBVTklJLTMgYmFuZCAoNTcyNS01ODUwIE1IeiwgY2hhbm5lbHNcbiYjNDM7XHQgKiAxNDktMTY1KSBmcm9tIGhpZ2hfNWdoel9jaGFuLCB3aGljaCBtYWtlcyB0aGUgZHJpdmVyIG1hcmsgdGhvc2VcbiYjNDM7XHQgKiBjaGFubmVscyBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRC4gQ2xhbXAgaXQgdG8gdGhlIHN0YW5kYXJkIDUuOCBHSHpcbiYjNDM7XHQgKiB1cHBlciBib3VuZCBzbyBjaGFubmVscyAxNDktMTY1IHJlbWFpbiB1c2FibGUuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGFyLVx1MDAzZWFiLVx1MDAzZWh3X3JldiA9PSBBVEgxMUtfSFdfUUNONjEyMl9IVzEwIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICByZWdfY2FwLVx1MDAzZWhpZ2hfNWdoel9jaGFuIFx1MDAzYyA1ODI1KVxuJiM0MztcdFx0cmVnX2NhcC1cdTAwM2VoaWdoXzVnaHpfY2hhbiA9IDU4MjU7XG4mIzQzO1xuIFx0aWYgKHN1cHBvcnRlZF9iYW5kcyBcdTAwMjYgV01JX0hPU1RfV0xBTl8yR19DQVApIHtcbiBcdFx0Y2hhbm5lbHMgPSBrbWVtZHVwKGF0aDExa18yZ2h6X2NoYW5uZWxzLFxuIFx0XHRcdFx0ICAgc2l6ZW9mKGF0aDExa18yZ2h6X2NoYW5uZWxzKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFdpLUZpIGRyaXZlciBmb3IgUXVhbGNvbW0gaGFyZHdhcmUuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgb3IgQUhCIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBpbml0aWFsaXplLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDQwYWY4NjI2MmU0MTZkMzVmNTFhYzZhMTQ2YzY1ZmIxNzhhNmE4YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDE1IDE1OjI1OjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMKaW5kZXggMmQ1NWNkYzRkMTY1ZC4uZTIzYTI5NWY5YTdmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jCkBAIC0xMDE3Miw2ICYjNDM7MTAxNzIsMTUgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX3NldHVwX2NoYW5uZWxzX3JhdGVzKHN0cnVjdCBhdGgxMWsgKmFyLAogCXJlZ19jYXAgPSAmYW1wO2FyLSZndDthYi0mZ3Q7aGFsX3JlZ19jYXBbYXItJmd0O3BkZXZfaWR4XTsKIAl0ZW1wX3JlZ19jYXAgPSByZWdfY2FwOwogCiYjNDM7CS8qIFFDTjYxMjIgZmlybXdhcmUgb21pdHMgdGhlIFVOSUktMyBiYW5kICg1NzI1LTU4NTAgTUh6LCBjaGFubmVscwomIzQzOwkgKiAxNDktMTY1KSBmcm9tIGhpZ2hfNWdoel9jaGFuLCB3aGljaCBtYWtlcyB0aGUgZHJpdmVyIG1hcmsgdGhvc2UKJiM0MzsJICogY2hhbm5lbHMgSUVFRTgwMjExX0NIQU5fRElTQUJMRUQuIENsYW1wIGl0IHRvIHRoZSBzdGFuZGFyZCA1LjggR0h6CiYjNDM7CSAqIHVwcGVyIGJvdW5kIHNvIGNoYW5uZWxzIDE0OS0xNjUgcmVtYWluIHVzYWJsZS4KJiM0MzsJICovCiYjNDM7CWlmIChhci0mZ3Q7YWItJmd0O2h3X3JldiA9PSBBVEgxMUtfSFdfUUNONjEyMl9IVzEwICZhbXA7JmFtcDsKJiM0MzsJICAgIHJlZ19jYXAtJmd0O2hpZ2hfNWdoel9jaGFuICZsdDsgNTgyNSkKJiM0MzsJCXJlZ19jYXAtJmd0O2hpZ2hfNWdoel9jaGFuID0gNTgyNTsKJiM0MzsKIAlpZiAoc3VwcG9ydGVkX2JhbmRzICZhbXA7IFdNSV9IT1NUX1dMQU5fMkdfQ0FQKSB7CiAJCWNoYW5uZWxzID0ga21lbWR1cChhdGgxMWtfMmdoel9jaGFubmVscywKIAkJCQkgICBzaXplb2YoYXRoMTFrXzJnaHpfY2hhbm5lbHMpLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjIzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFF1YWxjb21tIFdpLUZpIDYgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgYmVlbiBhcHBsaWVkIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jYC4gU2VlbXMgbGlrZSB0aGV5JiMzOTtyZSBwdXR0aW5nIGluIGEgd29ya2Fyb3VuZCDigJMgc3BlY2lmaWNhbGx5IGZvciBRQ042MTIyIGZpcm13YXJlIHRoYXQmIzM5O3MgYXBwYXJlbnRseSBkcm9wcGluZyB0aGUgVU5JSS0zIGJhbmQuIFRoZSBjb2RlIGlzIGNoZWNraW5nIHRoZSBoYXJkd2FyZSByZXZpc2lvbiwgYGFyLSZndDthYi0mZ3Q7aHdfcmV2ID09IEFUSDExS19IV19RQ042MTIyX0hXMTBgLCBhbmQgdGhlbiBhZGp1c3RpbmcgYHJlZ19jYXAtJmd0O2hpZ2hfNWdoel9jaGFuYC4gU3RhbmRhcmQgYmFuZCBsaW1pdGF0aW9uIHdvcmsgYXJvdW5kLgoKV2FpdCBhIHNlY29uZOKApiBgYXRoMTFrYC4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIFF1YWxjb21tIFdpLUZpIDYgZHJpdmVyLiBOb3csIGlzIHRoaXMgZHJpdmVyIGVtdWxhdGVkIGluIFFFTVU/IEkmIzM5O20gcHJldHR5IHN1cmUgaXQmIzM5O3Mgbm90LiBgYXRoMTFrYCBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIHBoeXNpY2FsIFBDSWUsIEFIQiwgb3IgU05PQyBXaS1GaSBjYXJkcy4KClRoaXMgc3BhcmtzIGFuIGludGVyZXN0aW5nIHRob3VnaHQuIFNpbmNlIGl0JiMzOTtzIGludGVyYWN0aW5nIHdpdGggaGFyZHdhcmUsIEkgd29uZGVyIGFib3V0IGZ1enppbmcgaXQuIENhbiB3ZSB1c2UgdGhlIHBoeXNpY2FsIGRyaXZlciB0byBpbmR1Y2UgdW5leHBlY3RlZCBiZWhhdmlvdXI/CgpMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlJiMzOTtzICphbnkqIGtpbmQgb2Ygc2ltdWxhdGVkIGhhcmR3YXJlIHN1cHBvcnQgZm9yIGBhdGgxMWtgLiBJJiMzOTtsbCBkbyBhIHF1aWNrIHNlYXJjaCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2AgZGlyZWN0b3J5LiBNYXliZSB0aGVyZSYjMzk7cyBhIHZpcnR1YWwgaW50ZXJmYWNlIG9yIHNvbWV0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hYzgwMjExX2h3c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBhdGgxMWtgIERyaXZlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIG5hdHVyZSBvZiB0aGUgYGF0aDExa2AgZHJpdmVyLiBUaGUgb2J2aW91cyBmaXJzdCBzdGVwIGlzIHRvIGFzY2VydGFpbiBpZiBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIFRoaXMgaXMgYSBjcnVjaWFsIGZvdW5kYXRpb25hbCBwb2ludDsgdW5kZXJzdGFuZGluZyB0aGUgYnVzIGludGVyZmFjZSBpcyBmdW5kYW1lbnRhbCB0byBhbnkgZnVydGhlciBhbmFseXNpcy4gSSBuZWVkIHRvIGtub3cgaWYgaXQmIzM5O3MgaW50ZXJhY3RpbmcgZGlyZWN0bHkgd2l0aCB0aGUgUENJIGJ1cy4gVGhpcyBkZXRlcm1pbmVzIHRoZSBraW5kIG9mIHJlc291cmNlcyB0aGUgZHJpdmVyIGlzIG1hbmFnaW5nIGFuZCB3aGF0IGtpbmQgb2YgaW50ZXJydXB0L0RNQSBjb25maWd1cmF0aW9ucyBJIGNhbiBleHBlY3QuIEEgcXVpY2sgY29uZmlybWF0aW9uIGhlcmUgd2lsbCBzdGVlciB0aGUgcmVzdCBvZiBteSBpbnZlc3RpZ2F0aW9uLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBgYXRoMTFrYCBuYW1lIGl0c2VsZiBzdWdnZXN0cyBhIGNvbm5lY3Rpb24gd2l0aCBBdGhlcm9zLCBidXQgdGhhdCBkb2VzbiYjMzk7dCBkZWZpbml0aXZlbHkgdGVsbCBtZSBhYm91dCB0aGUgaGFyZHdhcmUgaW50ZXJmYWNlLiBHb3R0YSBjb25maXJtIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9MTMwNz1zdGF0aWMgaW50IGF0aDExa19wY2lfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTMxMTpcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YXRoMTFrX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzEyLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTY1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU2l0dWF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIFBDSSBkcml2ZXIsIGNsZWFybHkgbWVhbnQgdG8gaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCBwaHlzaWNhbCBoYXJkd2FyZS4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBidXJuaW5nIGluIG15IG1pbmQgaXM6IGNhbiBJIGV2ZW4gKnRvdWNoKiB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTXkgcGFzdCBleHBlcmllbmNlIHNob3V0cyAmIzM0O3VzdWFsbHkgbm8uJiMzNDsgVGhpbmsgYWJvdXQgeW91ciBzdGFuZGFyZCBXaS1GaSBkcml2ZXJzIGxpa2UgYXRoMTFrLCBpd2x3aWZpLCBvciBtdDc2IOKAkyB0aGV5JiMzOTtyZSBub3QgZ2VuZXJhbGx5IGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBUaGV5IGRlbWFuZCB0aGUgcmVhbCBkZWFsLgoKVGhlbiBhIGZsaWNrZXIgb2YgaG9wZS4gSSByZWNhbGwgc3l6a2FsbGVyIGhhcyBzb21lIG1lY2hhbmlzbXMgdG8gZnV6eiB0aGUgV2ktRmkgc3RhY2sgdmlhIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGF0IGZvY3VzZXMgb24gdGhlIGBtYWM4MDIxMWAgY29yZS4gVGhlIHJlYWwgY2hhbGxlbmdlIGNvbWVzIHdpdGggc3BlY2lmaWMgZHJpdmVycy4gRm9yIGFuIGF0aDExayBkcml2ZXIsIGluaXRpYWxpemF0aW9uIGRlbWFuZHMgdGhlIGFjdHVhbCBoYXJkd2FyZSB0byBwcm9iZS4gSXQgd2lsbCBlcnJvciBvdXQgd2l0aG91dCB0aGUgZGV2aWNlLgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGRlZXBlci4gSXMgdGhlcmUgKmFueSogZm9ybSBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGF0aDExayBvdXQgdGhlcmU/IEkgbmVlZCB0byBjaGVjayBpZiBzb21lIGNsZXZlciBpbmRpdmlkdWFsIGhhcyBmb3VuZCBhIHdvcmthcm91bmQuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEzMDc9c3RhdGljIGludCBhdGgxMWtfcGNpX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEzMTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzoxMzE4Om1vZHVsZV9pbml0KGF0aDExa19wY2lfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEzMTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxMQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipUaGUgVW5leHBlY3RlZCBJbnRlcnNlY3Rpb24qKgoKSG9sZCBvbiBhIG1pbnV0ZS4uLiBJIHdhcyBqdXN0IGZvY3VzaW5nIG9uIHRoZSBpbnRyaWNhY2llcyBvZiB0aGlzIHdpcmVsZXNzIGNoaXBzZXQsIHNwZWNpZmljYWxseSAqYXRoMTFrKiwgYW5kIG15IG1lbnRhbCBtb2RlbCB3YXMgc29sZWx5IG9uIHRoZSBNQUMgYW5kIFBIWS4gQnV0IHRoZW4gaXQgaGl0IG1lIOKAkyBJIG5lZWQgdG8gcmVhbGx5IGRpZyBiYWNrIGludG8gdGhlIGhhcmR3YXJlIGFyY2hpdGVjdHVyZS4gSXQmIzM5O3Mgbm90IGp1c3QgdGhlIHJhZGlvIGl0c2VsZiB0aGF0IEkgbmVlZCB0byBjb25zaWRlciwgYnV0IHRoZSB1bmRlcmx5aW5nIGluZnJhc3RydWN0dXJlLiBUaGF0IGluaXRpYWwgcXVlc3Rpb24gYWJvdXQgZGF0YSBmbG93IGdvdCBtZSB0aGlua2luZy4gSSB3YXNuJiMzOTt0IGp1c3QgY29uY2VudHJhdGluZyBvbiB0aGUgcHJvdG9jb2xzLgoKU3BlY2lmaWNhbGx5LCBJ4oCZbSByZWFsaXppbmcgbm93IHRoYXQgKmF0aDExayosIHN1cnByaXNpbmdseSwgYWxzbyBpbmNvcnBvcmF0ZXMgc3VwcG9ydCBmb3IgQUhCIChBZHZhbmNlZCBIaWdoLXBlcmZvcm1hbmNlIEJ1cykgYW5kIFNOT0MgKFN5c3RlbSBOZXR3b3JrLW9uLUNoaXApLiBUaGlzIGlzIGEgZ2FtZSBjaGFuZ2VyIGZvciBzZXZlcmFsIHJlYXNvbnMuIEl0IG1lYW5zIHRoZSBkYXRhIHBhdGh3YXlzIGFyZSBtb3JlIGNvbXBsZXggdGhhbiBJIGluaXRpYWxseSBhc3N1bWVkLiBUaGlzIG1lYW5zIEkgbmVlZCB0byByZS1ldmFsdWF0ZSBob3cgdGhlIGRhdGEgZ2V0cyBmcm9tIHRoZSBNQUMgdG8gdGhlIHJhZGlvLiBJIHdhcyBmb2N1c2VkIG9uIHRoZSByYWRpbyBpbnRlcmZhY2UsIGJ1dCBub3cgSSBuZWVkIHRvIGZhY3RvciBpbiBob3cgdGhlIEFIQiBhbmQgU05PQyBhZmZlY3QgbGF0ZW5jeSwgdGhyb3VnaHB1dCwgYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcyB3aXRoaW4gdGhlIHNpbGljb24gaXRzZWxmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BsYXRmb3JtX2RyaXZlcl9yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAyMAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgTmV0d29yayBEcml2ZXIgSXNzdWUqKgoKT2theSwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBsaWtlbHkgc291cmNlIG9mIHRoaXMgcHJvYmxlbS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBkaWdnaW5nIGluIHRoZSBsb3ctbGV2ZWwgc3R1ZmYuIEdpdmVuIHdoYXQgSSYjMzk7bSBzZWVpbmcsIEkmIzM5O20gdGhpbmtpbmcgdGhlIEFIQiBidXMgaW50ZXJhY3Rpb24gaW4gdGhlIGF0aDExayBkcml2ZXIgZmFtaWx5IGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2AgZGlyZWN0b3J5IGFuZCBzZWUgaWYgSSBjYW4gZmluZCBhIGNvcnJlc3BvbmRpbmcgYGFoYi5jYCBmaWxlLCBvciBzb21ldGhpbmcgc2ltaWxhciB0aGF0IGhhbmRsZXMgdGhlIEFIQiBpbnRlcmZhY2Ugd2l0aCB0aGUgY2hpcHNldC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGhvdyBkYXRhIGlzIGJlaW5nIHRyYW5zZmVycmVkLCBhbnkgZXJyb3IgaGFuZGxpbmcgcmVsYXRlZCB0byBidXMgdHJhbnNmZXJzLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGJvdHRsZW5lY2tzIG9yIGluY29ycmVjdCBjb25maWd1cmF0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIHRoZSBwcmVjaXNlIHBvaW50IHdoZXJlIHRoaW5ncyBhcmUgZ29pbmcgd3JvbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YWhiLmMmIzM0OywKICAgICYjMzQ7YWhiLmgmIzM0OywKICAgICYjMzQ7Y2UuYyYjMzQ7LAogICAgJiMzNDtjZS5oJiMzNDssCiAgICAmIzM0O2Nmci5jJiMzNDssCiAgICAmIzM0O2Nmci5oJiMzNDssCiAgICAmIzM0O2NvcmUuYyYjMzQ7LAogICAgJiMzNDtjb3JlLmgmIzM0OywKICAgICYjMzQ7Y29yZWR1bXAuYyYjMzQ7LAogICAgJiMzNDtjb3JlZHVtcC5oJiMzNDssCiAgICAmIzM0O2RicmluZy5jJiMzNDssCiAgICAmIzM0O2RicmluZy5oJiMzNDssCiAgICAmIzM0O2RlYnVnLmMmIzM0OywKICAgICYjMzQ7ZGVidWcuaCYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7ZGVidWdmcy5oJiMzNDssCiAgICAmIzM0O2RlYnVnZnNfaHR0X3N0YXRzLmMmIzM0OywKICAgICYjMzQ7ZGVidWdmc19odHRfc3RhdHMuaCYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzX3N0YS5jJiMzNDssCiAgICAmIzM0O2RlYnVnZnNfc3RhLmgmIzM0OywKICAgICYjMzQ7ZHAuYyYjMzQ7LAogICAgJiMzNDtkcC5oJiMzNDssCiAgICAmIzM0O2RwX3J4LmMmIzM0OywKICAgICYjMzQ7ZHBfcnguaCYjMzQ7LAogICAgJiMzNDtkcF90eC5jJiMzNDssCiAgICAmIzM0O2RwX3R4LmgmIzM0OywKICAgICYjMzQ7ZncuYyYjMzQ7LAogICAgJiMzNDtmdy5oJiMzNDssCiAgICAmIzM0O2hhbC5jJiMzNDssCiAgICAmIzM0O2hhbC5oJiMzNDssCiAgICAmIzM0O2hhbF9kZXNjLmgmIzM0OywKICAgICYjMzQ7aGFsX3J4LmMmIzM0OywKICAgICYjMzQ7aGFsX3J4LmgmIzM0OywKICAgICYjMzQ7aGFsX3R4LmMmIzM0OywKICAgICYjMzQ7aGFsX3R4LmgmIzM0OywKICAgICYjMzQ7aGlmLmgmIzM0OywKICAgICYjMzQ7aHRjLmMmIzM0OywKICAgICYjMzQ7aHRjLmgmIzM0OywKICAgICYjMzQ7aHcuYyYjMzQ7LAogICAgJiMzNDtody5oJiMzNDssCiAgICAmIzM0O21hYy5jJiMzNDssCiAgICAmIzM0O21hYy5oJiMzNDssCiAgICAmIzM0O21oaS5jJiMzNDssCiAgICAmIzM0O21oaS5oJiMzNDssCiAgICAmIzM0O3AycC5jJiMzNDssCiAgICAmIzM0O3AycC5oJiMzNDssCiAgICAmIzM0O3BjaS5jJiMzNDssCiAgICAmIzM0O3BjaS5oJiMzNDssCiAgICAmIzM0O3BjaWMuYyYjMzQ7LAogICAgJiMzNDtwY2ljLmgmIzM0OywKICAgICYjMzQ7cGVlci5jJiMzNDssCiAgICAmIzM0O3BlZXIuaCYjMzQ7LAogICAgJiMzNDtxbWkuYyYjMzQ7LAogICAgJiMzNDtxbWkuaCYjMzQ7LAogICAgJiMzNDtyZWcuYyYjMzQ7LAogICAgJiMzNDtyZWcuaCYjMzQ7LAogICAgJiMzNDtyeF9kZXNjLmgmIzM0OywKICAgICYjMzQ7c3BlY3RyYWwuYyYjMzQ7LAogICAgJiMzNDtzcGVjdHJhbC5oJiMzNDssCiAgICAmIzM0O3Rlc3Rtb2RlLmMmIzM0OywKICAgICYjMzQ7dGVzdG1vZGUuaCYjMzQ7LAogICAgJiMzNDt0aGVybWFsLmMmIzM0OywKICAgICYjMzQ7dGhlcm1hbC5oJiMzNDssCiAgICAmIzM0O3RyYWNlLmMmIzM0OywKICAgICYjMzQ7dHJhY2UuaCYjMzQ7LAogICAgJiMzNDt3bWkuYyYjMzQ7LAogICAgJiMzNDt3bWkuaCYjMzQ7LAogICAgJiMzNDt3b3cuYyYjMzQ7LAogICAgJiMzNDt3b3cuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NjYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgYWhiLmNgJiMzOTtzIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBzbyBgYWhiLmNgIGlzIG9uIHRoZSBzY2VuZS4gSW50ZXJlc3RpbmcuIE15IGluaXRpYWwgZm9jdXMgaXMgd2hhdCBpdCYjMzk7cyByZWdpc3RlcmluZyB3aXRoaW4gdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBuYXR1cmUgb2YgaXRzIHJlZ2lzdHJhdGlvbi4gSXMgdGhpcyBtb2R1bGUgcmVnaXN0ZXJpbmcgYSBzcGVjaWZpYyBkZXZpY2UsIGEgc2VydmljZSwgYSBwYXJ0aWN1bGFyIGludGVycnVwdCBoYW5kbGVyLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIGNvbnRleHQgaXMgY3J1Y2lhbC4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciB0aGUgdHlwaWNhbCByZWdpc3RyYXRpb24gcGF0dGVybnMgSSYjMzk7bSBmYW1pbGlhciB3aXRoIOKAkyB0aGUgY2FsbHMgdG8gYGRldmljZV9yZWdpc3RlcigpYCwgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigpYCwgYGNkZXZfYWRkKClgLCBgcmVxdWVzdF9pcnEoKWAsIGFuZCB0aGUgbGlrZS4gVGhpcyB0ZWxscyB0aGUgd2hvbGUgc3RvcnksIGl0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIApGcm9tIHRoZXJlLCBJIHdhbnQgdG8gYW5hbHl6ZSB0aGUgc3VwcGxpZWQgc3RydWN0dXJlcyBhbmQgdGhlaXIgY29udGVudHM6IHRoZSBkZXZpY2Ugc3RydWN0dXJlLCBjaGFyYWN0ZXIgZGV2aWNlIGRhdGEsIGRyaXZlciBpbmZvcm1hdGlvbiBhbmQgcmVzb3VyY2UgZGF0YSwgaXJxIG51bWJlcnMgYW5kIGZsYWdzLiBUaGF0IHdpbGwgcmV2ZWFsIHRoZSBleGFjdCByZXNvdXJjZXMgYW5kIGludGVyZmFjZXMgdGhhdCBhcmUgYmVpbmcgYnJvdWdodCBpbnRvIHRoZSBzeXN0ZW0uIEtub3dpbmcgdGhlIGRhdGEgd2lsbCBxdWlja2x5IGhlbHAgbWUgdG8gZGV0ZXJtaW5lIGhvdyBpdCYjMzk7cyBpbnRlbmRlZCB0byBpbnRlcmFjdCB3aXRoIG90aGVyIGtlcm5lbCBjb21wb25lbnRzIGFuZCB3aXRoIHVzZXJzcGFjZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGhhbmRsZSBvbiBob3cgdGhpcyB0aGluZyBpcyBiZWhhdmluZywgYXNzdW1pbmcgdGhlcmUgYXJlIG5vIGdsYXJpbmcgYW5vbWFsaWVzIG9yIHRyaWNrcy4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEwOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUgd2UgZ28uCgoqKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIGBjb3JlLmNgLi4uIHdoYXQmIzM5O3MgdGhpcyBmaWxlIGFsbCBhYm91dD8gR2l2ZW4gbXkgZXhwZXJpZW5jZSBpbiBbKlVzZXImIzM5O3MgRmllbGQgb2YgRXhwZXJ0aXNlKl0sIHRoYXQgZmlsZSBuYW1lIHVzdWFsbHkgc2lnbmlmaWVzIGl0JiMzOTtzIGxpa2VseSB0byBjb250YWluIHRoZSBmdW5kYW1lbnRhbCwgY2VudHJhbCBsb2dpYy4gSXQmIzM5O3MgcHJvYmFibHkgdGhlIGhlYXJ0IG9mIHRoaXMgZW50aXJlIHN5c3RlbS4gSSBleHBlY3QgaXQgdG8gaG9sZCB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZXMgYW5kIHRoZSBtYWluIGNvbnRyb2wgZmxvdywgdGhlIHN0dWZmIHRoYXQgbWFrZXMgZXZlcnl0aGluZyB0aWNrLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIGhhdmluZyB0byBkaWcgaW4gZGVlcCBoZXJlLCBsb29raW5nIGZvciBkZXBlbmRlbmNpZXMgb24sIG9yIHJlbGF0aW9uc2hpcHMgd2l0aCwgb3RoZXIgbW9kdWxlcy4gSXQgY291bGQgYmUgYSBzaW1wbGUgZW50cnkgcG9pbnQsIG9yIGEgbWFzc2l2ZSBnb2QtY2xhc3MuIE9ubHkgb25lIHdheSB0byBmaW5kIG91dC4gTGV0JiMzOTtzIGdldCBjcmFja2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMyMgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgYXRoMTFrIERyaXZlciBBcmNoaXRlY3R1cmUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBhdGgxMWtgIGFuZCBpbW1lZGlhdGVseSBJIHNlZSB0d28ga2V5IGZpbGVzOiBgcGNpLmNgIGFuZCBgYWhiLmNgLiAgU2luY2UgSSYjMzk7bSB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLCBteSBndXQgdGVsbHMgbWUgdG8gZ28gc3RyYWlnaHQgZm9yIGBhaGIuY2AgZmlyc3QuICBUaGUgQUhCIGludGVyZmFjZSBpcyBvZnRlbiBzaW1wbGVyIGZvciBwcm9iaW5nLCBhbmQgdGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHlvdSYjMzk7bGwgZmluZCB0aGUgY29yZSBkZXZpY2UgcmVnaXN0cmF0aW9uIHJvdXRpbmVzLiAgTGV0JiMzOTtzIHNlZSBpZiB0aGF0IGFzc3VtcHRpb24gaG9sZHMgdHJ1ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGhvb2tzIGludG8gdGhlIEFIQiBidXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NTcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBBSEIgRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIEFIQiBkcml2ZXIgaXMgYmVpbmcgaW5pdGlhbGl6ZWQuIE15IGZpcnN0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSByZWdpc3RyYXRpb24gcHJvY2Vzcy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgaG93IGBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXJgIGlzIHVzZWQgd2l0aGluIHRoZSBgYWhiLmNgIGZpbGUuIFRoaXMgaXMgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50IGZvciBhIHBsYXRmb3JtIGRyaXZlciwgc28gdW5kZXJzdGFuZGluZyBpdHMgdXNhZ2UgaGVyZSB3aWxsIHF1aWNrbHkgcGFpbnQgYSBwaWN0dXJlIG9mIGhvdyB0aGUgZHJpdmVyIG1ha2VzIGl0c2VsZiBrbm93biB0byB0aGUgc3lzdGVtLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhlIHJlbGV2YW50IHN0cnVjdHVyZXPigJR0aGUgZHJpdmVyIGl0c2VsZiwgYSBsaXN0IG9mIHN1cHBvcnRlZCBkZXZpY2VzLCBhbmQgcGVyaGFwcyBzb21lIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyDigJMgYWxsIGNvbm5lY3RlZCB0aHJvdWdoIHRoaXMgcmVnaXN0cmF0aW9uIGNhbGwuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBkcml2ZXIgYXJjaGl0ZWN0dXJlIGFuZCBob3cgaXQgaG9va3MgaW50byB0aGUgQUhCIGJ1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc5OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipEaXZpbmcgaW50byB0aGUgYGF0aDExa2AgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBgYXRoMTFrYCBkcml2ZXIga2lja3Mgb2ZmLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIGBtb2R1bGVfaW5pdGAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgdGhlIGZ1bmN0aW9uIHdoZXJlIHRoZSBtb2R1bGUgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIHRoZSBrZXJuZWwgYW5kIGdldHMgZXZlcnl0aGluZyBnb2luZy4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBlbnRpcmUgYGF0aDExa2AgZGlyZWN0b3J5LCBub3QganVzdCBhIHNpbmdsZSBmaWxlLiBUaGlzIGlzIGNydWNpYWw7IHNvbWV0aW1lcyBpbml0aWFsaXphdGlvbiBpcyBzcHJlYWQgYWNyb3NzIG11bHRpcGxlIGZpbGVzLCBhbmQgSSBkb24mIzM5O3Qgd2FudCB0byBtaXNzIGFueXRoaW5nIHN1YnRseSBpbXBvcnRhbnQgdGhhdCBtaWdodCBiZSBlbHNld2hlcmUuIEkmIzM5O20gbG9va2luZyBmb3IgKnRoZSogcHJpbWFyeSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9MTMwNz1zdGF0aWMgaW50IGF0aDExa19wY2lfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxNy19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jOjEzMTg6bW9kdWxlX2luaXQoYXRoMTFrX3BjaV9pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1MQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBhIENvZGUgQ29udGV4dCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGFoYi5jYC4gQW5kIG15IGluaXRpYWwgcmVhY3Rpb24/IFdhaXQgYSBtaW51dGUuLi4gdGhhdCBmaWxlbmFtZSBpbW1lZGlhdGVseSB0cmlnZ2VycyBhIGZsYWcuIGBhaGIuY2AuLi4gZG9lcyB0aGF0IG1lYW4gdGhlIEFIQiBidXM/IEFuZCB0aGVuIEkgc2VlIGBhdGgxMWtfYWhiX2luaXRgLiBCaW5nby4gVGhhdCYjMzk7cyBhIGh1Z2UgY2x1ZS4gVGhlIHByZXNlbmNlIG9mIGBhdGgxMWtfYWhiX2luaXRgIGluIHRoaXMgcGFydGljdWxhciBzb3VyY2UgZmlsZSBzdHJvbmdseSBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGluaXRpYWxpemF0aW9uIGNvZGUgcmVsYXRlZCB0byBhbiBBdGhlcm9zIFdpLUZpIGNvbnRyb2xsZXIsIHNwZWNpZmljYWxseSBzb21ldGhpbmcgaW50ZXJhY3Rpbmcgd2l0aCBhbiBBSEIgYnVzIGludGVyZmFjZS4gVGhpcyBpc24mIzM5O3QganVzdCBhIHJhbmRvbSBtb2R1bGUuIFRoZSBgYWhiYCBwYXJ0IG5hcnJvd3MgZG93biB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24gc2lnbmlmaWNhbnRseSwgYW5kIHRoZSBgYXRoMTFrYCBnaXZlcyBtZSBhIGNsZWFyIHZlbmRvciBmb2N1cy4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLiBNeSBoeXBvdGhlc2lzIGlzIHRoaXMgZmlsZSBjb250YWlucyB0aGUgbmVjZXNzYXJ5IGJvb3Qgc3RyYXBwaW5nIGZvciBhbiBhdGgxMWsgZHJpdmVyIG9uIGFuIEFIQiBidXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDExa19haGJfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9NDE2PXN0YXRpYyB2b2lkIGF0aDExa19haGJfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQyMzpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2luaXRfcW1pX2NlX2NvbmZpZyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MTEzOT1zdGF0aWMgaW50IGF0aDExa19haGJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEyMjA6XHRhdGgxMWtfYWhiX2luaXRfcW1pX2NlX2NvbmZpZyhhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyMjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MzQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBNb2R1bGUgSGllcmFyY2h5KioKCkFscmlnaHQsIHNvIGBhdGgxMWtgLCB0aGF0JiMzOTtzIGNsZWFybHkgYSBtb2R1bGUgaW4gdGhlIGtlcm5lbC4gQnV0IGhhbmcgb24gYSBzZWNvbmQsIGNvdWxkIHNvbWUgb2YgaXRzIGNvcmUgZnVuY3Rpb25hbGl0eSwgbWF5YmUgc29tZXRoaW5nIGxpa2UgYGFoYi5jYCwgYmUgYnVpbHQgZGlyZWN0bHkgaW50byBhbm90aGVyIG1vZHVsZT8gVGhhdCB3b3VsZG4mIzM5O3QgYmUgZW50aXJlbHkgdW51c3VhbCwgZGVwZW5kaW5nIG9uIGhvdyB0aGV5JiMzOTt2ZSBzdHJ1Y3R1cmVkIHRoaW5ncy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSBhcmUgbm90IGFzc3VtaW5nIGFueXRoaW5nIGFuZCBjaGVjayB0aGUgcHJvamVjdCBzdHJ1Y3R1cmUuIFRoZSBmaXJzdCBwbGFjZSB0byBnbyBpcyBhbHdheXMgdGhlIGBNYWtlZmlsZWAgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrYCBkaXJlY3RvcnkuIFRoYXQgd2lsbCB0ZWxsIHRoZSB0cnV0aCBhYm91dCB3aGF0IGlzIGJ1aWx0IHdoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0b2JqLSQoQ09ORklHX0FUSDExSykgJiM0Mzs9IGF0aDExay5vXG4gICAzOlx0YXRoMTFrLXkgJiM0Mzs9IGNvcmUubyBcXFxuICAgNDpcdFx0ICAgIGhhbC5vIFxcXG4gICA1Olx0XHQgICAgaGFsX3R4Lm8gXFxcbiAgIDY6XHRcdCAgICBoYWxfcngubyBcXFxuICAgNzpcdFx0ICAgIHdtaS5vIFxcXG4gICA4Olx0XHQgICAgbWFjLm8gXFxcbiAgIDk6XHRcdCAgICByZWcubyBcXFxuICAxMDpcdFx0ICAgIGh0Yy5vIFxcXG4gIDExOlx0XHQgICAgcW1pLm8gXFxcbiAgMTI6XHRcdCAgICBkcC5vICBcXFxuICAxMzpcdFx0ICAgIGRwX3R4Lm8gXFxcbiAgMTQ6XHRcdCAgICBkcF9yeC5vIFxcXG4gIDE1Olx0XHQgICAgZGVidWcubyBcXFxuICAxNjpcdFx0ICAgIGNlLm8gXFxcbiAgMTc6XHRcdCAgICBwZWVyLm8gXFxcbiAgMTg6XHRcdCAgICBkYnJpbmcubyBcXFxuICAxOTpcdFx0ICAgIGh3Lm8gXFxcbiAgMjA6XHRcdCAgICBwY2ljLm8gXFxcbiAgMjE6XHRcdCAgICBmdy5vIFxcXG4gIDIyOlx0XHQgICAgcDJwLm9cbiAgMjM6XHRcbiAgMjQ6XHRhdGgxMWstJChDT05GSUdfQVRIMTFLX0RFQlVHRlMpICYjNDM7PSBkZWJ1Z2ZzLm8gZGVidWdmc19odHRfc3RhdHMubyBkZWJ1Z2ZzX3N0YS5vXG4gIDI1Olx0YXRoMTFrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG4gIDI2Olx0YXRoMTFrLSQoQ09ORklHX0FUSDExS19UUkFDSU5HKSAmIzQzOz0gdHJhY2Uub1xuICAyNzpcdGF0aDExay0kKENPTkZJR19USEVSTUFMKSAmIzQzOz0gdGhlcm1hbC5vXG4gIDI4Olx0YXRoMTFrLSQoQ09ORklHX0FUSDExS19TUEVDVFJBTCkgJiM0Mzs9IHNwZWN0cmFsLm9cbiAgMjk6XHRhdGgxMWstJChDT05GSUdfUE0pICYjNDM7PSB3b3cub1xuICAzMDpcdGF0aDExay0kKENPTkZJR19ERVZfQ09SRURVTVApICYjNDM7PSBjb3JlZHVtcC5vXG4gIDMxOlx0YXRoMTFrLSQoQ09ORklHX0FUSDExS19DRlIpICYjNDM7PSBjZnIub1xuICAzMjpcdFxuICAzMzpcdG9iai0kKENPTkZJR19BVEgxMUtfQUhCKSAmIzQzOz0gYXRoMTFrX2FoYi5vXG4gIDM0Olx0YXRoMTFrX2FoYi15ICYjNDM7PSBhaGIub1xuICAzNTpcdFxuICAzNjpcdG9iai0kKENPTkZJR19BVEgxMUtfUENJKSAmIzQzOz0gYXRoMTFrX3BjaS5vXG4gIDM3Olx0YXRoMTFrX3BjaS15ICYjNDM7PSBtaGkubyBwY2kub1xuICAzODpcdFxuICAzOTpcdCMgZm9yIHRyYWNpbmcgZnJhbWV3b3JrIHRvIGZpbmQgdHJhY2UuaFxuICA0MDpcdENGTEFHU190cmFjZS5vIDo9IC1JJChzcmMpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MzEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYXRoMTFrIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhlIGBhdGgxMWtgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgYXRoMTFrX2FoYmAgYW5kIGBhdGgxMWtfcGNpYCBtb2R1bGVzLCBhbmQgaXQgbG9va3MgbGlrZSB0aGV5IGFyZSBzZXBhcmF0ZSBmcm9tIHRoZSBjb3JlIGBhdGgxMWtgIG1vZHVsZSwgYnV0IHRoZSBgbWFjLmNgIGNvZGUgaXMgYWN0dWFsbHkgcGFydCBvZiB0aGF0IGNvcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIEkgZXZlbiBmdXp6IHRoaXMgdGhpbmcgd2l0aGluIFFFTVU/IFRoaXMgaXMgYSBkcml2ZXIsIHJpZ2h0PyBEZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCBwaHlzaWNhbCBoYXJkd2FyZSB2aWEgUENJIG9yIEFIQi4gSG1tLCBubyBvYnZpb3VzIHNvZnR3YXJlIGVtdWxhdGlvbiBpcyBwcmVzZW50IGxpa2UgeW91IHNlZSB3aXRoIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZoY2lgIGZvciBVU0IuIFRoYXTigJlzIGEgcHJvYmxlbS4gSSBjYW4mIzM5O3QgdGhpbmsgb2YgYSBjbGVhbiB3YXkgdG8gcmVhY2ggdGhpcyBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IHNvbWUga2luZCBvZiByZWFsIGhhcmR3YXJlIHByZXNlbnQuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIHRob3VnaC4gSXQmIzM5O3MgYWx3YXlzIHdvcnRoIGEgdGhvcm91Z2ggc2VhcmNoLiBBcmUgdGhlcmUgYW55IHZpcnR1YWwgZHJpdmVycyBvciBhbnkgdGVzdCBtb2RlcyB0aGF0IG1pZ2h0IHByb3ZpZGUgYSBob29rPyBJIHNob3VsZCB0cmFjZSB0aGUgY2FsbCBjaGFpbi4gV2hlcmUgaXMgYGF0aDExa19tYWNfc2V0dXBfY2hhbm5lbHNfcmF0ZXNgIGNhbGxlZCBmcm9tPyBLbm93aW5nIHRoZSBjYWxsIGNoYWluIGNvdWxkIHBvdGVudGlhbGx5IGV4cG9zZSBhbiBlbnRyeSBwb2ludCB0byB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfbWFjX3NldHVwX2NoYW5uZWxzX3JhdGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMDE0Mz1zdGF0aWMgdTMyIGF0aDExa19nZXRfcGh5X2lkKHN0cnVjdCBhdGgxMWsgKmFyLCB1MzIgYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwMTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDE1OTpzdGF0aWMgaW50IGF0aDExa19tYWNfc2V0dXBfY2hhbm5lbHNfcmF0ZXMoc3RydWN0IGF0aDExayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwMTYwLVx0XHRcdFx0XHQgICB1MzIgc3VwcG9ydGVkX2JhbmRzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM9MTA0NTE9c3RhdGljIGludCBfX2F0aDExa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDExayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDQ3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTA0NzY6XHRyZXQgPSBhdGgxMWtfbWFjX3NldHVwX2NoYW5uZWxzX3JhdGVzKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDQ3Ny1cdFx0XHRcdFx0ICAgICAgY2FwLVx1MDAzZXN1cHBvcnRlZF9iYW5kcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0MzAKCQkJCQkJCW91dHB1dDogOTcKCQkJCQkJCXRob3VnaHRzOiAyMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBnaXZlbiB0aGlzIGZ1bmN0aW9uLCBgX19hdGgxMWtfbWFjX3JlZ2lzdGVyYCwgYW5kIHRoZSBpbml0aWFsIHJlYWN0aW9uIGlzICYjMzQ7SG1tLCBjb3VsZCB0aGlzIGJlIGEgZnV6emluZyB0YXJnZXQ/JiMzNDsgQnV0IGxldCYjMzk7cyBicmVhayBpdCBkb3duLCBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hhdCBJIGRvLgoKRmlyc3QsIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIHdoZXJlIHRoaXMgY2FsbCByZXNpZGVzLCBleHBsaWNpdGx5IHJlcXVpcmVzIGEgUENJIG9yIEFIQiBkZXZpY2UgdG8gcHJvYmUuIFJpZ2h0IGF3YXksIHRoYXQmIzM5O3MgYSByZWQgZmxhZy4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IGFueSBjb2RlIHBhdGggY29udGluZ2VudCBvbiB0aGF0IGtpbmQgb2YgKmFjdHVhbCogaGFyZHdhcmUgaXMgZ29pbmcgdG8gYmUgdmlydHVhbGx5IGltcG9zc2libGUgdG8gdHJpZ2dlciBpbiBhbnkgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkgb3IgUUVNVS4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgKnJlYWwqIGhhcmR3YXJlIHJlcXVpcmVtZW50cywgbm90IGVtdWxhdGVkLgoKVGhlbiwgdGhlcmUmIzM5O3MgdGhlIGRlZmluaXRpdmUgZ3VpZGFuY2U6IGlmIHRoZSBwYXRjaCYjMzk7cyBzY29wZSBpcyByZXN0cmljdGVkIHRvIGNvZGUgdGhhdCYjMzk7cyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIHRob3NlIHZpcnR1YWxpemVkIHNldHVwcywgb3IgaW52b2x2ZXMgc3BlY2lhbGl6ZWQgaGFyZHdhcmUsIHRoZW4gaXTigJlzIGEgJiMzNDtuby1nbyYjMzQ7IGZvciBmdXp6aW5nLiBTcGVjaWZpY2FsbHksIHRoZXkgY2FsbCBvdXQgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgdGhhdCBuZWVkIHBoeXNpY2FsIFBDSWUgY2FyZHMgd2hpY2ggYXJlICpub3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQmIzM5O3MgdGhlIGtleS4KCk5vdywgbG9va2luZyBhdCBgYXRoMTFrYCBzcGVjaWZpY2FsbHksIEkgcmVjb2duaXplIHRoYXQgdGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIsIFF1YWxjb21tLCBhbmQsIGJlaW5nIGEgV2ktRmkgZHJpdmVyLCB0aGlzIGlzIGV4cGVjdGVkIHRvIHVzZSBlaXRoZXIgUENJZSBvciBBSEIgaGFyZHdhcmUgZm9yIGl0cyBvcGVyYXRpb24uIEFuZCB0aGUga2lja2VyPyBJdCAqcmVxdWlyZXMqIHRoaXMgcGh5c2ljYWwgaGFyZHdhcmUuIFN0YW5kYXJkIFFFTVUsIGFzIHdlIGtub3csIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhpcyBzdHVmZiBwcm9wZXJseSwgaWYgYXQgYWxsLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGUgaW5oZXJlbnQgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIEkgaGF2ZSwgSSBjb25jbHVkZSB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIG5vdCB3b3J0aCBmdXp6aW5nLiBJdCYjMzk7cyBhIG5vbi1zdGFydGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgZm9yIFF1YWxjb21tIGhhcmR3YXJlLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIG9yIEFIQiBoYXJkd2FyZSB0byBwcm9iZSBhbmQgaW5pdGlhbGl6ZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFdpLUZpIGRyaXZlciBmb3IgUXVhbGNvbW0gaGFyZHdhcmUuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgb3IgQUhCIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBpbml0aWFsaXplLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6MjEuODY3ODgyNzc2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEzNTQzNjY4NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyIGZvciBRdWFsY29tbSBoYXJkd2FyZS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBvciBBSEIgaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGluaXRpYWxpemUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE1OjI1OjIxLjg2Nzg5MDAxNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAyMDg0MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDQwYWY4NjI2MmU0MTZkMzVmNTFhYzZhMTQ2YzY1ZmIxNzhhNmE4Y1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxNSAxNToyNToyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbmluZGV4IDJkNTVjZGM0ZDE2NWQuLmUyM2EyOTVmOWE3ZjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcXG5AQCAtMTAxNzIsNiArMTAxNzIsMTUgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX3NldHVwX2NoYW5uZWxzX3JhdGVzKHN0cnVjdCBhdGgxMWsgKmFyLFxcbiBcXHRyZWdfY2FwID0gXFx1MDAyNmFyLVxcdTAwM2VhYi1cXHUwMDNlaGFsX3JlZ19jYXBbYXItXFx1MDAzZXBkZXZfaWR4XTtcXG4gXFx0dGVtcF9yZWdfY2FwID0gcmVnX2NhcDtcXG4gXFxuK1xcdC8qIFFDTjYxMjIgZmlybXdhcmUgb21pdHMgdGhlIFVOSUktMyBiYW5kICg1NzI1LTU4NTAgTUh6LCBjaGFubmVsc1xcbitcXHQgKiAxNDktMTY1KSBmcm9tIGhpZ2hfNWdoel9jaGFuLCB3aGljaCBtYWtlcyB0aGUgZHJpdmVyIG1hcmsgdGhvc2VcXG4rXFx0ICogY2hhbm5lbHMgSUVFRTgwMjExX0NIQU5fRElTQUJMRUQuIENsYW1wIGl0IHRvIHRoZSBzdGFuZGFyZCA1LjggR0h6XFxuK1xcdCAqIHVwcGVyIGJvdW5kIHNvIGNoYW5uZWxzIDE0OS0xNjUgcmVtYWluIHVzYWJsZS5cXG4rXFx0ICovXFxuK1xcdGlmIChhci1cXHUwMDNlYWItXFx1MDAzZWh3X3JldiA9PSBBVEgxMUtfSFdfUUNONjEyMl9IVzEwIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICByZWdfY2FwLVxcdTAwM2VoaWdoXzVnaHpfY2hhbiBcXHUwMDNjIDU4MjUpXFxuK1xcdFxcdHJlZ19jYXAtXFx1MDAzZWhpZ2hfNWdoel9jaGFuID0gNTgyNTtcXG4rXFxuIFxcdGlmIChzdXBwb3J0ZWRfYmFuZHMgXFx1MDAyNiBXTUlfSE9TVF9XTEFOXzJHX0NBUCkge1xcbiBcXHRcXHRjaGFubmVscyA9IGttZW1kdXAoYXRoMTFrXzJnaHpfY2hhbm5lbHMsXFxuIFxcdFxcdFxcdFxcdCAgIHNpemVvZihhdGgxMWtfMmdoel9jaGFubmVscyksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE1OjI1OjIyLjI3MTA4NDUxNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUwOTUxMTM2NjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyIGZvciBRdWFsY29tbSBoYXJkd2FyZS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBvciBBSEIgaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGluaXRpYWxpemUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ0MGFmODYyNjJlNDE2ZDM1ZjUxYWM2YTE0NmM2NWZiMTc4YTZhOGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxNSAxNToyNToyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5pbmRleCAyZDU1Y2RjNGQxNjVkLi5lMjNhMjk1ZjlhN2Y4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuQEAgLTEwMTcyLDYgKzEwMTcyLDE1IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19zZXR1cF9jaGFubmVsc19yYXRlcyhzdHJ1Y3QgYXRoMTFrICphcixcbiBcdHJlZ19jYXAgPSBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VoYWxfcmVnX2NhcFthci1cdTAwM2VwZGV2X2lkeF07XG4gXHR0ZW1wX3JlZ19jYXAgPSByZWdfY2FwO1xuIFxuK1x0LyogUUNONjEyMiBmaXJtd2FyZSBvbWl0cyB0aGUgVU5JSS0zIGJhbmQgKDU3MjUtNTg1MCBNSHosIGNoYW5uZWxzXG4rXHQgKiAxNDktMTY1KSBmcm9tIGhpZ2hfNWdoel9jaGFuLCB3aGljaCBtYWtlcyB0aGUgZHJpdmVyIG1hcmsgdGhvc2VcbitcdCAqIGNoYW5uZWxzIElFRUU4MDIxMV9DSEFOX0RJU0FCTEVELiBDbGFtcCBpdCB0byB0aGUgc3RhbmRhcmQgNS44IEdIelxuK1x0ICogdXBwZXIgYm91bmQgc28gY2hhbm5lbHMgMTQ5LTE2NSByZW1haW4gdXNhYmxlLlxuK1x0ICovXG4rXHRpZiAoYXItXHUwMDNlYWItXHUwMDNlaHdfcmV2ID09IEFUSDExS19IV19RQ042MTIyX0hXMTAgXHUwMDI2XHUwMDI2XG4rXHQgICAgcmVnX2NhcC1cdTAwM2VoaWdoXzVnaHpfY2hhbiBcdTAwM2MgNTgyNSlcbitcdFx0cmVnX2NhcC1cdTAwM2VoaWdoXzVnaHpfY2hhbiA9IDU4MjU7XG4rXG4gXHRpZiAoc3VwcG9ydGVkX2JhbmRzIFx1MDAyNiBXTUlfSE9TVF9XTEFOXzJHX0NBUCkge1xuIFx0XHRjaGFubmVscyA9IGttZW1kdXAoYXRoMTFrXzJnaHpfY2hhbm5lbHMsXG4gXHRcdFx0XHQgICBzaXplb2YoYXRoMTFrXzJnaHpfY2hhbm5lbHMpLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6MjIuMjcxMDg2MzU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3NDg0OTUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBRdWFsY29tbSBXaS1GaSA2IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIGJlZW4gYXBwbGllZCB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY2AuIFNlZW1zIGxpa2UgdGhleSdyZSBwdXR0aW5nIGluIGEgd29ya2Fyb3VuZCDigJMgc3BlY2lmaWNhbGx5IGZvciBRQ042MTIyIGZpcm13YXJlIHRoYXQncyBhcHBhcmVudGx5IGRyb3BwaW5nIHRoZSBVTklJLTMgYmFuZC4gVGhlIGNvZGUgaXMgY2hlY2tpbmcgdGhlIGhhcmR3YXJlIHJldmlzaW9uLCBgYXItXHUwMDNlYWItXHUwMDNlaHdfcmV2ID09IEFUSDExS19IV19RQ042MTIyX0hXMTBgLCBhbmQgdGhlbiBhZGp1c3RpbmcgYHJlZ19jYXAtXHUwMDNlaGlnaF81Z2h6X2NoYW5gLiBTdGFuZGFyZCBiYW5kIGxpbWl0YXRpb24gd29yayBhcm91bmQuXG5cbldhaXQgYSBzZWNvbmTigKYgYGF0aDExa2AuIFJpZ2h0LCB0aGF0J3MgdGhlIFF1YWxjb21tIFdpLUZpIDYgZHJpdmVyLiBOb3csIGlzIHRoaXMgZHJpdmVyIGVtdWxhdGVkIGluIFFFTVU/IEknbSBwcmV0dHkgc3VyZSBpdCdzIG5vdC4gYGF0aDExa2AgaXMgdHlwaWNhbGx5IHVzZWQgd2l0aCBwaHlzaWNhbCBQQ0llLCBBSEIsIG9yIFNOT0MgV2ktRmkgY2FyZHMuXG5cblRoaXMgc3BhcmtzIGFuIGludGVyZXN0aW5nIHRob3VnaHQuIFNpbmNlIGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCBoYXJkd2FyZSwgSSB3b25kZXIgYWJvdXQgZnV6emluZyBpdC4gQ2FuIHdlIHVzZSB0aGUgcGh5c2ljYWwgZHJpdmVyIHRvIGluZHVjZSB1bmV4cGVjdGVkIGJlaGF2aW91cj9cblxuTGV0J3Mgc2VlIGlmIHRoZXJlJ3MgKmFueSoga2luZCBvZiBzaW11bGF0ZWQgaGFyZHdhcmUgc3VwcG9ydCBmb3IgYGF0aDExa2AuIEknbGwgZG8gYSBxdWljayBzZWFyY2ggd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9gIGRpcmVjdG9yeS4gTWF5YmUgdGhlcmUncyBhIHZpcnR1YWwgaW50ZXJmYWNlIG9yIHNvbWV0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyMywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE1OjI1OjI2Ljg0NTkzOTM4M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTQzOTAyNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjODAyMTFfaHdzaW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE1OjI1OjI2Ljg5NTM4NTY0OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3Njc2NTg1NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYGF0aDExa2AgRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBuYXR1cmUgb2YgdGhlIGBhdGgxMWtgIGRyaXZlci4gVGhlIG9idmlvdXMgZmlyc3Qgc3RlcCBpcyB0byBhc2NlcnRhaW4gaWYgaXQncyBhIFBDSSBkcml2ZXIuIFRoaXMgaXMgYSBjcnVjaWFsIGZvdW5kYXRpb25hbCBwb2ludDsgdW5kZXJzdGFuZGluZyB0aGUgYnVzIGludGVyZmFjZSBpcyBmdW5kYW1lbnRhbCB0byBhbnkgZnVydGhlciBhbmFseXNpcy4gSSBuZWVkIHRvIGtub3cgaWYgaXQncyBpbnRlcmFjdGluZyBkaXJlY3RseSB3aXRoIHRoZSBQQ0kgYnVzLiBUaGlzIGRldGVybWluZXMgdGhlIGtpbmQgb2YgcmVzb3VyY2VzIHRoZSBkcml2ZXIgaXMgbWFuYWdpbmcgYW5kIHdoYXQga2luZCBvZiBpbnRlcnJ1cHQvRE1BIGNvbmZpZ3VyYXRpb25zIEkgY2FuIGV4cGVjdC4gQSBxdWljayBjb25maXJtYXRpb24gaGVyZSB3aWxsIHN0ZWVyIHRoZSByZXN0IG9mIG15IGludmVzdGlnYXRpb24uIExldCdzIHNlZS4uLiB0aGUgYGF0aDExa2AgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgYSBjb25uZWN0aW9uIHdpdGggQXRoZXJvcywgYnV0IHRoYXQgZG9lc24ndCBkZWZpbml0aXZlbHkgdGVsbCBtZSBhYm91dCB0aGUgaGFyZHdhcmUgaW50ZXJmYWNlLiBHb3R0YSBjb25maXJtIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNToyOS42NjMwNDY4NDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4NzUyNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEzMDc9c3RhdGljIGludCBhdGgxMWtfcGNpX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jOjEzMTE6XFx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2YXRoMTFrX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxMi1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNToyOS43MTE5MzA3ODJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODQ0Nzk4MjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU2l0dWF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBQQ0kgZHJpdmVyLCBjbGVhcmx5IG1lYW50IHRvIGludGVyYWN0IGRpcmVjdGx5IHdpdGggcGh5c2ljYWwgaGFyZHdhcmUuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gYnVybmluZyBpbiBteSBtaW5kIGlzOiBjYW4gSSBldmVuICp0b3VjaCogdGhpcyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IE15IHBhc3QgZXhwZXJpZW5jZSBzaG91dHMgXCJ1c3VhbGx5IG5vLlwiIFRoaW5rIGFib3V0IHlvdXIgc3RhbmRhcmQgV2ktRmkgZHJpdmVycyBsaWtlIGF0aDExaywgaXdsd2lmaSwgb3IgbXQ3NiDigJMgdGhleSdyZSBub3QgZ2VuZXJhbGx5IGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBUaGV5IGRlbWFuZCB0aGUgcmVhbCBkZWFsLlxuXG5UaGVuIGEgZmxpY2tlciBvZiBob3BlLiBJIHJlY2FsbCBzeXprYWxsZXIgaGFzIHNvbWUgbWVjaGFuaXNtcyB0byBmdXp6IHRoZSBXaS1GaSBzdGFjayB2aWEgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHRoYXQgZm9jdXNlcyBvbiB0aGUgYG1hYzgwMjExYCBjb3JlLiBUaGUgcmVhbCBjaGFsbGVuZ2UgY29tZXMgd2l0aCBzcGVjaWZpYyBkcml2ZXJzLiBGb3IgYW4gYXRoMTFrIGRyaXZlciwgaW5pdGlhbGl6YXRpb24gZGVtYW5kcyB0aGUgYWN0dWFsIGhhcmR3YXJlIHRvIHByb2JlLiBJdCB3aWxsIGVycm9yIG91dCB3aXRob3V0IHRoZSBkZXZpY2UuXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBkZWVwZXIuIElzIHRoZXJlICphbnkqIGZvcm0gb2Ygc29mdHdhcmUgZW11bGF0aW9uIGZvciBhdGgxMWsgb3V0IHRoZXJlPyBJIG5lZWQgdG8gY2hlY2sgaWYgc29tZSBjbGV2ZXIgaW5kaXZpZHVhbCBoYXMgZm91bmQgYSB3b3JrYXJvdW5kLiBMZXQncyBzZWUgd2hhdCdzIGF2YWlsYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE2NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNTozMy41NTY3MzI1NjlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1MDIxNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz0xMzA3PXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEzMTctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTMxODptb2R1bGVfaW5pdChhdGgxMWtfcGNpX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6MzMuNjA2MjQwNjk0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzNDM0NzY0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKlRoZSBVbmV4cGVjdGVkIEludGVyc2VjdGlvbioqXG5cbkhvbGQgb24gYSBtaW51dGUuLi4gSSB3YXMganVzdCBmb2N1c2luZyBvbiB0aGUgaW50cmljYWNpZXMgb2YgdGhpcyB3aXJlbGVzcyBjaGlwc2V0LCBzcGVjaWZpY2FsbHkgKmF0aDExayosIGFuZCBteSBtZW50YWwgbW9kZWwgd2FzIHNvbGVseSBvbiB0aGUgTUFDIGFuZCBQSFkuIEJ1dCB0aGVuIGl0IGhpdCBtZSDigJMgSSBuZWVkIHRvIHJlYWxseSBkaWcgYmFjayBpbnRvIHRoZSBoYXJkd2FyZSBhcmNoaXRlY3R1cmUuIEl0J3Mgbm90IGp1c3QgdGhlIHJhZGlvIGl0c2VsZiB0aGF0IEkgbmVlZCB0byBjb25zaWRlciwgYnV0IHRoZSB1bmRlcmx5aW5nIGluZnJhc3RydWN0dXJlLiBUaGF0IGluaXRpYWwgcXVlc3Rpb24gYWJvdXQgZGF0YSBmbG93IGdvdCBtZSB0aGlua2luZy4gSSB3YXNuJ3QganVzdCBjb25jZW50cmF0aW5nIG9uIHRoZSBwcm90b2NvbHMuXG5cblNwZWNpZmljYWxseSwgSeKAmW0gcmVhbGl6aW5nIG5vdyB0aGF0ICphdGgxMWsqLCBzdXJwcmlzaW5nbHksIGFsc28gaW5jb3Jwb3JhdGVzIHN1cHBvcnQgZm9yIEFIQiAoQWR2YW5jZWQgSGlnaC1wZXJmb3JtYW5jZSBCdXMpIGFuZCBTTk9DIChTeXN0ZW0gTmV0d29yay1vbi1DaGlwKS4gVGhpcyBpcyBhIGdhbWUgY2hhbmdlciBmb3Igc2V2ZXJhbCByZWFzb25zLiBJdCBtZWFucyB0aGUgZGF0YSBwYXRod2F5cyBhcmUgbW9yZSBjb21wbGV4IHRoYW4gSSBpbml0aWFsbHkgYXNzdW1lZC4gVGhpcyBtZWFucyBJIG5lZWQgdG8gcmUtZXZhbHVhdGUgaG93IHRoZSBkYXRhIGdldHMgZnJvbSB0aGUgTUFDIHRvIHRoZSByYWRpby4gSSB3YXMgZm9jdXNlZCBvbiB0aGUgcmFkaW8gaW50ZXJmYWNlLCBidXQgbm93IEkgbmVlZCB0byBmYWN0b3IgaW4gaG93IHRoZSBBSEIgYW5kIFNOT0MgYWZmZWN0IGxhdGVuY3ksIHRocm91Z2hwdXQsIGFuZCBwb3RlbnRpYWwgYm90dGxlbmVja3Mgd2l0aGluIHRoZSBzaWxpY29uIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcxMSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE1OjI1OjM3LjI0MDU5MTcyMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5ODg0NzUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6MzcuMjg5NTg4OTY2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NzA3ODY1NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgTmV0d29yayBEcml2ZXIgSXNzdWUqKlxuXG5Pa2F5LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGxpa2VseSBzb3VyY2Ugb2YgdGhpcyBwcm9ibGVtLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIGRpZ2dpbmcgaW4gdGhlIGxvdy1sZXZlbCBzdHVmZi4gR2l2ZW4gd2hhdCBJJ20gc2VlaW5nLCBJJ20gdGhpbmtpbmcgdGhlIEFIQiBidXMgaW50ZXJhY3Rpb24gaW4gdGhlIGF0aDExayBkcml2ZXIgZmFtaWx5IGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYCBkaXJlY3RvcnkgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIGEgY29ycmVzcG9uZGluZyBgYWhiLmNgIGZpbGUsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRoYXQgaGFuZGxlcyB0aGUgQUhCIGludGVyZmFjZSB3aXRoIHRoZSBjaGlwc2V0LiBGcm9tIHRoZXJlLCBJJ2xsIG5lZWQgdG8gbG9vayBhdCBob3cgZGF0YSBpcyBiZWluZyB0cmFuc2ZlcnJlZCwgYW55IGVycm9yIGhhbmRsaW5nIHJlbGF0ZWQgdG8gYnVzIHRyYW5zZmVycywgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBib3R0bGVuZWNrcyBvciBpbmNvcnJlY3QgY29uZmlndXJhdGlvbnMuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIHRoZSBwcmVjaXNlIHBvaW50IHdoZXJlIHRoaW5ncyBhcmUgZ29pbmcgd3JvbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMjAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNTo0MC4xNjAzNzgyMTNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM3OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJhaGIuY1wiLFxuICAgIFwiYWhiLmhcIixcbiAgICBcImNlLmNcIixcbiAgICBcImNlLmhcIixcbiAgICBcImNmci5jXCIsXG4gICAgXCJjZnIuaFwiLFxuICAgIFwiY29yZS5jXCIsXG4gICAgXCJjb3JlLmhcIixcbiAgICBcImNvcmVkdW1wLmNcIixcbiAgICBcImNvcmVkdW1wLmhcIixcbiAgICBcImRicmluZy5jXCIsXG4gICAgXCJkYnJpbmcuaFwiLFxuICAgIFwiZGVidWcuY1wiLFxuICAgIFwiZGVidWcuaFwiLFxuICAgIFwiZGVidWdmcy5jXCIsXG4gICAgXCJkZWJ1Z2ZzLmhcIixcbiAgICBcImRlYnVnZnNfaHR0X3N0YXRzLmNcIixcbiAgICBcImRlYnVnZnNfaHR0X3N0YXRzLmhcIixcbiAgICBcImRlYnVnZnNfc3RhLmNcIixcbiAgICBcImRlYnVnZnNfc3RhLmhcIixcbiAgICBcImRwLmNcIixcbiAgICBcImRwLmhcIixcbiAgICBcImRwX3J4LmNcIixcbiAgICBcImRwX3J4LmhcIixcbiAgICBcImRwX3R4LmNcIixcbiAgICBcImRwX3R4LmhcIixcbiAgICBcImZ3LmNcIixcbiAgICBcImZ3LmhcIixcbiAgICBcImhhbC5jXCIsXG4gICAgXCJoYWwuaFwiLFxuICAgIFwiaGFsX2Rlc2MuaFwiLFxuICAgIFwiaGFsX3J4LmNcIixcbiAgICBcImhhbF9yeC5oXCIsXG4gICAgXCJoYWxfdHguY1wiLFxuICAgIFwiaGFsX3R4LmhcIixcbiAgICBcImhpZi5oXCIsXG4gICAgXCJodGMuY1wiLFxuICAgIFwiaHRjLmhcIixcbiAgICBcImh3LmNcIixcbiAgICBcImh3LmhcIixcbiAgICBcIm1hYy5jXCIsXG4gICAgXCJtYWMuaFwiLFxuICAgIFwibWhpLmNcIixcbiAgICBcIm1oaS5oXCIsXG4gICAgXCJwMnAuY1wiLFxuICAgIFwicDJwLmhcIixcbiAgICBcInBjaS5jXCIsXG4gICAgXCJwY2kuaFwiLFxuICAgIFwicGNpYy5jXCIsXG4gICAgXCJwY2ljLmhcIixcbiAgICBcInBlZXIuY1wiLFxuICAgIFwicGVlci5oXCIsXG4gICAgXCJxbWkuY1wiLFxuICAgIFwicW1pLmhcIixcbiAgICBcInJlZy5jXCIsXG4gICAgXCJyZWcuaFwiLFxuICAgIFwicnhfZGVzYy5oXCIsXG4gICAgXCJzcGVjdHJhbC5jXCIsXG4gICAgXCJzcGVjdHJhbC5oXCIsXG4gICAgXCJ0ZXN0bW9kZS5jXCIsXG4gICAgXCJ0ZXN0bW9kZS5oXCIsXG4gICAgXCJ0aGVybWFsLmNcIixcbiAgICBcInRoZXJtYWwuaFwiLFxuICAgIFwidHJhY2UuY1wiLFxuICAgIFwidHJhY2UuaFwiLFxuICAgIFwid21pLmNcIixcbiAgICBcIndtaS5oXCIsXG4gICAgXCJ3b3cuY1wiLFxuICAgIFwid293LmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6NDAuMTYwNTEyOTkzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjMwNDk4MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGBhaGIuY2AncyBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBgYWhiLmNgIGlzIG9uIHRoZSBzY2VuZS4gSW50ZXJlc3RpbmcuIE15IGluaXRpYWwgZm9jdXMgaXMgd2hhdCBpdCdzIHJlZ2lzdGVyaW5nIHdpdGhpbiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIG5hdHVyZSBvZiBpdHMgcmVnaXN0cmF0aW9uLiBJcyB0aGlzIG1vZHVsZSByZWdpc3RlcmluZyBhIHNwZWNpZmljIGRldmljZSwgYSBzZXJ2aWNlLCBhIHBhcnRpY3VsYXIgaW50ZXJydXB0IGhhbmRsZXIsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgY29udGV4dCBpcyBjcnVjaWFsLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIHR5cGljYWwgcmVnaXN0cmF0aW9uIHBhdHRlcm5zIEknbSBmYW1pbGlhciB3aXRoIOKAkyB0aGUgY2FsbHMgdG8gYGRldmljZV9yZWdpc3RlcigpYCwgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigpYCwgYGNkZXZfYWRkKClgLCBgcmVxdWVzdF9pcnEoKWAsIGFuZCB0aGUgbGlrZS4gVGhpcyB0ZWxscyB0aGUgd2hvbGUgc3RvcnksIGl0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZC4gXG5Gcm9tIHRoZXJlLCBJIHdhbnQgdG8gYW5hbHl6ZSB0aGUgc3VwcGxpZWQgc3RydWN0dXJlcyBhbmQgdGhlaXIgY29udGVudHM6IHRoZSBkZXZpY2Ugc3RydWN0dXJlLCBjaGFyYWN0ZXIgZGV2aWNlIGRhdGEsIGRyaXZlciBpbmZvcm1hdGlvbiBhbmQgcmVzb3VyY2UgZGF0YSwgaXJxIG51bWJlcnMgYW5kIGZsYWdzLiBUaGF0IHdpbGwgcmV2ZWFsIHRoZSBleGFjdCByZXNvdXJjZXMgYW5kIGludGVyZmFjZXMgdGhhdCBhcmUgYmVpbmcgYnJvdWdodCBpbnRvIHRoZSBzeXN0ZW0uIEtub3dpbmcgdGhlIGRhdGEgd2lsbCBxdWlja2x5IGhlbHAgbWUgdG8gZGV0ZXJtaW5lIGhvdyBpdCdzIGludGVuZGVkIHRvIGludGVyYWN0IHdpdGggb3RoZXIga2VybmVsIGNvbXBvbmVudHMgYW5kIHdpdGggdXNlcnNwYWNlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgaGFuZGxlIG9uIGhvdyB0aGlzIHRoaW5nIGlzIGJlaGF2aW5nLCBhc3N1bWluZyB0aGVyZSBhcmUgbm8gZ2xhcmluZyBhbm9tYWxpZXMgb3IgdHJpY2tzLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6NDc2NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNTo0NC4yODM1NjYyODhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MzA0OTY1MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6NDQuNTY2NjIzMjM4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDUwMDYwNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUgd2UgZ28uXG5cbioqTmF2aWdhdGluZyB0aGUgQ29kZWJhc2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIGBjb3JlLmNgLi4uIHdoYXQncyB0aGlzIGZpbGUgYWxsIGFib3V0PyBHaXZlbiBteSBleHBlcmllbmNlIGluIFsqVXNlcidzIEZpZWxkIG9mIEV4cGVydGlzZSpdLCB0aGF0IGZpbGUgbmFtZSB1c3VhbGx5IHNpZ25pZmllcyBpdCdzIGxpa2VseSB0byBjb250YWluIHRoZSBmdW5kYW1lbnRhbCwgY2VudHJhbCBsb2dpYy4gSXQncyBwcm9iYWJseSB0aGUgaGVhcnQgb2YgdGhpcyBlbnRpcmUgc3lzdGVtLiBJIGV4cGVjdCBpdCB0byBob2xkIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgdGhlIG1haW4gY29udHJvbCBmbG93LCB0aGUgc3R1ZmYgdGhhdCBtYWtlcyBldmVyeXRoaW5nIHRpY2suIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBoYXZpbmcgdG8gZGlnIGluIGRlZXAgaGVyZSwgbG9va2luZyBmb3IgZGVwZW5kZW5jaWVzIG9uLCBvciByZWxhdGlvbnNoaXBzIHdpdGgsIG90aGVyIG1vZHVsZXMuIEl0IGNvdWxkIGJlIGEgc2ltcGxlIGVudHJ5IHBvaW50LCBvciBhIG1hc3NpdmUgZ29kLWNsYXNzLiBPbmx5IG9uZSB3YXkgdG8gZmluZCBvdXQuIExldCdzIGdldCBjcmFja2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEwOSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6NDcuNDcxNjMyMzAyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTEzMTYzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE1OjI1OjQ3LjUyMjc3MTcxN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjg2ODMxMTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIGF0aDExayBEcml2ZXIgQXJjaGl0ZWN0dXJlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGF0aDExa2AgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIHR3byBrZXkgZmlsZXM6IGBwY2kuY2AgYW5kIGBhaGIuY2AuICBTaW5jZSBJJ20gdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLCBteSBndXQgdGVsbHMgbWUgdG8gZ28gc3RyYWlnaHQgZm9yIGBhaGIuY2AgZmlyc3QuICBUaGUgQUhCIGludGVyZmFjZSBpcyBvZnRlbiBzaW1wbGVyIGZvciBwcm9iaW5nLCBhbmQgdGhhdCdzIHVzdWFsbHkgd2hlcmUgeW91J2xsIGZpbmQgdGhlIGNvcmUgZGV2aWNlIHJlZ2lzdHJhdGlvbiByb3V0aW5lcy4gIExldCdzIHNlZSBpZiB0aGF0IGFzc3VtcHRpb24gaG9sZHMgdHJ1ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGhvb2tzIGludG8gdGhlIEFIQiBidXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMjIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNTo1MC4yMDk2MDU3NzVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDg5NTE2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6NTAuMjU0NzExMDJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1Njc3MjMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgQUhCIERyaXZlcioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIEFIQiBkcml2ZXIgaXMgYmVpbmcgaW5pdGlhbGl6ZWQuIE15IGZpcnN0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSByZWdpc3RyYXRpb24gcHJvY2Vzcy4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBob3cgYHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcmAgaXMgdXNlZCB3aXRoaW4gdGhlIGBhaGIuY2AgZmlsZS4gVGhpcyBpcyB0aGUgc3RhbmRhcmQgZW50cnkgcG9pbnQgZm9yIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyB1bmRlcnN0YW5kaW5nIGl0cyB1c2FnZSBoZXJlIHdpbGwgcXVpY2tseSBwYWludCBhIHBpY3R1cmUgb2YgaG93IHRoZSBkcml2ZXIgbWFrZXMgaXRzZWxmIGtub3duIHRvIHRoZSBzeXN0ZW0uIEknbSBleHBlY3RpbmcgdG8gc2VlIHRoZSByZWxldmFudCBzdHJ1Y3R1cmVz4oCUdGhlIGRyaXZlciBpdHNlbGYsIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZGV2aWNlcywgYW5kIHBlcmhhcHMgc29tZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMg4oCTIGFsbCBjb25uZWN0ZWQgdGhyb3VnaCB0aGlzIHJlZ2lzdHJhdGlvbiBjYWxsLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gdGhlIG92ZXJhbGwgZHJpdmVyIGFyY2hpdGVjdHVyZSBhbmQgaG93IGl0IGhvb2tzIGludG8gdGhlIEFIQiBidXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NTcsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNTo1NC4xMTE0ODc4ODJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzE1MDM1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6NTQuMTU4ODEyMjA3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MTI4NDQ2ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipEaXZpbmcgaW50byB0aGUgYGF0aDExa2AgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGBhdGgxMWtgIGRyaXZlciBraWNrcyBvZmYuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gYG1vZHVsZV9pbml0YC4gVGhhdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHRoZSBmdW5jdGlvbiB3aGVyZSB0aGUgbW9kdWxlIHJlZ2lzdGVycyBpdHNlbGYgd2l0aCB0aGUga2VybmVsIGFuZCBnZXRzIGV2ZXJ5dGhpbmcgZ29pbmcuIEknbSBnb2luZyB0byBzY2FuIHRoZSBlbnRpcmUgYGF0aDExa2AgZGlyZWN0b3J5LCBub3QganVzdCBhIHNpbmdsZSBmaWxlLiBUaGlzIGlzIGNydWNpYWw7IHNvbWV0aW1lcyBpbml0aWFsaXphdGlvbiBpcyBzcHJlYWQgYWNyb3NzIG11bHRpcGxlIGZpbGVzLCBhbmQgSSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcgc3VidGx5IGltcG9ydGFudCB0aGF0IG1pZ2h0IGJlIGVsc2V3aGVyZS4gSSdtIGxvb2tpbmcgZm9yICp0aGUqIHByaW1hcnkgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Nzk5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6NTYuODcxNjU5NzIyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI4MDU2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEzMDc9c3RhdGljIGludCBhdGgxMWtfcGNpX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxNy19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzoxMzE4Om1vZHVsZV9pbml0KGF0aDExa19wY2lfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzE5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNTo1Ni45MTc5NDQ0MzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4ODg0OTk2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGEgQ29kZSBDb250ZXh0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGFoYi5jYC4gQW5kIG15IGluaXRpYWwgcmVhY3Rpb24/IFdhaXQgYSBtaW51dGUuLi4gdGhhdCBmaWxlbmFtZSBpbW1lZGlhdGVseSB0cmlnZ2VycyBhIGZsYWcuIGBhaGIuY2AuLi4gZG9lcyB0aGF0IG1lYW4gdGhlIEFIQiBidXM/IEFuZCB0aGVuIEkgc2VlIGBhdGgxMWtfYWhiX2luaXRgLiBCaW5nby4gVGhhdCdzIGEgaHVnZSBjbHVlLiBUaGUgcHJlc2VuY2Ugb2YgYGF0aDExa19haGJfaW5pdGAgaW4gdGhpcyBwYXJ0aWN1bGFyIHNvdXJjZSBmaWxlIHN0cm9uZ2x5IHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBpbml0aWFsaXphdGlvbiBjb2RlIHJlbGF0ZWQgdG8gYW4gQXRoZXJvcyBXaS1GaSBjb250cm9sbGVyLCBzcGVjaWZpY2FsbHkgc29tZXRoaW5nIGludGVyYWN0aW5nIHdpdGggYW4gQUhCIGJ1cyBpbnRlcmZhY2UuIFRoaXMgaXNuJ3QganVzdCBhIHJhbmRvbSBtb2R1bGUuIFRoZSBgYWhiYCBwYXJ0IG5hcnJvd3MgZG93biB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24gc2lnbmlmaWNhbnRseSwgYW5kIHRoZSBgYXRoMTFrYCBnaXZlcyBtZSBhIGNsZWFyIHZlbmRvciBmb2N1cy4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLiBNeSBoeXBvdGhlc2lzIGlzIHRoaXMgZmlsZSBjb250YWlucyB0aGUgbmVjZXNzYXJ5IGJvb3Qgc3RyYXBwaW5nIGZvciBhbiBhdGgxMWsgZHJpdmVyIG9uIGFuIEFIQiBidXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNTEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNjowMC4yMDY3OTcxNVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA2MTE1NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTFrX2FoYl9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9NDE2PXN0YXRpYyB2b2lkIGF0aDExa19haGJfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQyMzpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2luaXRfcW1pX2NlX2NvbmZpZyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MTEzOT1zdGF0aWMgaW50IGF0aDExa19haGJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTIxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEyMjA6XFx0YXRoMTFrX2FoYl9pbml0X3FtaV9jZV9jb25maWcoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTIyMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjY6MDAuMjU3NDEyNzk1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTA0MTIxNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE1vZHVsZSBIaWVyYXJjaHkqKlxuXG5BbHJpZ2h0LCBzbyBgYXRoMTFrYCwgdGhhdCdzIGNsZWFybHkgYSBtb2R1bGUgaW4gdGhlIGtlcm5lbC4gQnV0IGhhbmcgb24gYSBzZWNvbmQsIGNvdWxkIHNvbWUgb2YgaXRzIGNvcmUgZnVuY3Rpb25hbGl0eSwgbWF5YmUgc29tZXRoaW5nIGxpa2UgYGFoYi5jYCwgYmUgYnVpbHQgZGlyZWN0bHkgaW50byBhbm90aGVyIG1vZHVsZT8gVGhhdCB3b3VsZG4ndCBiZSBlbnRpcmVseSB1bnVzdWFsLCBkZXBlbmRpbmcgb24gaG93IHRoZXkndmUgc3RydWN0dXJlZCB0aGluZ3MuIExldCdzIG1ha2Ugc3VyZSB3ZSBhcmUgbm90IGFzc3VtaW5nIGFueXRoaW5nIGFuZCBjaGVjayB0aGUgcHJvamVjdCBzdHJ1Y3R1cmUuIFRoZSBmaXJzdCBwbGFjZSB0byBnbyBpcyBhbHdheXMgdGhlIGBNYWtlZmlsZWAgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrYCBkaXJlY3RvcnkuIFRoYXQgd2lsbCB0ZWxsIHRoZSB0cnV0aCBhYm91dCB3aGF0IGlzIGJ1aWx0IHdoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzM0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjY6MDMuMTY3ODI5ODY5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRvYmotJChDT05GSUdfQVRIMTFLKSArPSBhdGgxMWsub1xcbiAgIDM6XFx0YXRoMTFrLXkgKz0gY29yZS5vIFxcXFxcXG4gICA0OlxcdFxcdCAgICBoYWwubyBcXFxcXFxuICAgNTpcXHRcXHQgICAgaGFsX3R4Lm8gXFxcXFxcbiAgIDY6XFx0XFx0ICAgIGhhbF9yeC5vIFxcXFxcXG4gICA3OlxcdFxcdCAgICB3bWkubyBcXFxcXFxuICAgODpcXHRcXHQgICAgbWFjLm8gXFxcXFxcbiAgIDk6XFx0XFx0ICAgIHJlZy5vIFxcXFxcXG4gIDEwOlxcdFxcdCAgICBodGMubyBcXFxcXFxuICAxMTpcXHRcXHQgICAgcW1pLm8gXFxcXFxcbiAgMTI6XFx0XFx0ICAgIGRwLm8gIFxcXFxcXG4gIDEzOlxcdFxcdCAgICBkcF90eC5vIFxcXFxcXG4gIDE0OlxcdFxcdCAgICBkcF9yeC5vIFxcXFxcXG4gIDE1OlxcdFxcdCAgICBkZWJ1Zy5vIFxcXFxcXG4gIDE2OlxcdFxcdCAgICBjZS5vIFxcXFxcXG4gIDE3OlxcdFxcdCAgICBwZWVyLm8gXFxcXFxcbiAgMTg6XFx0XFx0ICAgIGRicmluZy5vIFxcXFxcXG4gIDE5OlxcdFxcdCAgICBody5vIFxcXFxcXG4gIDIwOlxcdFxcdCAgICBwY2ljLm8gXFxcXFxcbiAgMjE6XFx0XFx0ICAgIGZ3Lm8gXFxcXFxcbiAgMjI6XFx0XFx0ICAgIHAycC5vXFxuICAyMzpcXHRcXG4gIDI0OlxcdGF0aDExay0kKENPTkZJR19BVEgxMUtfREVCVUdGUykgKz0gZGVidWdmcy5vIGRlYnVnZnNfaHR0X3N0YXRzLm8gZGVidWdmc19zdGEub1xcbiAgMjU6XFx0YXRoMTFrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG4gIDI2OlxcdGF0aDExay0kKENPTkZJR19BVEgxMUtfVFJBQ0lORykgKz0gdHJhY2Uub1xcbiAgMjc6XFx0YXRoMTFrLSQoQ09ORklHX1RIRVJNQUwpICs9IHRoZXJtYWwub1xcbiAgMjg6XFx0YXRoMTFrLSQoQ09ORklHX0FUSDExS19TUEVDVFJBTCkgKz0gc3BlY3RyYWwub1xcbiAgMjk6XFx0YXRoMTFrLSQoQ09ORklHX1BNKSArPSB3b3cub1xcbiAgMzA6XFx0YXRoMTFrLSQoQ09ORklHX0RFVl9DT1JFRFVNUCkgKz0gY29yZWR1bXAub1xcbiAgMzE6XFx0YXRoMTFrLSQoQ09ORklHX0FUSDExS19DRlIpICs9IGNmci5vXFxuICAzMjpcXHRcXG4gIDMzOlxcdG9iai0kKENPTkZJR19BVEgxMUtfQUhCKSArPSBhdGgxMWtfYWhiLm9cXG4gIDM0OlxcdGF0aDExa19haGIteSArPSBhaGIub1xcbiAgMzU6XFx0XFxuICAzNjpcXHRvYmotJChDT05GSUdfQVRIMTFLX1BDSSkgKz0gYXRoMTFrX3BjaS5vXFxuICAzNzpcXHRhdGgxMWtfcGNpLXkgKz0gbWhpLm8gcGNpLm9cXG4gIDM4OlxcdFxcbiAgMzk6XFx0IyBmb3IgdHJhY2luZyBmcmFtZXdvcmsgdG8gZmluZCB0cmFjZS5oXFxuICA0MDpcXHRDRkxBR1NfdHJhY2UubyA6PSAtSSQoc3JjKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNjowMy4xNjc5MDA3OTlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY0MDk3ODU2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGgxMWsgRHJpdmVyJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGUgYGF0aDExa2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBhdGgxMWtfYWhiYCBhbmQgYGF0aDExa19wY2lgIG1vZHVsZXMsIGFuZCBpdCBsb29rcyBsaWtlIHRoZXkgYXJlIHNlcGFyYXRlIGZyb20gdGhlIGNvcmUgYGF0aDExa2AgbW9kdWxlLCBidXQgdGhlIGBtYWMuY2AgY29kZSBpcyBhY3R1YWxseSBwYXJ0IG9mIHRoYXQgY29yZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gSSBldmVuIGZ1enogdGhpcyB0aGluZyB3aXRoaW4gUUVNVT8gVGhpcyBpcyBhIGRyaXZlciwgcmlnaHQ/IERlc2lnbmVkIHRvIGludGVyZmFjZSB3aXRoIHBoeXNpY2FsIGhhcmR3YXJlIHZpYSBQQ0kgb3IgQUhCLiBIbW0sIG5vIG9idmlvdXMgc29mdHdhcmUgZW11bGF0aW9uIGlzIHByZXNlbnQgbGlrZSB5b3Ugc2VlIHdpdGggYG1hYzgwMjExX2h3c2ltYCBvciBgdmhjaWAgZm9yIFVTQi4gVGhhdOKAmXMgYSBwcm9ibGVtLiBJIGNhbid0IHRoaW5rIG9mIGEgY2xlYW4gd2F5IHRvIHJlYWNoIHRoaXMgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVUgd2l0aG91dCBzb21lIGtpbmQgb2YgcmVhbCBoYXJkd2FyZSBwcmVzZW50LlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIHRob3VnaC4gSXQncyBhbHdheXMgd29ydGggYSB0aG9yb3VnaCBzZWFyY2guIEFyZSB0aGVyZSBhbnkgdmlydHVhbCBkcml2ZXJzIG9yIGFueSB0ZXN0IG1vZGVzIHRoYXQgbWlnaHQgcHJvdmlkZSBhIGhvb2s/IEkgc2hvdWxkIHRyYWNlIHRoZSBjYWxsIGNoYWluLiBXaGVyZSBpcyBgYXRoMTFrX21hY19zZXR1cF9jaGFubmVsc19yYXRlc2AgY2FsbGVkIGZyb20/IEtub3dpbmcgdGhlIGNhbGwgY2hhaW4gY291bGQgcG90ZW50aWFsbHkgZXhwb3NlIGFuIGVudHJ5IHBvaW50IHRvIHRoZSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MzEsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNjowNy44MDg4ODI5M1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMjAyMTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19tYWNfc2V0dXBfY2hhbm5lbHNfcmF0ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMDE0Mz1zdGF0aWMgdTMyIGF0aDExa19nZXRfcGh5X2lkKHN0cnVjdCBhdGgxMWsgKmFyLCB1MzIgYmFuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTAxNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDE1OTpzdGF0aWMgaW50IGF0aDExa19tYWNfc2V0dXBfY2hhbm5lbHNfcmF0ZXMoc3RydWN0IGF0aDExayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDE2MC1cXHRcXHRcXHRcXHRcXHQgICB1MzIgc3VwcG9ydGVkX2JhbmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMDQ1MT1zdGF0aWMgaW50IF9fYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA0NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDQ3NjpcXHRyZXQgPSBhdGgxMWtfbWFjX3NldHVwX2NoYW5uZWxzX3JhdGVzKGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA0NzctXFx0XFx0XFx0XFx0XFx0ICAgICAgY2FwLVxcdTAwM2VzdXBwb3J0ZWRfYmFuZHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNjowNy45NzIwODk5NTNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI1MDEwMzQzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBOb3QgV29ydGggRnV6emluZyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBnaXZlbiB0aGlzIGZ1bmN0aW9uLCBgX19hdGgxMWtfbWFjX3JlZ2lzdGVyYCwgYW5kIHRoZSBpbml0aWFsIHJlYWN0aW9uIGlzIFwiSG1tLCBjb3VsZCB0aGlzIGJlIGEgZnV6emluZyB0YXJnZXQ/XCIgQnV0IGxldCdzIGJyZWFrIGl0IGRvd24sIGJlY2F1c2UgdGhhdCdzIHdoYXQgSSBkby5cblxuRmlyc3QsIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIHdoZXJlIHRoaXMgY2FsbCByZXNpZGVzLCBleHBsaWNpdGx5IHJlcXVpcmVzIGEgUENJIG9yIEFIQiBkZXZpY2UgdG8gcHJvYmUuIFJpZ2h0IGF3YXksIHRoYXQncyBhIHJlZCBmbGFnLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgYW55IGNvZGUgcGF0aCBjb250aW5nZW50IG9uIHRoYXQga2luZCBvZiAqYWN0dWFsKiBoYXJkd2FyZSBpcyBnb2luZyB0byBiZSB2aXJ0dWFsbHkgaW1wb3NzaWJsZSB0byB0cmlnZ2VyIGluIGFueSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKSBvciBRRU1VLiBXZSdyZSB0YWxraW5nIGFib3V0ICpyZWFsKiBoYXJkd2FyZSByZXF1aXJlbWVudHMsIG5vdCBlbXVsYXRlZC5cblxuVGhlbiwgdGhlcmUncyB0aGUgZGVmaW5pdGl2ZSBndWlkYW5jZTogaWYgdGhlIHBhdGNoJ3Mgc2NvcGUgaXMgcmVzdHJpY3RlZCB0byBjb2RlIHRoYXQncyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIHRob3NlIHZpcnR1YWxpemVkIHNldHVwcywgb3IgaW52b2x2ZXMgc3BlY2lhbGl6ZWQgaGFyZHdhcmUsIHRoZW4gaXTigJlzIGEgXCJuby1nb1wiIGZvciBmdXp6aW5nLiBTcGVjaWZpY2FsbHksIHRoZXkgY2FsbCBvdXQgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgdGhhdCBuZWVkIHBoeXNpY2FsIFBDSWUgY2FyZHMgd2hpY2ggYXJlICpub3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQncyB0aGUga2V5LlxuXG5Ob3csIGxvb2tpbmcgYXQgYGF0aDExa2Agc3BlY2lmaWNhbGx5LCBJIHJlY29nbml6ZSB0aGF0IHRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyLCBRdWFsY29tbSwgYW5kLCBiZWluZyBhIFdpLUZpIGRyaXZlciwgdGhpcyBpcyBleHBlY3RlZCB0byB1c2UgZWl0aGVyIFBDSWUgb3IgQUhCIGhhcmR3YXJlIGZvciBpdHMgb3BlcmF0aW9uLiBBbmQgdGhlIGtpY2tlcj8gSXQgKnJlcXVpcmVzKiB0aGlzIHBoeXNpY2FsIGhhcmR3YXJlLiBTdGFuZGFyZCBRRU1VLCBhcyB3ZSBrbm93LCBkb2Vzbid0IGVtdWxhdGUgdGhpcyBzdHVmZiBwcm9wZXJseSwgaWYgYXQgYWxsLlxuXG5UaGVyZWZvcmUsIGdpdmVuIHRoZSBpbmhlcmVudCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBpbnN0cnVjdGlvbnMgSSBoYXZlLCBJIGNvbmNsdWRlIHRoYXQgdGhpcyBjb2RlIHBhdGggaXMgbm90IHdvcnRoIGZ1enppbmcuIEl0J3MgYSBub24tc3RhcnRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQzMCwiT3V0cHV0VG9rZW5zIjo5NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNjoxMy4yMjIxOTYzNzlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzM5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyIGZvciBRdWFsY29tbSBoYXJkd2FyZS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBvciBBSEIgaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGluaXRpYWxpemUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgZm9yIFF1YWxjb21tIGhhcmR3YXJlLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIG9yIEFIQiBoYXJkd2FyZSB0byBwcm9iZSBhbmQgaW5pdGlhbGl6ZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjY6MTMuMjIyMjIzMTQ5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2scxv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-15 15:23:22 +0000 UTC FinishedAt: 2026-08-15 15:26:15 +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+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFdpLUZpIGRyaXZlciBmb3IgUXVhbGNvbW0gaGFyZHdhcmUuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgb3IgQUhCIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBpbml0aWFsaXplLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDQwYWY4NjI2MmU0MTZkMzVmNTFhYzZhMTQ2YzY1ZmIxNzhhNmE4Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDE1OjI1OjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5pbmRleCAyZDU1Y2RjNGQxNjVkLi5lMjNhMjk1ZjlhN2Y4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuQEAgLTEwMTcyLDYgJiM0MzsxMDE3MiwxNSBAQCBzdGF0aWMgaW50IGF0aDExa19tYWNfc2V0dXBfY2hhbm5lbHNfcmF0ZXMoc3RydWN0IGF0aDExayAqYXIsXG4gXHRyZWdfY2FwID0gXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlaGFsX3JlZ19jYXBbYXItXHUwMDNlcGRldl9pZHhdO1xuIFx0dGVtcF9yZWdfY2FwID0gcmVnX2NhcDtcbiBcbiYjNDM7XHQvKiBRQ042MTIyIGZpcm13YXJlIG9taXRzIHRoZSBVTklJLTMgYmFuZCAoNTcyNS01ODUwIE1IeiwgY2hhbm5lbHNcbiYjNDM7XHQgKiAxNDktMTY1KSBmcm9tIGhpZ2hfNWdoel9jaGFuLCB3aGljaCBtYWtlcyB0aGUgZHJpdmVyIG1hcmsgdGhvc2VcbiYjNDM7XHQgKiBjaGFubmVscyBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRC4gQ2xhbXAgaXQgdG8gdGhlIHN0YW5kYXJkIDUuOCBHSHpcbiYjNDM7XHQgKiB1cHBlciBib3VuZCBzbyBjaGFubmVscyAxNDktMTY1IHJlbWFpbiB1c2FibGUuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGFyLVx1MDAzZWFiLVx1MDAzZWh3X3JldiA9PSBBVEgxMUtfSFdfUUNONjEyMl9IVzEwIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICByZWdfY2FwLVx1MDAzZWhpZ2hfNWdoel9jaGFuIFx1MDAzYyA1ODI1KVxuJiM0MztcdFx0cmVnX2NhcC1cdTAwM2VoaWdoXzVnaHpfY2hhbiA9IDU4MjU7XG4mIzQzO1xuIFx0aWYgKHN1cHBvcnRlZF9iYW5kcyBcdTAwMjYgV01JX0hPU1RfV0xBTl8yR19DQVApIHtcbiBcdFx0Y2hhbm5lbHMgPSBrbWVtZHVwKGF0aDExa18yZ2h6X2NoYW5uZWxzLFxuIFx0XHRcdFx0ICAgc2l6ZW9mKGF0aDExa18yZ2h6X2NoYW5uZWxzKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFdpLUZpIGRyaXZlciBmb3IgUXVhbGNvbW0gaGFyZHdhcmUuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgb3IgQUhCIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBpbml0aWFsaXplLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDQwYWY4NjI2MmU0MTZkMzVmNTFhYzZhMTQ2YzY1ZmIxNzhhNmE4YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDE1IDE1OjI1OjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMKaW5kZXggMmQ1NWNkYzRkMTY1ZC4uZTIzYTI5NWY5YTdmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jCkBAIC0xMDE3Miw2ICYjNDM7MTAxNzIsMTUgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX3NldHVwX2NoYW5uZWxzX3JhdGVzKHN0cnVjdCBhdGgxMWsgKmFyLAogCXJlZ19jYXAgPSAmYW1wO2FyLSZndDthYi0mZ3Q7aGFsX3JlZ19jYXBbYXItJmd0O3BkZXZfaWR4XTsKIAl0ZW1wX3JlZ19jYXAgPSByZWdfY2FwOwogCiYjNDM7CS8qIFFDTjYxMjIgZmlybXdhcmUgb21pdHMgdGhlIFVOSUktMyBiYW5kICg1NzI1LTU4NTAgTUh6LCBjaGFubmVscwomIzQzOwkgKiAxNDktMTY1KSBmcm9tIGhpZ2hfNWdoel9jaGFuLCB3aGljaCBtYWtlcyB0aGUgZHJpdmVyIG1hcmsgdGhvc2UKJiM0MzsJICogY2hhbm5lbHMgSUVFRTgwMjExX0NIQU5fRElTQUJMRUQuIENsYW1wIGl0IHRvIHRoZSBzdGFuZGFyZCA1LjggR0h6CiYjNDM7CSAqIHVwcGVyIGJvdW5kIHNvIGNoYW5uZWxzIDE0OS0xNjUgcmVtYWluIHVzYWJsZS4KJiM0MzsJICovCiYjNDM7CWlmIChhci0mZ3Q7YWItJmd0O2h3X3JldiA9PSBBVEgxMUtfSFdfUUNONjEyMl9IVzEwICZhbXA7JmFtcDsKJiM0MzsJICAgIHJlZ19jYXAtJmd0O2hpZ2hfNWdoel9jaGFuICZsdDsgNTgyNSkKJiM0MzsJCXJlZ19jYXAtJmd0O2hpZ2hfNWdoel9jaGFuID0gNTgyNTsKJiM0MzsKIAlpZiAoc3VwcG9ydGVkX2JhbmRzICZhbXA7IFdNSV9IT1NUX1dMQU5fMkdfQ0FQKSB7CiAJCWNoYW5uZWxzID0ga21lbWR1cChhdGgxMWtfMmdoel9jaGFubmVscywKIAkJCQkgICBzaXplb2YoYXRoMTFrXzJnaHpfY2hhbm5lbHMpLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjIzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFF1YWxjb21tIFdpLUZpIDYgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgYmVlbiBhcHBsaWVkIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jYC4gU2VlbXMgbGlrZSB0aGV5JiMzOTtyZSBwdXR0aW5nIGluIGEgd29ya2Fyb3VuZCDigJMgc3BlY2lmaWNhbGx5IGZvciBRQ042MTIyIGZpcm13YXJlIHRoYXQmIzM5O3MgYXBwYXJlbnRseSBkcm9wcGluZyB0aGUgVU5JSS0zIGJhbmQuIFRoZSBjb2RlIGlzIGNoZWNraW5nIHRoZSBoYXJkd2FyZSByZXZpc2lvbiwgYGFyLSZndDthYi0mZ3Q7aHdfcmV2ID09IEFUSDExS19IV19RQ042MTIyX0hXMTBgLCBhbmQgdGhlbiBhZGp1c3RpbmcgYHJlZ19jYXAtJmd0O2hpZ2hfNWdoel9jaGFuYC4gU3RhbmRhcmQgYmFuZCBsaW1pdGF0aW9uIHdvcmsgYXJvdW5kLgoKV2FpdCBhIHNlY29uZOKApiBgYXRoMTFrYC4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIFF1YWxjb21tIFdpLUZpIDYgZHJpdmVyLiBOb3csIGlzIHRoaXMgZHJpdmVyIGVtdWxhdGVkIGluIFFFTVU/IEkmIzM5O20gcHJldHR5IHN1cmUgaXQmIzM5O3Mgbm90LiBgYXRoMTFrYCBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIHBoeXNpY2FsIFBDSWUsIEFIQiwgb3IgU05PQyBXaS1GaSBjYXJkcy4KClRoaXMgc3BhcmtzIGFuIGludGVyZXN0aW5nIHRob3VnaHQuIFNpbmNlIGl0JiMzOTtzIGludGVyYWN0aW5nIHdpdGggaGFyZHdhcmUsIEkgd29uZGVyIGFib3V0IGZ1enppbmcgaXQuIENhbiB3ZSB1c2UgdGhlIHBoeXNpY2FsIGRyaXZlciB0byBpbmR1Y2UgdW5leHBlY3RlZCBiZWhhdmlvdXI/CgpMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlJiMzOTtzICphbnkqIGtpbmQgb2Ygc2ltdWxhdGVkIGhhcmR3YXJlIHN1cHBvcnQgZm9yIGBhdGgxMWtgLiBJJiMzOTtsbCBkbyBhIHF1aWNrIHNlYXJjaCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2AgZGlyZWN0b3J5LiBNYXliZSB0aGVyZSYjMzk7cyBhIHZpcnR1YWwgaW50ZXJmYWNlIG9yIHNvbWV0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hYzgwMjExX2h3c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBhdGgxMWtgIERyaXZlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIG5hdHVyZSBvZiB0aGUgYGF0aDExa2AgZHJpdmVyLiBUaGUgb2J2aW91cyBmaXJzdCBzdGVwIGlzIHRvIGFzY2VydGFpbiBpZiBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIFRoaXMgaXMgYSBjcnVjaWFsIGZvdW5kYXRpb25hbCBwb2ludDsgdW5kZXJzdGFuZGluZyB0aGUgYnVzIGludGVyZmFjZSBpcyBmdW5kYW1lbnRhbCB0byBhbnkgZnVydGhlciBhbmFseXNpcy4gSSBuZWVkIHRvIGtub3cgaWYgaXQmIzM5O3MgaW50ZXJhY3RpbmcgZGlyZWN0bHkgd2l0aCB0aGUgUENJIGJ1cy4gVGhpcyBkZXRlcm1pbmVzIHRoZSBraW5kIG9mIHJlc291cmNlcyB0aGUgZHJpdmVyIGlzIG1hbmFnaW5nIGFuZCB3aGF0IGtpbmQgb2YgaW50ZXJydXB0L0RNQSBjb25maWd1cmF0aW9ucyBJIGNhbiBleHBlY3QuIEEgcXVpY2sgY29uZmlybWF0aW9uIGhlcmUgd2lsbCBzdGVlciB0aGUgcmVzdCBvZiBteSBpbnZlc3RpZ2F0aW9uLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBgYXRoMTFrYCBuYW1lIGl0c2VsZiBzdWdnZXN0cyBhIGNvbm5lY3Rpb24gd2l0aCBBdGhlcm9zLCBidXQgdGhhdCBkb2VzbiYjMzk7dCBkZWZpbml0aXZlbHkgdGVsbCBtZSBhYm91dCB0aGUgaGFyZHdhcmUgaW50ZXJmYWNlLiBHb3R0YSBjb25maXJtIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9MTMwNz1zdGF0aWMgaW50IGF0aDExa19wY2lfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTMxMTpcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YXRoMTFrX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzEyLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTY1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU2l0dWF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIFBDSSBkcml2ZXIsIGNsZWFybHkgbWVhbnQgdG8gaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCBwaHlzaWNhbCBoYXJkd2FyZS4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBidXJuaW5nIGluIG15IG1pbmQgaXM6IGNhbiBJIGV2ZW4gKnRvdWNoKiB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTXkgcGFzdCBleHBlcmllbmNlIHNob3V0cyAmIzM0O3VzdWFsbHkgbm8uJiMzNDsgVGhpbmsgYWJvdXQgeW91ciBzdGFuZGFyZCBXaS1GaSBkcml2ZXJzIGxpa2UgYXRoMTFrLCBpd2x3aWZpLCBvciBtdDc2IOKAkyB0aGV5JiMzOTtyZSBub3QgZ2VuZXJhbGx5IGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBUaGV5IGRlbWFuZCB0aGUgcmVhbCBkZWFsLgoKVGhlbiBhIGZsaWNrZXIgb2YgaG9wZS4gSSByZWNhbGwgc3l6a2FsbGVyIGhhcyBzb21lIG1lY2hhbmlzbXMgdG8gZnV6eiB0aGUgV2ktRmkgc3RhY2sgdmlhIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGF0IGZvY3VzZXMgb24gdGhlIGBtYWM4MDIxMWAgY29yZS4gVGhlIHJlYWwgY2hhbGxlbmdlIGNvbWVzIHdpdGggc3BlY2lmaWMgZHJpdmVycy4gRm9yIGFuIGF0aDExayBkcml2ZXIsIGluaXRpYWxpemF0aW9uIGRlbWFuZHMgdGhlIGFjdHVhbCBoYXJkd2FyZSB0byBwcm9iZS4gSXQgd2lsbCBlcnJvciBvdXQgd2l0aG91dCB0aGUgZGV2aWNlLgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGRlZXBlci4gSXMgdGhlcmUgKmFueSogZm9ybSBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGF0aDExayBvdXQgdGhlcmU/IEkgbmVlZCB0byBjaGVjayBpZiBzb21lIGNsZXZlciBpbmRpdmlkdWFsIGhhcyBmb3VuZCBhIHdvcmthcm91bmQuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEzMDc9c3RhdGljIGludCBhdGgxMWtfcGNpX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEzMTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzoxMzE4Om1vZHVsZV9pbml0KGF0aDExa19wY2lfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEzMTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxMQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipUaGUgVW5leHBlY3RlZCBJbnRlcnNlY3Rpb24qKgoKSG9sZCBvbiBhIG1pbnV0ZS4uLiBJIHdhcyBqdXN0IGZvY3VzaW5nIG9uIHRoZSBpbnRyaWNhY2llcyBvZiB0aGlzIHdpcmVsZXNzIGNoaXBzZXQsIHNwZWNpZmljYWxseSAqYXRoMTFrKiwgYW5kIG15IG1lbnRhbCBtb2RlbCB3YXMgc29sZWx5IG9uIHRoZSBNQUMgYW5kIFBIWS4gQnV0IHRoZW4gaXQgaGl0IG1lIOKAkyBJIG5lZWQgdG8gcmVhbGx5IGRpZyBiYWNrIGludG8gdGhlIGhhcmR3YXJlIGFyY2hpdGVjdHVyZS4gSXQmIzM5O3Mgbm90IGp1c3QgdGhlIHJhZGlvIGl0c2VsZiB0aGF0IEkgbmVlZCB0byBjb25zaWRlciwgYnV0IHRoZSB1bmRlcmx5aW5nIGluZnJhc3RydWN0dXJlLiBUaGF0IGluaXRpYWwgcXVlc3Rpb24gYWJvdXQgZGF0YSBmbG93IGdvdCBtZSB0aGlua2luZy4gSSB3YXNuJiMzOTt0IGp1c3QgY29uY2VudHJhdGluZyBvbiB0aGUgcHJvdG9jb2xzLgoKU3BlY2lmaWNhbGx5LCBJ4oCZbSByZWFsaXppbmcgbm93IHRoYXQgKmF0aDExayosIHN1cnByaXNpbmdseSwgYWxzbyBpbmNvcnBvcmF0ZXMgc3VwcG9ydCBmb3IgQUhCIChBZHZhbmNlZCBIaWdoLXBlcmZvcm1hbmNlIEJ1cykgYW5kIFNOT0MgKFN5c3RlbSBOZXR3b3JrLW9uLUNoaXApLiBUaGlzIGlzIGEgZ2FtZSBjaGFuZ2VyIGZvciBzZXZlcmFsIHJlYXNvbnMuIEl0IG1lYW5zIHRoZSBkYXRhIHBhdGh3YXlzIGFyZSBtb3JlIGNvbXBsZXggdGhhbiBJIGluaXRpYWxseSBhc3N1bWVkLiBUaGlzIG1lYW5zIEkgbmVlZCB0byByZS1ldmFsdWF0ZSBob3cgdGhlIGRhdGEgZ2V0cyBmcm9tIHRoZSBNQUMgdG8gdGhlIHJhZGlvLiBJIHdhcyBmb2N1c2VkIG9uIHRoZSByYWRpbyBpbnRlcmZhY2UsIGJ1dCBub3cgSSBuZWVkIHRvIGZhY3RvciBpbiBob3cgdGhlIEFIQiBhbmQgU05PQyBhZmZlY3QgbGF0ZW5jeSwgdGhyb3VnaHB1dCwgYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcyB3aXRoaW4gdGhlIHNpbGljb24gaXRzZWxmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BsYXRmb3JtX2RyaXZlcl9yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAyMAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgTmV0d29yayBEcml2ZXIgSXNzdWUqKgoKT2theSwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBsaWtlbHkgc291cmNlIG9mIHRoaXMgcHJvYmxlbS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBkaWdnaW5nIGluIHRoZSBsb3ctbGV2ZWwgc3R1ZmYuIEdpdmVuIHdoYXQgSSYjMzk7bSBzZWVpbmcsIEkmIzM5O20gdGhpbmtpbmcgdGhlIEFIQiBidXMgaW50ZXJhY3Rpb24gaW4gdGhlIGF0aDExayBkcml2ZXIgZmFtaWx5IGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2AgZGlyZWN0b3J5IGFuZCBzZWUgaWYgSSBjYW4gZmluZCBhIGNvcnJlc3BvbmRpbmcgYGFoYi5jYCBmaWxlLCBvciBzb21ldGhpbmcgc2ltaWxhciB0aGF0IGhhbmRsZXMgdGhlIEFIQiBpbnRlcmZhY2Ugd2l0aCB0aGUgY2hpcHNldC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGhvdyBkYXRhIGlzIGJlaW5nIHRyYW5zZmVycmVkLCBhbnkgZXJyb3IgaGFuZGxpbmcgcmVsYXRlZCB0byBidXMgdHJhbnNmZXJzLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGJvdHRsZW5lY2tzIG9yIGluY29ycmVjdCBjb25maWd1cmF0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIHRoZSBwcmVjaXNlIHBvaW50IHdoZXJlIHRoaW5ncyBhcmUgZ29pbmcgd3JvbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YWhiLmMmIzM0OywKICAgICYjMzQ7YWhiLmgmIzM0OywKICAgICYjMzQ7Y2UuYyYjMzQ7LAogICAgJiMzNDtjZS5oJiMzNDssCiAgICAmIzM0O2Nmci5jJiMzNDssCiAgICAmIzM0O2Nmci5oJiMzNDssCiAgICAmIzM0O2NvcmUuYyYjMzQ7LAogICAgJiMzNDtjb3JlLmgmIzM0OywKICAgICYjMzQ7Y29yZWR1bXAuYyYjMzQ7LAogICAgJiMzNDtjb3JlZHVtcC5oJiMzNDssCiAgICAmIzM0O2RicmluZy5jJiMzNDssCiAgICAmIzM0O2RicmluZy5oJiMzNDssCiAgICAmIzM0O2RlYnVnLmMmIzM0OywKICAgICYjMzQ7ZGVidWcuaCYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7ZGVidWdmcy5oJiMzNDssCiAgICAmIzM0O2RlYnVnZnNfaHR0X3N0YXRzLmMmIzM0OywKICAgICYjMzQ7ZGVidWdmc19odHRfc3RhdHMuaCYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzX3N0YS5jJiMzNDssCiAgICAmIzM0O2RlYnVnZnNfc3RhLmgmIzM0OywKICAgICYjMzQ7ZHAuYyYjMzQ7LAogICAgJiMzNDtkcC5oJiMzNDssCiAgICAmIzM0O2RwX3J4LmMmIzM0OywKICAgICYjMzQ7ZHBfcnguaCYjMzQ7LAogICAgJiMzNDtkcF90eC5jJiMzNDssCiAgICAmIzM0O2RwX3R4LmgmIzM0OywKICAgICYjMzQ7ZncuYyYjMzQ7LAogICAgJiMzNDtmdy5oJiMzNDssCiAgICAmIzM0O2hhbC5jJiMzNDssCiAgICAmIzM0O2hhbC5oJiMzNDssCiAgICAmIzM0O2hhbF9kZXNjLmgmIzM0OywKICAgICYjMzQ7aGFsX3J4LmMmIzM0OywKICAgICYjMzQ7aGFsX3J4LmgmIzM0OywKICAgICYjMzQ7aGFsX3R4LmMmIzM0OywKICAgICYjMzQ7aGFsX3R4LmgmIzM0OywKICAgICYjMzQ7aGlmLmgmIzM0OywKICAgICYjMzQ7aHRjLmMmIzM0OywKICAgICYjMzQ7aHRjLmgmIzM0OywKICAgICYjMzQ7aHcuYyYjMzQ7LAogICAgJiMzNDtody5oJiMzNDssCiAgICAmIzM0O21hYy5jJiMzNDssCiAgICAmIzM0O21hYy5oJiMzNDssCiAgICAmIzM0O21oaS5jJiMzNDssCiAgICAmIzM0O21oaS5oJiMzNDssCiAgICAmIzM0O3AycC5jJiMzNDssCiAgICAmIzM0O3AycC5oJiMzNDssCiAgICAmIzM0O3BjaS5jJiMzNDssCiAgICAmIzM0O3BjaS5oJiMzNDssCiAgICAmIzM0O3BjaWMuYyYjMzQ7LAogICAgJiMzNDtwY2ljLmgmIzM0OywKICAgICYjMzQ7cGVlci5jJiMzNDssCiAgICAmIzM0O3BlZXIuaCYjMzQ7LAogICAgJiMzNDtxbWkuYyYjMzQ7LAogICAgJiMzNDtxbWkuaCYjMzQ7LAogICAgJiMzNDtyZWcuYyYjMzQ7LAogICAgJiMzNDtyZWcuaCYjMzQ7LAogICAgJiMzNDtyeF9kZXNjLmgmIzM0OywKICAgICYjMzQ7c3BlY3RyYWwuYyYjMzQ7LAogICAgJiMzNDtzcGVjdHJhbC5oJiMzNDssCiAgICAmIzM0O3Rlc3Rtb2RlLmMmIzM0OywKICAgICYjMzQ7dGVzdG1vZGUuaCYjMzQ7LAogICAgJiMzNDt0aGVybWFsLmMmIzM0OywKICAgICYjMzQ7dGhlcm1hbC5oJiMzNDssCiAgICAmIzM0O3RyYWNlLmMmIzM0OywKICAgICYjMzQ7dHJhY2UuaCYjMzQ7LAogICAgJiMzNDt3bWkuYyYjMzQ7LAogICAgJiMzNDt3bWkuaCYjMzQ7LAogICAgJiMzNDt3b3cuYyYjMzQ7LAogICAgJiMzNDt3b3cuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NjYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgYWhiLmNgJiMzOTtzIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBzbyBgYWhiLmNgIGlzIG9uIHRoZSBzY2VuZS4gSW50ZXJlc3RpbmcuIE15IGluaXRpYWwgZm9jdXMgaXMgd2hhdCBpdCYjMzk7cyByZWdpc3RlcmluZyB3aXRoaW4gdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBuYXR1cmUgb2YgaXRzIHJlZ2lzdHJhdGlvbi4gSXMgdGhpcyBtb2R1bGUgcmVnaXN0ZXJpbmcgYSBzcGVjaWZpYyBkZXZpY2UsIGEgc2VydmljZSwgYSBwYXJ0aWN1bGFyIGludGVycnVwdCBoYW5kbGVyLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIGNvbnRleHQgaXMgY3J1Y2lhbC4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciB0aGUgdHlwaWNhbCByZWdpc3RyYXRpb24gcGF0dGVybnMgSSYjMzk7bSBmYW1pbGlhciB3aXRoIOKAkyB0aGUgY2FsbHMgdG8gYGRldmljZV9yZWdpc3RlcigpYCwgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigpYCwgYGNkZXZfYWRkKClgLCBgcmVxdWVzdF9pcnEoKWAsIGFuZCB0aGUgbGlrZS4gVGhpcyB0ZWxscyB0aGUgd2hvbGUgc3RvcnksIGl0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIApGcm9tIHRoZXJlLCBJIHdhbnQgdG8gYW5hbHl6ZSB0aGUgc3VwcGxpZWQgc3RydWN0dXJlcyBhbmQgdGhlaXIgY29udGVudHM6IHRoZSBkZXZpY2Ugc3RydWN0dXJlLCBjaGFyYWN0ZXIgZGV2aWNlIGRhdGEsIGRyaXZlciBpbmZvcm1hdGlvbiBhbmQgcmVzb3VyY2UgZGF0YSwgaXJxIG51bWJlcnMgYW5kIGZsYWdzLiBUaGF0IHdpbGwgcmV2ZWFsIHRoZSBleGFjdCByZXNvdXJjZXMgYW5kIGludGVyZmFjZXMgdGhhdCBhcmUgYmVpbmcgYnJvdWdodCBpbnRvIHRoZSBzeXN0ZW0uIEtub3dpbmcgdGhlIGRhdGEgd2lsbCBxdWlja2x5IGhlbHAgbWUgdG8gZGV0ZXJtaW5lIGhvdyBpdCYjMzk7cyBpbnRlbmRlZCB0byBpbnRlcmFjdCB3aXRoIG90aGVyIGtlcm5lbCBjb21wb25lbnRzIGFuZCB3aXRoIHVzZXJzcGFjZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGhhbmRsZSBvbiBob3cgdGhpcyB0aGluZyBpcyBiZWhhdmluZywgYXNzdW1pbmcgdGhlcmUgYXJlIG5vIGdsYXJpbmcgYW5vbWFsaWVzIG9yIHRyaWNrcy4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEwOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUgd2UgZ28uCgoqKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIGBjb3JlLmNgLi4uIHdoYXQmIzM5O3MgdGhpcyBmaWxlIGFsbCBhYm91dD8gR2l2ZW4gbXkgZXhwZXJpZW5jZSBpbiBbKlVzZXImIzM5O3MgRmllbGQgb2YgRXhwZXJ0aXNlKl0sIHRoYXQgZmlsZSBuYW1lIHVzdWFsbHkgc2lnbmlmaWVzIGl0JiMzOTtzIGxpa2VseSB0byBjb250YWluIHRoZSBmdW5kYW1lbnRhbCwgY2VudHJhbCBsb2dpYy4gSXQmIzM5O3MgcHJvYmFibHkgdGhlIGhlYXJ0IG9mIHRoaXMgZW50aXJlIHN5c3RlbS4gSSBleHBlY3QgaXQgdG8gaG9sZCB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZXMgYW5kIHRoZSBtYWluIGNvbnRyb2wgZmxvdywgdGhlIHN0dWZmIHRoYXQgbWFrZXMgZXZlcnl0aGluZyB0aWNrLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIGhhdmluZyB0byBkaWcgaW4gZGVlcCBoZXJlLCBsb29raW5nIGZvciBkZXBlbmRlbmNpZXMgb24sIG9yIHJlbGF0aW9uc2hpcHMgd2l0aCwgb3RoZXIgbW9kdWxlcy4gSXQgY291bGQgYmUgYSBzaW1wbGUgZW50cnkgcG9pbnQsIG9yIGEgbWFzc2l2ZSBnb2QtY2xhc3MuIE9ubHkgb25lIHdheSB0byBmaW5kIG91dC4gTGV0JiMzOTtzIGdldCBjcmFja2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMyMgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgYXRoMTFrIERyaXZlciBBcmNoaXRlY3R1cmUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBhdGgxMWtgIGFuZCBpbW1lZGlhdGVseSBJIHNlZSB0d28ga2V5IGZpbGVzOiBgcGNpLmNgIGFuZCBgYWhiLmNgLiAgU2luY2UgSSYjMzk7bSB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLCBteSBndXQgdGVsbHMgbWUgdG8gZ28gc3RyYWlnaHQgZm9yIGBhaGIuY2AgZmlyc3QuICBUaGUgQUhCIGludGVyZmFjZSBpcyBvZnRlbiBzaW1wbGVyIGZvciBwcm9iaW5nLCBhbmQgdGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHlvdSYjMzk7bGwgZmluZCB0aGUgY29yZSBkZXZpY2UgcmVnaXN0cmF0aW9uIHJvdXRpbmVzLiAgTGV0JiMzOTtzIHNlZSBpZiB0aGF0IGFzc3VtcHRpb24gaG9sZHMgdHJ1ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGhvb2tzIGludG8gdGhlIEFIQiBidXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NTcKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBBSEIgRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIEFIQiBkcml2ZXIgaXMgYmVpbmcgaW5pdGlhbGl6ZWQuIE15IGZpcnN0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSByZWdpc3RyYXRpb24gcHJvY2Vzcy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgaG93IGBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXJgIGlzIHVzZWQgd2l0aGluIHRoZSBgYWhiLmNgIGZpbGUuIFRoaXMgaXMgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50IGZvciBhIHBsYXRmb3JtIGRyaXZlciwgc28gdW5kZXJzdGFuZGluZyBpdHMgdXNhZ2UgaGVyZSB3aWxsIHF1aWNrbHkgcGFpbnQgYSBwaWN0dXJlIG9mIGhvdyB0aGUgZHJpdmVyIG1ha2VzIGl0c2VsZiBrbm93biB0byB0aGUgc3lzdGVtLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhlIHJlbGV2YW50IHN0cnVjdHVyZXPigJR0aGUgZHJpdmVyIGl0c2VsZiwgYSBsaXN0IG9mIHN1cHBvcnRlZCBkZXZpY2VzLCBhbmQgcGVyaGFwcyBzb21lIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyDigJMgYWxsIGNvbm5lY3RlZCB0aHJvdWdoIHRoaXMgcmVnaXN0cmF0aW9uIGNhbGwuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBkcml2ZXIgYXJjaGl0ZWN0dXJlIGFuZCBob3cgaXQgaG9va3MgaW50byB0aGUgQUhCIGJ1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc5OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipEaXZpbmcgaW50byB0aGUgYGF0aDExa2AgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBgYXRoMTFrYCBkcml2ZXIga2lja3Mgb2ZmLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIGBtb2R1bGVfaW5pdGAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgdGhlIGZ1bmN0aW9uIHdoZXJlIHRoZSBtb2R1bGUgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIHRoZSBrZXJuZWwgYW5kIGdldHMgZXZlcnl0aGluZyBnb2luZy4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBlbnRpcmUgYGF0aDExa2AgZGlyZWN0b3J5LCBub3QganVzdCBhIHNpbmdsZSBmaWxlLiBUaGlzIGlzIGNydWNpYWw7IHNvbWV0aW1lcyBpbml0aWFsaXphdGlvbiBpcyBzcHJlYWQgYWNyb3NzIG11bHRpcGxlIGZpbGVzLCBhbmQgSSBkb24mIzM5O3Qgd2FudCB0byBtaXNzIGFueXRoaW5nIHN1YnRseSBpbXBvcnRhbnQgdGhhdCBtaWdodCBiZSBlbHNld2hlcmUuIEkmIzM5O20gbG9va2luZyBmb3IgKnRoZSogcHJpbWFyeSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9MTMwNz1zdGF0aWMgaW50IGF0aDExa19wY2lfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxNy19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jOjEzMTg6bW9kdWxlX2luaXQoYXRoMTFrX3BjaV9pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1MQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBhIENvZGUgQ29udGV4dCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGFoYi5jYC4gQW5kIG15IGluaXRpYWwgcmVhY3Rpb24/IFdhaXQgYSBtaW51dGUuLi4gdGhhdCBmaWxlbmFtZSBpbW1lZGlhdGVseSB0cmlnZ2VycyBhIGZsYWcuIGBhaGIuY2AuLi4gZG9lcyB0aGF0IG1lYW4gdGhlIEFIQiBidXM/IEFuZCB0aGVuIEkgc2VlIGBhdGgxMWtfYWhiX2luaXRgLiBCaW5nby4gVGhhdCYjMzk7cyBhIGh1Z2UgY2x1ZS4gVGhlIHByZXNlbmNlIG9mIGBhdGgxMWtfYWhiX2luaXRgIGluIHRoaXMgcGFydGljdWxhciBzb3VyY2UgZmlsZSBzdHJvbmdseSBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGluaXRpYWxpemF0aW9uIGNvZGUgcmVsYXRlZCB0byBhbiBBdGhlcm9zIFdpLUZpIGNvbnRyb2xsZXIsIHNwZWNpZmljYWxseSBzb21ldGhpbmcgaW50ZXJhY3Rpbmcgd2l0aCBhbiBBSEIgYnVzIGludGVyZmFjZS4gVGhpcyBpc24mIzM5O3QganVzdCBhIHJhbmRvbSBtb2R1bGUuIFRoZSBgYWhiYCBwYXJ0IG5hcnJvd3MgZG93biB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24gc2lnbmlmaWNhbnRseSwgYW5kIHRoZSBgYXRoMTFrYCBnaXZlcyBtZSBhIGNsZWFyIHZlbmRvciBmb2N1cy4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLiBNeSBoeXBvdGhlc2lzIGlzIHRoaXMgZmlsZSBjb250YWlucyB0aGUgbmVjZXNzYXJ5IGJvb3Qgc3RyYXBwaW5nIGZvciBhbiBhdGgxMWsgZHJpdmVyIG9uIGFuIEFIQiBidXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDExa19haGJfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9NDE2PXN0YXRpYyB2b2lkIGF0aDExa19haGJfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQyMzpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2luaXRfcW1pX2NlX2NvbmZpZyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MTEzOT1zdGF0aWMgaW50IGF0aDExa19haGJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEyMjA6XHRhdGgxMWtfYWhiX2luaXRfcW1pX2NlX2NvbmZpZyhhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyMjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MzQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBNb2R1bGUgSGllcmFyY2h5KioKCkFscmlnaHQsIHNvIGBhdGgxMWtgLCB0aGF0JiMzOTtzIGNsZWFybHkgYSBtb2R1bGUgaW4gdGhlIGtlcm5lbC4gQnV0IGhhbmcgb24gYSBzZWNvbmQsIGNvdWxkIHNvbWUgb2YgaXRzIGNvcmUgZnVuY3Rpb25hbGl0eSwgbWF5YmUgc29tZXRoaW5nIGxpa2UgYGFoYi5jYCwgYmUgYnVpbHQgZGlyZWN0bHkgaW50byBhbm90aGVyIG1vZHVsZT8gVGhhdCB3b3VsZG4mIzM5O3QgYmUgZW50aXJlbHkgdW51c3VhbCwgZGVwZW5kaW5nIG9uIGhvdyB0aGV5JiMzOTt2ZSBzdHJ1Y3R1cmVkIHRoaW5ncy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSBhcmUgbm90IGFzc3VtaW5nIGFueXRoaW5nIGFuZCBjaGVjayB0aGUgcHJvamVjdCBzdHJ1Y3R1cmUuIFRoZSBmaXJzdCBwbGFjZSB0byBnbyBpcyBhbHdheXMgdGhlIGBNYWtlZmlsZWAgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrYCBkaXJlY3RvcnkuIFRoYXQgd2lsbCB0ZWxsIHRoZSB0cnV0aCBhYm91dCB3aGF0IGlzIGJ1aWx0IHdoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0b2JqLSQoQ09ORklHX0FUSDExSykgJiM0Mzs9IGF0aDExay5vXG4gICAzOlx0YXRoMTFrLXkgJiM0Mzs9IGNvcmUubyBcXFxuICAgNDpcdFx0ICAgIGhhbC5vIFxcXG4gICA1Olx0XHQgICAgaGFsX3R4Lm8gXFxcbiAgIDY6XHRcdCAgICBoYWxfcngubyBcXFxuICAgNzpcdFx0ICAgIHdtaS5vIFxcXG4gICA4Olx0XHQgICAgbWFjLm8gXFxcbiAgIDk6XHRcdCAgICByZWcubyBcXFxuICAxMDpcdFx0ICAgIGh0Yy5vIFxcXG4gIDExOlx0XHQgICAgcW1pLm8gXFxcbiAgMTI6XHRcdCAgICBkcC5vICBcXFxuICAxMzpcdFx0ICAgIGRwX3R4Lm8gXFxcbiAgMTQ6XHRcdCAgICBkcF9yeC5vIFxcXG4gIDE1Olx0XHQgICAgZGVidWcubyBcXFxuICAxNjpcdFx0ICAgIGNlLm8gXFxcbiAgMTc6XHRcdCAgICBwZWVyLm8gXFxcbiAgMTg6XHRcdCAgICBkYnJpbmcubyBcXFxuICAxOTpcdFx0ICAgIGh3Lm8gXFxcbiAgMjA6XHRcdCAgICBwY2ljLm8gXFxcbiAgMjE6XHRcdCAgICBmdy5vIFxcXG4gIDIyOlx0XHQgICAgcDJwLm9cbiAgMjM6XHRcbiAgMjQ6XHRhdGgxMWstJChDT05GSUdfQVRIMTFLX0RFQlVHRlMpICYjNDM7PSBkZWJ1Z2ZzLm8gZGVidWdmc19odHRfc3RhdHMubyBkZWJ1Z2ZzX3N0YS5vXG4gIDI1Olx0YXRoMTFrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG4gIDI2Olx0YXRoMTFrLSQoQ09ORklHX0FUSDExS19UUkFDSU5HKSAmIzQzOz0gdHJhY2Uub1xuICAyNzpcdGF0aDExay0kKENPTkZJR19USEVSTUFMKSAmIzQzOz0gdGhlcm1hbC5vXG4gIDI4Olx0YXRoMTFrLSQoQ09ORklHX0FUSDExS19TUEVDVFJBTCkgJiM0Mzs9IHNwZWN0cmFsLm9cbiAgMjk6XHRhdGgxMWstJChDT05GSUdfUE0pICYjNDM7PSB3b3cub1xuICAzMDpcdGF0aDExay0kKENPTkZJR19ERVZfQ09SRURVTVApICYjNDM7PSBjb3JlZHVtcC5vXG4gIDMxOlx0YXRoMTFrLSQoQ09ORklHX0FUSDExS19DRlIpICYjNDM7PSBjZnIub1xuICAzMjpcdFxuICAzMzpcdG9iai0kKENPTkZJR19BVEgxMUtfQUhCKSAmIzQzOz0gYXRoMTFrX2FoYi5vXG4gIDM0Olx0YXRoMTFrX2FoYi15ICYjNDM7PSBhaGIub1xuICAzNTpcdFxuICAzNjpcdG9iai0kKENPTkZJR19BVEgxMUtfUENJKSAmIzQzOz0gYXRoMTFrX3BjaS5vXG4gIDM3Olx0YXRoMTFrX3BjaS15ICYjNDM7PSBtaGkubyBwY2kub1xuICAzODpcdFxuICAzOTpcdCMgZm9yIHRyYWNpbmcgZnJhbWV3b3JrIHRvIGZpbmQgdHJhY2UuaFxuICA0MDpcdENGTEFHU190cmFjZS5vIDo9IC1JJChzcmMpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MzEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYXRoMTFrIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhlIGBhdGgxMWtgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgYXRoMTFrX2FoYmAgYW5kIGBhdGgxMWtfcGNpYCBtb2R1bGVzLCBhbmQgaXQgbG9va3MgbGlrZSB0aGV5IGFyZSBzZXBhcmF0ZSBmcm9tIHRoZSBjb3JlIGBhdGgxMWtgIG1vZHVsZSwgYnV0IHRoZSBgbWFjLmNgIGNvZGUgaXMgYWN0dWFsbHkgcGFydCBvZiB0aGF0IGNvcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIEkgZXZlbiBmdXp6IHRoaXMgdGhpbmcgd2l0aGluIFFFTVU/IFRoaXMgaXMgYSBkcml2ZXIsIHJpZ2h0PyBEZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCBwaHlzaWNhbCBoYXJkd2FyZSB2aWEgUENJIG9yIEFIQi4gSG1tLCBubyBvYnZpb3VzIHNvZnR3YXJlIGVtdWxhdGlvbiBpcyBwcmVzZW50IGxpa2UgeW91IHNlZSB3aXRoIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZoY2lgIGZvciBVU0IuIFRoYXTigJlzIGEgcHJvYmxlbS4gSSBjYW4mIzM5O3QgdGhpbmsgb2YgYSBjbGVhbiB3YXkgdG8gcmVhY2ggdGhpcyBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IHNvbWUga2luZCBvZiByZWFsIGhhcmR3YXJlIHByZXNlbnQuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIHRob3VnaC4gSXQmIzM5O3MgYWx3YXlzIHdvcnRoIGEgdGhvcm91Z2ggc2VhcmNoLiBBcmUgdGhlcmUgYW55IHZpcnR1YWwgZHJpdmVycyBvciBhbnkgdGVzdCBtb2RlcyB0aGF0IG1pZ2h0IHByb3ZpZGUgYSBob29rPyBJIHNob3VsZCB0cmFjZSB0aGUgY2FsbCBjaGFpbi4gV2hlcmUgaXMgYGF0aDExa19tYWNfc2V0dXBfY2hhbm5lbHNfcmF0ZXNgIGNhbGxlZCBmcm9tPyBLbm93aW5nIHRoZSBjYWxsIGNoYWluIGNvdWxkIHBvdGVudGlhbGx5IGV4cG9zZSBhbiBlbnRyeSBwb2ludCB0byB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfbWFjX3NldHVwX2NoYW5uZWxzX3JhdGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMDE0Mz1zdGF0aWMgdTMyIGF0aDExa19nZXRfcGh5X2lkKHN0cnVjdCBhdGgxMWsgKmFyLCB1MzIgYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwMTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDE1OTpzdGF0aWMgaW50IGF0aDExa19tYWNfc2V0dXBfY2hhbm5lbHNfcmF0ZXMoc3RydWN0IGF0aDExayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwMTYwLVx0XHRcdFx0XHQgICB1MzIgc3VwcG9ydGVkX2JhbmRzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM9MTA0NTE9c3RhdGljIGludCBfX2F0aDExa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDExayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDQ3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTA0NzY6XHRyZXQgPSBhdGgxMWtfbWFjX3NldHVwX2NoYW5uZWxzX3JhdGVzKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDQ3Ny1cdFx0XHRcdFx0ICAgICAgY2FwLVx1MDAzZXN1cHBvcnRlZF9iYW5kcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE1OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0MzAKCQkJCQkJCW91dHB1dDogOTcKCQkJCQkJCXRob3VnaHRzOiAyMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBnaXZlbiB0aGlzIGZ1bmN0aW9uLCBgX19hdGgxMWtfbWFjX3JlZ2lzdGVyYCwgYW5kIHRoZSBpbml0aWFsIHJlYWN0aW9uIGlzICYjMzQ7SG1tLCBjb3VsZCB0aGlzIGJlIGEgZnV6emluZyB0YXJnZXQ/JiMzNDsgQnV0IGxldCYjMzk7cyBicmVhayBpdCBkb3duLCBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hhdCBJIGRvLgoKRmlyc3QsIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIHdoZXJlIHRoaXMgY2FsbCByZXNpZGVzLCBleHBsaWNpdGx5IHJlcXVpcmVzIGEgUENJIG9yIEFIQiBkZXZpY2UgdG8gcHJvYmUuIFJpZ2h0IGF3YXksIHRoYXQmIzM5O3MgYSByZWQgZmxhZy4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IGFueSBjb2RlIHBhdGggY29udGluZ2VudCBvbiB0aGF0IGtpbmQgb2YgKmFjdHVhbCogaGFyZHdhcmUgaXMgZ29pbmcgdG8gYmUgdmlydHVhbGx5IGltcG9zc2libGUgdG8gdHJpZ2dlciBpbiBhbnkgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkgb3IgUUVNVS4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgKnJlYWwqIGhhcmR3YXJlIHJlcXVpcmVtZW50cywgbm90IGVtdWxhdGVkLgoKVGhlbiwgdGhlcmUmIzM5O3MgdGhlIGRlZmluaXRpdmUgZ3VpZGFuY2U6IGlmIHRoZSBwYXRjaCYjMzk7cyBzY29wZSBpcyByZXN0cmljdGVkIHRvIGNvZGUgdGhhdCYjMzk7cyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIHRob3NlIHZpcnR1YWxpemVkIHNldHVwcywgb3IgaW52b2x2ZXMgc3BlY2lhbGl6ZWQgaGFyZHdhcmUsIHRoZW4gaXTigJlzIGEgJiMzNDtuby1nbyYjMzQ7IGZvciBmdXp6aW5nLiBTcGVjaWZpY2FsbHksIHRoZXkgY2FsbCBvdXQgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgdGhhdCBuZWVkIHBoeXNpY2FsIFBDSWUgY2FyZHMgd2hpY2ggYXJlICpub3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQmIzM5O3MgdGhlIGtleS4KCk5vdywgbG9va2luZyBhdCBgYXRoMTFrYCBzcGVjaWZpY2FsbHksIEkgcmVjb2duaXplIHRoYXQgdGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIsIFF1YWxjb21tLCBhbmQsIGJlaW5nIGEgV2ktRmkgZHJpdmVyLCB0aGlzIGlzIGV4cGVjdGVkIHRvIHVzZSBlaXRoZXIgUENJZSBvciBBSEIgaGFyZHdhcmUgZm9yIGl0cyBvcGVyYXRpb24uIEFuZCB0aGUga2lja2VyPyBJdCAqcmVxdWlyZXMqIHRoaXMgcGh5c2ljYWwgaGFyZHdhcmUuIFN0YW5kYXJkIFFFTVUsIGFzIHdlIGtub3csIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhpcyBzdHVmZiBwcm9wZXJseSwgaWYgYXQgYWxsLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGUgaW5oZXJlbnQgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIEkgaGF2ZSwgSSBjb25jbHVkZSB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIG5vdCB3b3J0aCBmdXp6aW5nLiBJdCYjMzk7cyBhIG5vbi1zdGFydGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgZm9yIFF1YWxjb21tIGhhcmR3YXJlLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIG9yIEFIQiBoYXJkd2FyZSB0byBwcm9iZSBhbmQgaW5pdGlhbGl6ZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFdpLUZpIGRyaXZlciBmb3IgUXVhbGNvbW0gaGFyZHdhcmUuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgb3IgQUhCIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBpbml0aWFsaXplLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNToyNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6MjEuODY3ODgyNzc2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEzNTQzNjY4NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyIGZvciBRdWFsY29tbSBoYXJkd2FyZS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBvciBBSEIgaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGluaXRpYWxpemUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE1OjI1OjIxLjg2Nzg5MDAxNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAyMDg0MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDQwYWY4NjI2MmU0MTZkMzVmNTFhYzZhMTQ2YzY1ZmIxNzhhNmE4Y1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxNSAxNToyNToyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbmluZGV4IDJkNTVjZGM0ZDE2NWQuLmUyM2EyOTVmOWE3ZjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcXG5AQCAtMTAxNzIsNiArMTAxNzIsMTUgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX3NldHVwX2NoYW5uZWxzX3JhdGVzKHN0cnVjdCBhdGgxMWsgKmFyLFxcbiBcXHRyZWdfY2FwID0gXFx1MDAyNmFyLVxcdTAwM2VhYi1cXHUwMDNlaGFsX3JlZ19jYXBbYXItXFx1MDAzZXBkZXZfaWR4XTtcXG4gXFx0dGVtcF9yZWdfY2FwID0gcmVnX2NhcDtcXG4gXFxuK1xcdC8qIFFDTjYxMjIgZmlybXdhcmUgb21pdHMgdGhlIFVOSUktMyBiYW5kICg1NzI1LTU4NTAgTUh6LCBjaGFubmVsc1xcbitcXHQgKiAxNDktMTY1KSBmcm9tIGhpZ2hfNWdoel9jaGFuLCB3aGljaCBtYWtlcyB0aGUgZHJpdmVyIG1hcmsgdGhvc2VcXG4rXFx0ICogY2hhbm5lbHMgSUVFRTgwMjExX0NIQU5fRElTQUJMRUQuIENsYW1wIGl0IHRvIHRoZSBzdGFuZGFyZCA1LjggR0h6XFxuK1xcdCAqIHVwcGVyIGJvdW5kIHNvIGNoYW5uZWxzIDE0OS0xNjUgcmVtYWluIHVzYWJsZS5cXG4rXFx0ICovXFxuK1xcdGlmIChhci1cXHUwMDNlYWItXFx1MDAzZWh3X3JldiA9PSBBVEgxMUtfSFdfUUNONjEyMl9IVzEwIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICByZWdfY2FwLVxcdTAwM2VoaWdoXzVnaHpfY2hhbiBcXHUwMDNjIDU4MjUpXFxuK1xcdFxcdHJlZ19jYXAtXFx1MDAzZWhpZ2hfNWdoel9jaGFuID0gNTgyNTtcXG4rXFxuIFxcdGlmIChzdXBwb3J0ZWRfYmFuZHMgXFx1MDAyNiBXTUlfSE9TVF9XTEFOXzJHX0NBUCkge1xcbiBcXHRcXHRjaGFubmVscyA9IGttZW1kdXAoYXRoMTFrXzJnaHpfY2hhbm5lbHMsXFxuIFxcdFxcdFxcdFxcdCAgIHNpemVvZihhdGgxMWtfMmdoel9jaGFubmVscyksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE1OjI1OjIyLjI3MTA4NDUxNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUwOTUxMTM2NjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyIGZvciBRdWFsY29tbSBoYXJkd2FyZS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBvciBBSEIgaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGluaXRpYWxpemUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ0MGFmODYyNjJlNDE2ZDM1ZjUxYWM2YTE0NmM2NWZiMTc4YTZhOGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxNSAxNToyNToyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5pbmRleCAyZDU1Y2RjNGQxNjVkLi5lMjNhMjk1ZjlhN2Y4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuQEAgLTEwMTcyLDYgKzEwMTcyLDE1IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19zZXR1cF9jaGFubmVsc19yYXRlcyhzdHJ1Y3QgYXRoMTFrICphcixcbiBcdHJlZ19jYXAgPSBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VoYWxfcmVnX2NhcFthci1cdTAwM2VwZGV2X2lkeF07XG4gXHR0ZW1wX3JlZ19jYXAgPSByZWdfY2FwO1xuIFxuK1x0LyogUUNONjEyMiBmaXJtd2FyZSBvbWl0cyB0aGUgVU5JSS0zIGJhbmQgKDU3MjUtNTg1MCBNSHosIGNoYW5uZWxzXG4rXHQgKiAxNDktMTY1KSBmcm9tIGhpZ2hfNWdoel9jaGFuLCB3aGljaCBtYWtlcyB0aGUgZHJpdmVyIG1hcmsgdGhvc2VcbitcdCAqIGNoYW5uZWxzIElFRUU4MDIxMV9DSEFOX0RJU0FCTEVELiBDbGFtcCBpdCB0byB0aGUgc3RhbmRhcmQgNS44IEdIelxuK1x0ICogdXBwZXIgYm91bmQgc28gY2hhbm5lbHMgMTQ5LTE2NSByZW1haW4gdXNhYmxlLlxuK1x0ICovXG4rXHRpZiAoYXItXHUwMDNlYWItXHUwMDNlaHdfcmV2ID09IEFUSDExS19IV19RQ042MTIyX0hXMTAgXHUwMDI2XHUwMDI2XG4rXHQgICAgcmVnX2NhcC1cdTAwM2VoaWdoXzVnaHpfY2hhbiBcdTAwM2MgNTgyNSlcbitcdFx0cmVnX2NhcC1cdTAwM2VoaWdoXzVnaHpfY2hhbiA9IDU4MjU7XG4rXG4gXHRpZiAoc3VwcG9ydGVkX2JhbmRzIFx1MDAyNiBXTUlfSE9TVF9XTEFOXzJHX0NBUCkge1xuIFx0XHRjaGFubmVscyA9IGttZW1kdXAoYXRoMTFrXzJnaHpfY2hhbm5lbHMsXG4gXHRcdFx0XHQgICBzaXplb2YoYXRoMTFrXzJnaHpfY2hhbm5lbHMpLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6MjIuMjcxMDg2MzU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3NDg0OTUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBRdWFsY29tbSBXaS1GaSA2IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIGJlZW4gYXBwbGllZCB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY2AuIFNlZW1zIGxpa2UgdGhleSdyZSBwdXR0aW5nIGluIGEgd29ya2Fyb3VuZCDigJMgc3BlY2lmaWNhbGx5IGZvciBRQ042MTIyIGZpcm13YXJlIHRoYXQncyBhcHBhcmVudGx5IGRyb3BwaW5nIHRoZSBVTklJLTMgYmFuZC4gVGhlIGNvZGUgaXMgY2hlY2tpbmcgdGhlIGhhcmR3YXJlIHJldmlzaW9uLCBgYXItXHUwMDNlYWItXHUwMDNlaHdfcmV2ID09IEFUSDExS19IV19RQ042MTIyX0hXMTBgLCBhbmQgdGhlbiBhZGp1c3RpbmcgYHJlZ19jYXAtXHUwMDNlaGlnaF81Z2h6X2NoYW5gLiBTdGFuZGFyZCBiYW5kIGxpbWl0YXRpb24gd29yayBhcm91bmQuXG5cbldhaXQgYSBzZWNvbmTigKYgYGF0aDExa2AuIFJpZ2h0LCB0aGF0J3MgdGhlIFF1YWxjb21tIFdpLUZpIDYgZHJpdmVyLiBOb3csIGlzIHRoaXMgZHJpdmVyIGVtdWxhdGVkIGluIFFFTVU/IEknbSBwcmV0dHkgc3VyZSBpdCdzIG5vdC4gYGF0aDExa2AgaXMgdHlwaWNhbGx5IHVzZWQgd2l0aCBwaHlzaWNhbCBQQ0llLCBBSEIsIG9yIFNOT0MgV2ktRmkgY2FyZHMuXG5cblRoaXMgc3BhcmtzIGFuIGludGVyZXN0aW5nIHRob3VnaHQuIFNpbmNlIGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCBoYXJkd2FyZSwgSSB3b25kZXIgYWJvdXQgZnV6emluZyBpdC4gQ2FuIHdlIHVzZSB0aGUgcGh5c2ljYWwgZHJpdmVyIHRvIGluZHVjZSB1bmV4cGVjdGVkIGJlaGF2aW91cj9cblxuTGV0J3Mgc2VlIGlmIHRoZXJlJ3MgKmFueSoga2luZCBvZiBzaW11bGF0ZWQgaGFyZHdhcmUgc3VwcG9ydCBmb3IgYGF0aDExa2AuIEknbGwgZG8gYSBxdWljayBzZWFyY2ggd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9gIGRpcmVjdG9yeS4gTWF5YmUgdGhlcmUncyBhIHZpcnR1YWwgaW50ZXJmYWNlIG9yIHNvbWV0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyMywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE1OjI1OjI2Ljg0NTkzOTM4M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTQzOTAyNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjODAyMTFfaHdzaW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE1OjI1OjI2Ljg5NTM4NTY0OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3Njc2NTg1NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYGF0aDExa2AgRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBuYXR1cmUgb2YgdGhlIGBhdGgxMWtgIGRyaXZlci4gVGhlIG9idmlvdXMgZmlyc3Qgc3RlcCBpcyB0byBhc2NlcnRhaW4gaWYgaXQncyBhIFBDSSBkcml2ZXIuIFRoaXMgaXMgYSBjcnVjaWFsIGZvdW5kYXRpb25hbCBwb2ludDsgdW5kZXJzdGFuZGluZyB0aGUgYnVzIGludGVyZmFjZSBpcyBmdW5kYW1lbnRhbCB0byBhbnkgZnVydGhlciBhbmFseXNpcy4gSSBuZWVkIHRvIGtub3cgaWYgaXQncyBpbnRlcmFjdGluZyBkaXJlY3RseSB3aXRoIHRoZSBQQ0kgYnVzLiBUaGlzIGRldGVybWluZXMgdGhlIGtpbmQgb2YgcmVzb3VyY2VzIHRoZSBkcml2ZXIgaXMgbWFuYWdpbmcgYW5kIHdoYXQga2luZCBvZiBpbnRlcnJ1cHQvRE1BIGNvbmZpZ3VyYXRpb25zIEkgY2FuIGV4cGVjdC4gQSBxdWljayBjb25maXJtYXRpb24gaGVyZSB3aWxsIHN0ZWVyIHRoZSByZXN0IG9mIG15IGludmVzdGlnYXRpb24uIExldCdzIHNlZS4uLiB0aGUgYGF0aDExa2AgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgYSBjb25uZWN0aW9uIHdpdGggQXRoZXJvcywgYnV0IHRoYXQgZG9lc24ndCBkZWZpbml0aXZlbHkgdGVsbCBtZSBhYm91dCB0aGUgaGFyZHdhcmUgaW50ZXJmYWNlLiBHb3R0YSBjb25maXJtIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNToyOS42NjMwNDY4NDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4NzUyNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEzMDc9c3RhdGljIGludCBhdGgxMWtfcGNpX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jOjEzMTE6XFx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2YXRoMTFrX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxMi1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNToyOS43MTE5MzA3ODJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODQ0Nzk4MjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU2l0dWF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBQQ0kgZHJpdmVyLCBjbGVhcmx5IG1lYW50IHRvIGludGVyYWN0IGRpcmVjdGx5IHdpdGggcGh5c2ljYWwgaGFyZHdhcmUuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gYnVybmluZyBpbiBteSBtaW5kIGlzOiBjYW4gSSBldmVuICp0b3VjaCogdGhpcyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IE15IHBhc3QgZXhwZXJpZW5jZSBzaG91dHMgXCJ1c3VhbGx5IG5vLlwiIFRoaW5rIGFib3V0IHlvdXIgc3RhbmRhcmQgV2ktRmkgZHJpdmVycyBsaWtlIGF0aDExaywgaXdsd2lmaSwgb3IgbXQ3NiDigJMgdGhleSdyZSBub3QgZ2VuZXJhbGx5IGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBUaGV5IGRlbWFuZCB0aGUgcmVhbCBkZWFsLlxuXG5UaGVuIGEgZmxpY2tlciBvZiBob3BlLiBJIHJlY2FsbCBzeXprYWxsZXIgaGFzIHNvbWUgbWVjaGFuaXNtcyB0byBmdXp6IHRoZSBXaS1GaSBzdGFjayB2aWEgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHRoYXQgZm9jdXNlcyBvbiB0aGUgYG1hYzgwMjExYCBjb3JlLiBUaGUgcmVhbCBjaGFsbGVuZ2UgY29tZXMgd2l0aCBzcGVjaWZpYyBkcml2ZXJzLiBGb3IgYW4gYXRoMTFrIGRyaXZlciwgaW5pdGlhbGl6YXRpb24gZGVtYW5kcyB0aGUgYWN0dWFsIGhhcmR3YXJlIHRvIHByb2JlLiBJdCB3aWxsIGVycm9yIG91dCB3aXRob3V0IHRoZSBkZXZpY2UuXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBkZWVwZXIuIElzIHRoZXJlICphbnkqIGZvcm0gb2Ygc29mdHdhcmUgZW11bGF0aW9uIGZvciBhdGgxMWsgb3V0IHRoZXJlPyBJIG5lZWQgdG8gY2hlY2sgaWYgc29tZSBjbGV2ZXIgaW5kaXZpZHVhbCBoYXMgZm91bmQgYSB3b3JrYXJvdW5kLiBMZXQncyBzZWUgd2hhdCdzIGF2YWlsYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE2NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNTozMy41NTY3MzI1NjlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1MDIxNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz0xMzA3PXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEzMTctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTMxODptb2R1bGVfaW5pdChhdGgxMWtfcGNpX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6MzMuNjA2MjQwNjk0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzNDM0NzY0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKlRoZSBVbmV4cGVjdGVkIEludGVyc2VjdGlvbioqXG5cbkhvbGQgb24gYSBtaW51dGUuLi4gSSB3YXMganVzdCBmb2N1c2luZyBvbiB0aGUgaW50cmljYWNpZXMgb2YgdGhpcyB3aXJlbGVzcyBjaGlwc2V0LCBzcGVjaWZpY2FsbHkgKmF0aDExayosIGFuZCBteSBtZW50YWwgbW9kZWwgd2FzIHNvbGVseSBvbiB0aGUgTUFDIGFuZCBQSFkuIEJ1dCB0aGVuIGl0IGhpdCBtZSDigJMgSSBuZWVkIHRvIHJlYWxseSBkaWcgYmFjayBpbnRvIHRoZSBoYXJkd2FyZSBhcmNoaXRlY3R1cmUuIEl0J3Mgbm90IGp1c3QgdGhlIHJhZGlvIGl0c2VsZiB0aGF0IEkgbmVlZCB0byBjb25zaWRlciwgYnV0IHRoZSB1bmRlcmx5aW5nIGluZnJhc3RydWN0dXJlLiBUaGF0IGluaXRpYWwgcXVlc3Rpb24gYWJvdXQgZGF0YSBmbG93IGdvdCBtZSB0aGlua2luZy4gSSB3YXNuJ3QganVzdCBjb25jZW50cmF0aW5nIG9uIHRoZSBwcm90b2NvbHMuXG5cblNwZWNpZmljYWxseSwgSeKAmW0gcmVhbGl6aW5nIG5vdyB0aGF0ICphdGgxMWsqLCBzdXJwcmlzaW5nbHksIGFsc28gaW5jb3Jwb3JhdGVzIHN1cHBvcnQgZm9yIEFIQiAoQWR2YW5jZWQgSGlnaC1wZXJmb3JtYW5jZSBCdXMpIGFuZCBTTk9DIChTeXN0ZW0gTmV0d29yay1vbi1DaGlwKS4gVGhpcyBpcyBhIGdhbWUgY2hhbmdlciBmb3Igc2V2ZXJhbCByZWFzb25zLiBJdCBtZWFucyB0aGUgZGF0YSBwYXRod2F5cyBhcmUgbW9yZSBjb21wbGV4IHRoYW4gSSBpbml0aWFsbHkgYXNzdW1lZC4gVGhpcyBtZWFucyBJIG5lZWQgdG8gcmUtZXZhbHVhdGUgaG93IHRoZSBkYXRhIGdldHMgZnJvbSB0aGUgTUFDIHRvIHRoZSByYWRpby4gSSB3YXMgZm9jdXNlZCBvbiB0aGUgcmFkaW8gaW50ZXJmYWNlLCBidXQgbm93IEkgbmVlZCB0byBmYWN0b3IgaW4gaG93IHRoZSBBSEIgYW5kIFNOT0MgYWZmZWN0IGxhdGVuY3ksIHRocm91Z2hwdXQsIGFuZCBwb3RlbnRpYWwgYm90dGxlbmVja3Mgd2l0aGluIHRoZSBzaWxpY29uIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcxMSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE1OjI1OjM3LjI0MDU5MTcyMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5ODg0NzUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6MzcuMjg5NTg4OTY2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NzA3ODY1NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgTmV0d29yayBEcml2ZXIgSXNzdWUqKlxuXG5Pa2F5LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGxpa2VseSBzb3VyY2Ugb2YgdGhpcyBwcm9ibGVtLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIGRpZ2dpbmcgaW4gdGhlIGxvdy1sZXZlbCBzdHVmZi4gR2l2ZW4gd2hhdCBJJ20gc2VlaW5nLCBJJ20gdGhpbmtpbmcgdGhlIEFIQiBidXMgaW50ZXJhY3Rpb24gaW4gdGhlIGF0aDExayBkcml2ZXIgZmFtaWx5IGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYCBkaXJlY3RvcnkgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIGEgY29ycmVzcG9uZGluZyBgYWhiLmNgIGZpbGUsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRoYXQgaGFuZGxlcyB0aGUgQUhCIGludGVyZmFjZSB3aXRoIHRoZSBjaGlwc2V0LiBGcm9tIHRoZXJlLCBJJ2xsIG5lZWQgdG8gbG9vayBhdCBob3cgZGF0YSBpcyBiZWluZyB0cmFuc2ZlcnJlZCwgYW55IGVycm9yIGhhbmRsaW5nIHJlbGF0ZWQgdG8gYnVzIHRyYW5zZmVycywgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBib3R0bGVuZWNrcyBvciBpbmNvcnJlY3QgY29uZmlndXJhdGlvbnMuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIHRoZSBwcmVjaXNlIHBvaW50IHdoZXJlIHRoaW5ncyBhcmUgZ29pbmcgd3JvbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMjAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNTo0MC4xNjAzNzgyMTNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM3OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJhaGIuY1wiLFxuICAgIFwiYWhiLmhcIixcbiAgICBcImNlLmNcIixcbiAgICBcImNlLmhcIixcbiAgICBcImNmci5jXCIsXG4gICAgXCJjZnIuaFwiLFxuICAgIFwiY29yZS5jXCIsXG4gICAgXCJjb3JlLmhcIixcbiAgICBcImNvcmVkdW1wLmNcIixcbiAgICBcImNvcmVkdW1wLmhcIixcbiAgICBcImRicmluZy5jXCIsXG4gICAgXCJkYnJpbmcuaFwiLFxuICAgIFwiZGVidWcuY1wiLFxuICAgIFwiZGVidWcuaFwiLFxuICAgIFwiZGVidWdmcy5jXCIsXG4gICAgXCJkZWJ1Z2ZzLmhcIixcbiAgICBcImRlYnVnZnNfaHR0X3N0YXRzLmNcIixcbiAgICBcImRlYnVnZnNfaHR0X3N0YXRzLmhcIixcbiAgICBcImRlYnVnZnNfc3RhLmNcIixcbiAgICBcImRlYnVnZnNfc3RhLmhcIixcbiAgICBcImRwLmNcIixcbiAgICBcImRwLmhcIixcbiAgICBcImRwX3J4LmNcIixcbiAgICBcImRwX3J4LmhcIixcbiAgICBcImRwX3R4LmNcIixcbiAgICBcImRwX3R4LmhcIixcbiAgICBcImZ3LmNcIixcbiAgICBcImZ3LmhcIixcbiAgICBcImhhbC5jXCIsXG4gICAgXCJoYWwuaFwiLFxuICAgIFwiaGFsX2Rlc2MuaFwiLFxuICAgIFwiaGFsX3J4LmNcIixcbiAgICBcImhhbF9yeC5oXCIsXG4gICAgXCJoYWxfdHguY1wiLFxuICAgIFwiaGFsX3R4LmhcIixcbiAgICBcImhpZi5oXCIsXG4gICAgXCJodGMuY1wiLFxuICAgIFwiaHRjLmhcIixcbiAgICBcImh3LmNcIixcbiAgICBcImh3LmhcIixcbiAgICBcIm1hYy5jXCIsXG4gICAgXCJtYWMuaFwiLFxuICAgIFwibWhpLmNcIixcbiAgICBcIm1oaS5oXCIsXG4gICAgXCJwMnAuY1wiLFxuICAgIFwicDJwLmhcIixcbiAgICBcInBjaS5jXCIsXG4gICAgXCJwY2kuaFwiLFxuICAgIFwicGNpYy5jXCIsXG4gICAgXCJwY2ljLmhcIixcbiAgICBcInBlZXIuY1wiLFxuICAgIFwicGVlci5oXCIsXG4gICAgXCJxbWkuY1wiLFxuICAgIFwicW1pLmhcIixcbiAgICBcInJlZy5jXCIsXG4gICAgXCJyZWcuaFwiLFxuICAgIFwicnhfZGVzYy5oXCIsXG4gICAgXCJzcGVjdHJhbC5jXCIsXG4gICAgXCJzcGVjdHJhbC5oXCIsXG4gICAgXCJ0ZXN0bW9kZS5jXCIsXG4gICAgXCJ0ZXN0bW9kZS5oXCIsXG4gICAgXCJ0aGVybWFsLmNcIixcbiAgICBcInRoZXJtYWwuaFwiLFxuICAgIFwidHJhY2UuY1wiLFxuICAgIFwidHJhY2UuaFwiLFxuICAgIFwid21pLmNcIixcbiAgICBcIndtaS5oXCIsXG4gICAgXCJ3b3cuY1wiLFxuICAgIFwid293LmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6NDAuMTYwNTEyOTkzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjMwNDk4MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGBhaGIuY2AncyBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBgYWhiLmNgIGlzIG9uIHRoZSBzY2VuZS4gSW50ZXJlc3RpbmcuIE15IGluaXRpYWwgZm9jdXMgaXMgd2hhdCBpdCdzIHJlZ2lzdGVyaW5nIHdpdGhpbiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIG5hdHVyZSBvZiBpdHMgcmVnaXN0cmF0aW9uLiBJcyB0aGlzIG1vZHVsZSByZWdpc3RlcmluZyBhIHNwZWNpZmljIGRldmljZSwgYSBzZXJ2aWNlLCBhIHBhcnRpY3VsYXIgaW50ZXJydXB0IGhhbmRsZXIsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgY29udGV4dCBpcyBjcnVjaWFsLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIHR5cGljYWwgcmVnaXN0cmF0aW9uIHBhdHRlcm5zIEknbSBmYW1pbGlhciB3aXRoIOKAkyB0aGUgY2FsbHMgdG8gYGRldmljZV9yZWdpc3RlcigpYCwgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigpYCwgYGNkZXZfYWRkKClgLCBgcmVxdWVzdF9pcnEoKWAsIGFuZCB0aGUgbGlrZS4gVGhpcyB0ZWxscyB0aGUgd2hvbGUgc3RvcnksIGl0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZC4gXG5Gcm9tIHRoZXJlLCBJIHdhbnQgdG8gYW5hbHl6ZSB0aGUgc3VwcGxpZWQgc3RydWN0dXJlcyBhbmQgdGhlaXIgY29udGVudHM6IHRoZSBkZXZpY2Ugc3RydWN0dXJlLCBjaGFyYWN0ZXIgZGV2aWNlIGRhdGEsIGRyaXZlciBpbmZvcm1hdGlvbiBhbmQgcmVzb3VyY2UgZGF0YSwgaXJxIG51bWJlcnMgYW5kIGZsYWdzLiBUaGF0IHdpbGwgcmV2ZWFsIHRoZSBleGFjdCByZXNvdXJjZXMgYW5kIGludGVyZmFjZXMgdGhhdCBhcmUgYmVpbmcgYnJvdWdodCBpbnRvIHRoZSBzeXN0ZW0uIEtub3dpbmcgdGhlIGRhdGEgd2lsbCBxdWlja2x5IGhlbHAgbWUgdG8gZGV0ZXJtaW5lIGhvdyBpdCdzIGludGVuZGVkIHRvIGludGVyYWN0IHdpdGggb3RoZXIga2VybmVsIGNvbXBvbmVudHMgYW5kIHdpdGggdXNlcnNwYWNlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgaGFuZGxlIG9uIGhvdyB0aGlzIHRoaW5nIGlzIGJlaGF2aW5nLCBhc3N1bWluZyB0aGVyZSBhcmUgbm8gZ2xhcmluZyBhbm9tYWxpZXMgb3IgdHJpY2tzLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6NDc2NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNTo0NC4yODM1NjYyODhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MzA0OTY1MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6NDQuNTY2NjIzMjM4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDUwMDYwNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUgd2UgZ28uXG5cbioqTmF2aWdhdGluZyB0aGUgQ29kZWJhc2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIGBjb3JlLmNgLi4uIHdoYXQncyB0aGlzIGZpbGUgYWxsIGFib3V0PyBHaXZlbiBteSBleHBlcmllbmNlIGluIFsqVXNlcidzIEZpZWxkIG9mIEV4cGVydGlzZSpdLCB0aGF0IGZpbGUgbmFtZSB1c3VhbGx5IHNpZ25pZmllcyBpdCdzIGxpa2VseSB0byBjb250YWluIHRoZSBmdW5kYW1lbnRhbCwgY2VudHJhbCBsb2dpYy4gSXQncyBwcm9iYWJseSB0aGUgaGVhcnQgb2YgdGhpcyBlbnRpcmUgc3lzdGVtLiBJIGV4cGVjdCBpdCB0byBob2xkIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgdGhlIG1haW4gY29udHJvbCBmbG93LCB0aGUgc3R1ZmYgdGhhdCBtYWtlcyBldmVyeXRoaW5nIHRpY2suIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBoYXZpbmcgdG8gZGlnIGluIGRlZXAgaGVyZSwgbG9va2luZyBmb3IgZGVwZW5kZW5jaWVzIG9uLCBvciByZWxhdGlvbnNoaXBzIHdpdGgsIG90aGVyIG1vZHVsZXMuIEl0IGNvdWxkIGJlIGEgc2ltcGxlIGVudHJ5IHBvaW50LCBvciBhIG1hc3NpdmUgZ29kLWNsYXNzLiBPbmx5IG9uZSB3YXkgdG8gZmluZCBvdXQuIExldCdzIGdldCBjcmFja2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEwOSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6NDcuNDcxNjMyMzAyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTEzMTYzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE1OjI1OjQ3LjUyMjc3MTcxN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjg2ODMxMTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIGF0aDExayBEcml2ZXIgQXJjaGl0ZWN0dXJlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGF0aDExa2AgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIHR3byBrZXkgZmlsZXM6IGBwY2kuY2AgYW5kIGBhaGIuY2AuICBTaW5jZSBJJ20gdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLCBteSBndXQgdGVsbHMgbWUgdG8gZ28gc3RyYWlnaHQgZm9yIGBhaGIuY2AgZmlyc3QuICBUaGUgQUhCIGludGVyZmFjZSBpcyBvZnRlbiBzaW1wbGVyIGZvciBwcm9iaW5nLCBhbmQgdGhhdCdzIHVzdWFsbHkgd2hlcmUgeW91J2xsIGZpbmQgdGhlIGNvcmUgZGV2aWNlIHJlZ2lzdHJhdGlvbiByb3V0aW5lcy4gIExldCdzIHNlZSBpZiB0aGF0IGFzc3VtcHRpb24gaG9sZHMgdHJ1ZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGhvb2tzIGludG8gdGhlIEFIQiBidXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMjIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNTo1MC4yMDk2MDU3NzVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDg5NTE2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6NTAuMjU0NzExMDJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1Njc3MjMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgQUhCIERyaXZlcioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIEFIQiBkcml2ZXIgaXMgYmVpbmcgaW5pdGlhbGl6ZWQuIE15IGZpcnN0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSByZWdpc3RyYXRpb24gcHJvY2Vzcy4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBob3cgYHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcmAgaXMgdXNlZCB3aXRoaW4gdGhlIGBhaGIuY2AgZmlsZS4gVGhpcyBpcyB0aGUgc3RhbmRhcmQgZW50cnkgcG9pbnQgZm9yIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyB1bmRlcnN0YW5kaW5nIGl0cyB1c2FnZSBoZXJlIHdpbGwgcXVpY2tseSBwYWludCBhIHBpY3R1cmUgb2YgaG93IHRoZSBkcml2ZXIgbWFrZXMgaXRzZWxmIGtub3duIHRvIHRoZSBzeXN0ZW0uIEknbSBleHBlY3RpbmcgdG8gc2VlIHRoZSByZWxldmFudCBzdHJ1Y3R1cmVz4oCUdGhlIGRyaXZlciBpdHNlbGYsIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZGV2aWNlcywgYW5kIHBlcmhhcHMgc29tZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMg4oCTIGFsbCBjb25uZWN0ZWQgdGhyb3VnaCB0aGlzIHJlZ2lzdHJhdGlvbiBjYWxsLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gdGhlIG92ZXJhbGwgZHJpdmVyIGFyY2hpdGVjdHVyZSBhbmQgaG93IGl0IGhvb2tzIGludG8gdGhlIEFIQiBidXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NTcsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNTo1NC4xMTE0ODc4ODJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzE1MDM1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6NTQuMTU4ODEyMjA3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MTI4NDQ2ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipEaXZpbmcgaW50byB0aGUgYGF0aDExa2AgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGBhdGgxMWtgIGRyaXZlciBraWNrcyBvZmYuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gYG1vZHVsZV9pbml0YC4gVGhhdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHRoZSBmdW5jdGlvbiB3aGVyZSB0aGUgbW9kdWxlIHJlZ2lzdGVycyBpdHNlbGYgd2l0aCB0aGUga2VybmVsIGFuZCBnZXRzIGV2ZXJ5dGhpbmcgZ29pbmcuIEknbSBnb2luZyB0byBzY2FuIHRoZSBlbnRpcmUgYGF0aDExa2AgZGlyZWN0b3J5LCBub3QganVzdCBhIHNpbmdsZSBmaWxlLiBUaGlzIGlzIGNydWNpYWw7IHNvbWV0aW1lcyBpbml0aWFsaXphdGlvbiBpcyBzcHJlYWQgYWNyb3NzIG11bHRpcGxlIGZpbGVzLCBhbmQgSSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcgc3VidGx5IGltcG9ydGFudCB0aGF0IG1pZ2h0IGJlIGVsc2V3aGVyZS4gSSdtIGxvb2tpbmcgZm9yICp0aGUqIHByaW1hcnkgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Nzk5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjU6NTYuODcxNjU5NzIyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI4MDU2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEzMDc9c3RhdGljIGludCBhdGgxMWtfcGNpX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxNy19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzoxMzE4Om1vZHVsZV9pbml0KGF0aDExa19wY2lfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzE5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNTo1Ni45MTc5NDQ0MzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4ODg0OTk2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGEgQ29kZSBDb250ZXh0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGFoYi5jYC4gQW5kIG15IGluaXRpYWwgcmVhY3Rpb24/IFdhaXQgYSBtaW51dGUuLi4gdGhhdCBmaWxlbmFtZSBpbW1lZGlhdGVseSB0cmlnZ2VycyBhIGZsYWcuIGBhaGIuY2AuLi4gZG9lcyB0aGF0IG1lYW4gdGhlIEFIQiBidXM/IEFuZCB0aGVuIEkgc2VlIGBhdGgxMWtfYWhiX2luaXRgLiBCaW5nby4gVGhhdCdzIGEgaHVnZSBjbHVlLiBUaGUgcHJlc2VuY2Ugb2YgYGF0aDExa19haGJfaW5pdGAgaW4gdGhpcyBwYXJ0aWN1bGFyIHNvdXJjZSBmaWxlIHN0cm9uZ2x5IHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBpbml0aWFsaXphdGlvbiBjb2RlIHJlbGF0ZWQgdG8gYW4gQXRoZXJvcyBXaS1GaSBjb250cm9sbGVyLCBzcGVjaWZpY2FsbHkgc29tZXRoaW5nIGludGVyYWN0aW5nIHdpdGggYW4gQUhCIGJ1cyBpbnRlcmZhY2UuIFRoaXMgaXNuJ3QganVzdCBhIHJhbmRvbSBtb2R1bGUuIFRoZSBgYWhiYCBwYXJ0IG5hcnJvd3MgZG93biB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24gc2lnbmlmaWNhbnRseSwgYW5kIHRoZSBgYXRoMTFrYCBnaXZlcyBtZSBhIGNsZWFyIHZlbmRvciBmb2N1cy4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLiBNeSBoeXBvdGhlc2lzIGlzIHRoaXMgZmlsZSBjb250YWlucyB0aGUgbmVjZXNzYXJ5IGJvb3Qgc3RyYXBwaW5nIGZvciBhbiBhdGgxMWsgZHJpdmVyIG9uIGFuIEFIQiBidXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNTEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNjowMC4yMDY3OTcxNVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA2MTE1NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTFrX2FoYl9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9NDE2PXN0YXRpYyB2b2lkIGF0aDExa19haGJfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQyMzpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2luaXRfcW1pX2NlX2NvbmZpZyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MTEzOT1zdGF0aWMgaW50IGF0aDExa19haGJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTIxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEyMjA6XFx0YXRoMTFrX2FoYl9pbml0X3FtaV9jZV9jb25maWcoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTIyMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjY6MDAuMjU3NDEyNzk1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTA0MTIxNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE1vZHVsZSBIaWVyYXJjaHkqKlxuXG5BbHJpZ2h0LCBzbyBgYXRoMTFrYCwgdGhhdCdzIGNsZWFybHkgYSBtb2R1bGUgaW4gdGhlIGtlcm5lbC4gQnV0IGhhbmcgb24gYSBzZWNvbmQsIGNvdWxkIHNvbWUgb2YgaXRzIGNvcmUgZnVuY3Rpb25hbGl0eSwgbWF5YmUgc29tZXRoaW5nIGxpa2UgYGFoYi5jYCwgYmUgYnVpbHQgZGlyZWN0bHkgaW50byBhbm90aGVyIG1vZHVsZT8gVGhhdCB3b3VsZG4ndCBiZSBlbnRpcmVseSB1bnVzdWFsLCBkZXBlbmRpbmcgb24gaG93IHRoZXkndmUgc3RydWN0dXJlZCB0aGluZ3MuIExldCdzIG1ha2Ugc3VyZSB3ZSBhcmUgbm90IGFzc3VtaW5nIGFueXRoaW5nIGFuZCBjaGVjayB0aGUgcHJvamVjdCBzdHJ1Y3R1cmUuIFRoZSBmaXJzdCBwbGFjZSB0byBnbyBpcyBhbHdheXMgdGhlIGBNYWtlZmlsZWAgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrYCBkaXJlY3RvcnkuIFRoYXQgd2lsbCB0ZWxsIHRoZSB0cnV0aCBhYm91dCB3aGF0IGlzIGJ1aWx0IHdoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzM0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjY6MDMuMTY3ODI5ODY5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRvYmotJChDT05GSUdfQVRIMTFLKSArPSBhdGgxMWsub1xcbiAgIDM6XFx0YXRoMTFrLXkgKz0gY29yZS5vIFxcXFxcXG4gICA0OlxcdFxcdCAgICBoYWwubyBcXFxcXFxuICAgNTpcXHRcXHQgICAgaGFsX3R4Lm8gXFxcXFxcbiAgIDY6XFx0XFx0ICAgIGhhbF9yeC5vIFxcXFxcXG4gICA3OlxcdFxcdCAgICB3bWkubyBcXFxcXFxuICAgODpcXHRcXHQgICAgbWFjLm8gXFxcXFxcbiAgIDk6XFx0XFx0ICAgIHJlZy5vIFxcXFxcXG4gIDEwOlxcdFxcdCAgICBodGMubyBcXFxcXFxuICAxMTpcXHRcXHQgICAgcW1pLm8gXFxcXFxcbiAgMTI6XFx0XFx0ICAgIGRwLm8gIFxcXFxcXG4gIDEzOlxcdFxcdCAgICBkcF90eC5vIFxcXFxcXG4gIDE0OlxcdFxcdCAgICBkcF9yeC5vIFxcXFxcXG4gIDE1OlxcdFxcdCAgICBkZWJ1Zy5vIFxcXFxcXG4gIDE2OlxcdFxcdCAgICBjZS5vIFxcXFxcXG4gIDE3OlxcdFxcdCAgICBwZWVyLm8gXFxcXFxcbiAgMTg6XFx0XFx0ICAgIGRicmluZy5vIFxcXFxcXG4gIDE5OlxcdFxcdCAgICBody5vIFxcXFxcXG4gIDIwOlxcdFxcdCAgICBwY2ljLm8gXFxcXFxcbiAgMjE6XFx0XFx0ICAgIGZ3Lm8gXFxcXFxcbiAgMjI6XFx0XFx0ICAgIHAycC5vXFxuICAyMzpcXHRcXG4gIDI0OlxcdGF0aDExay0kKENPTkZJR19BVEgxMUtfREVCVUdGUykgKz0gZGVidWdmcy5vIGRlYnVnZnNfaHR0X3N0YXRzLm8gZGVidWdmc19zdGEub1xcbiAgMjU6XFx0YXRoMTFrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG4gIDI2OlxcdGF0aDExay0kKENPTkZJR19BVEgxMUtfVFJBQ0lORykgKz0gdHJhY2Uub1xcbiAgMjc6XFx0YXRoMTFrLSQoQ09ORklHX1RIRVJNQUwpICs9IHRoZXJtYWwub1xcbiAgMjg6XFx0YXRoMTFrLSQoQ09ORklHX0FUSDExS19TUEVDVFJBTCkgKz0gc3BlY3RyYWwub1xcbiAgMjk6XFx0YXRoMTFrLSQoQ09ORklHX1BNKSArPSB3b3cub1xcbiAgMzA6XFx0YXRoMTFrLSQoQ09ORklHX0RFVl9DT1JFRFVNUCkgKz0gY29yZWR1bXAub1xcbiAgMzE6XFx0YXRoMTFrLSQoQ09ORklHX0FUSDExS19DRlIpICs9IGNmci5vXFxuICAzMjpcXHRcXG4gIDMzOlxcdG9iai0kKENPTkZJR19BVEgxMUtfQUhCKSArPSBhdGgxMWtfYWhiLm9cXG4gIDM0OlxcdGF0aDExa19haGIteSArPSBhaGIub1xcbiAgMzU6XFx0XFxuICAzNjpcXHRvYmotJChDT05GSUdfQVRIMTFLX1BDSSkgKz0gYXRoMTFrX3BjaS5vXFxuICAzNzpcXHRhdGgxMWtfcGNpLXkgKz0gbWhpLm8gcGNpLm9cXG4gIDM4OlxcdFxcbiAgMzk6XFx0IyBmb3IgdHJhY2luZyBmcmFtZXdvcmsgdG8gZmluZCB0cmFjZS5oXFxuICA0MDpcXHRDRkxBR1NfdHJhY2UubyA6PSAtSSQoc3JjKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNjowMy4xNjc5MDA3OTlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY0MDk3ODU2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGgxMWsgRHJpdmVyJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGUgYGF0aDExa2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBhdGgxMWtfYWhiYCBhbmQgYGF0aDExa19wY2lgIG1vZHVsZXMsIGFuZCBpdCBsb29rcyBsaWtlIHRoZXkgYXJlIHNlcGFyYXRlIGZyb20gdGhlIGNvcmUgYGF0aDExa2AgbW9kdWxlLCBidXQgdGhlIGBtYWMuY2AgY29kZSBpcyBhY3R1YWxseSBwYXJ0IG9mIHRoYXQgY29yZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gSSBldmVuIGZ1enogdGhpcyB0aGluZyB3aXRoaW4gUUVNVT8gVGhpcyBpcyBhIGRyaXZlciwgcmlnaHQ/IERlc2lnbmVkIHRvIGludGVyZmFjZSB3aXRoIHBoeXNpY2FsIGhhcmR3YXJlIHZpYSBQQ0kgb3IgQUhCLiBIbW0sIG5vIG9idmlvdXMgc29mdHdhcmUgZW11bGF0aW9uIGlzIHByZXNlbnQgbGlrZSB5b3Ugc2VlIHdpdGggYG1hYzgwMjExX2h3c2ltYCBvciBgdmhjaWAgZm9yIFVTQi4gVGhhdOKAmXMgYSBwcm9ibGVtLiBJIGNhbid0IHRoaW5rIG9mIGEgY2xlYW4gd2F5IHRvIHJlYWNoIHRoaXMgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVUgd2l0aG91dCBzb21lIGtpbmQgb2YgcmVhbCBoYXJkd2FyZSBwcmVzZW50LlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIHRob3VnaC4gSXQncyBhbHdheXMgd29ydGggYSB0aG9yb3VnaCBzZWFyY2guIEFyZSB0aGVyZSBhbnkgdmlydHVhbCBkcml2ZXJzIG9yIGFueSB0ZXN0IG1vZGVzIHRoYXQgbWlnaHQgcHJvdmlkZSBhIGhvb2s/IEkgc2hvdWxkIHRyYWNlIHRoZSBjYWxsIGNoYWluLiBXaGVyZSBpcyBgYXRoMTFrX21hY19zZXR1cF9jaGFubmVsc19yYXRlc2AgY2FsbGVkIGZyb20/IEtub3dpbmcgdGhlIGNhbGwgY2hhaW4gY291bGQgcG90ZW50aWFsbHkgZXhwb3NlIGFuIGVudHJ5IHBvaW50IHRvIHRoZSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MzEsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNjowNy44MDg4ODI5M1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMjAyMTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19tYWNfc2V0dXBfY2hhbm5lbHNfcmF0ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMDE0Mz1zdGF0aWMgdTMyIGF0aDExa19nZXRfcGh5X2lkKHN0cnVjdCBhdGgxMWsgKmFyLCB1MzIgYmFuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTAxNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDE1OTpzdGF0aWMgaW50IGF0aDExa19tYWNfc2V0dXBfY2hhbm5lbHNfcmF0ZXMoc3RydWN0IGF0aDExayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDE2MC1cXHRcXHRcXHRcXHRcXHQgICB1MzIgc3VwcG9ydGVkX2JhbmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMDQ1MT1zdGF0aWMgaW50IF9fYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA0NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDQ3NjpcXHRyZXQgPSBhdGgxMWtfbWFjX3NldHVwX2NoYW5uZWxzX3JhdGVzKGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA0NzctXFx0XFx0XFx0XFx0XFx0ICAgICAgY2FwLVxcdTAwM2VzdXBwb3J0ZWRfYmFuZHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNjowNy45NzIwODk5NTNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI1MDEwMzQzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBOb3QgV29ydGggRnV6emluZyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBnaXZlbiB0aGlzIGZ1bmN0aW9uLCBgX19hdGgxMWtfbWFjX3JlZ2lzdGVyYCwgYW5kIHRoZSBpbml0aWFsIHJlYWN0aW9uIGlzIFwiSG1tLCBjb3VsZCB0aGlzIGJlIGEgZnV6emluZyB0YXJnZXQ/XCIgQnV0IGxldCdzIGJyZWFrIGl0IGRvd24sIGJlY2F1c2UgdGhhdCdzIHdoYXQgSSBkby5cblxuRmlyc3QsIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIHdoZXJlIHRoaXMgY2FsbCByZXNpZGVzLCBleHBsaWNpdGx5IHJlcXVpcmVzIGEgUENJIG9yIEFIQiBkZXZpY2UgdG8gcHJvYmUuIFJpZ2h0IGF3YXksIHRoYXQncyBhIHJlZCBmbGFnLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgYW55IGNvZGUgcGF0aCBjb250aW5nZW50IG9uIHRoYXQga2luZCBvZiAqYWN0dWFsKiBoYXJkd2FyZSBpcyBnb2luZyB0byBiZSB2aXJ0dWFsbHkgaW1wb3NzaWJsZSB0byB0cmlnZ2VyIGluIGFueSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKSBvciBRRU1VLiBXZSdyZSB0YWxraW5nIGFib3V0ICpyZWFsKiBoYXJkd2FyZSByZXF1aXJlbWVudHMsIG5vdCBlbXVsYXRlZC5cblxuVGhlbiwgdGhlcmUncyB0aGUgZGVmaW5pdGl2ZSBndWlkYW5jZTogaWYgdGhlIHBhdGNoJ3Mgc2NvcGUgaXMgcmVzdHJpY3RlZCB0byBjb2RlIHRoYXQncyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIHRob3NlIHZpcnR1YWxpemVkIHNldHVwcywgb3IgaW52b2x2ZXMgc3BlY2lhbGl6ZWQgaGFyZHdhcmUsIHRoZW4gaXTigJlzIGEgXCJuby1nb1wiIGZvciBmdXp6aW5nLiBTcGVjaWZpY2FsbHksIHRoZXkgY2FsbCBvdXQgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgdGhhdCBuZWVkIHBoeXNpY2FsIFBDSWUgY2FyZHMgd2hpY2ggYXJlICpub3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQncyB0aGUga2V5LlxuXG5Ob3csIGxvb2tpbmcgYXQgYGF0aDExa2Agc3BlY2lmaWNhbGx5LCBJIHJlY29nbml6ZSB0aGF0IHRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyLCBRdWFsY29tbSwgYW5kLCBiZWluZyBhIFdpLUZpIGRyaXZlciwgdGhpcyBpcyBleHBlY3RlZCB0byB1c2UgZWl0aGVyIFBDSWUgb3IgQUhCIGhhcmR3YXJlIGZvciBpdHMgb3BlcmF0aW9uLiBBbmQgdGhlIGtpY2tlcj8gSXQgKnJlcXVpcmVzKiB0aGlzIHBoeXNpY2FsIGhhcmR3YXJlLiBTdGFuZGFyZCBRRU1VLCBhcyB3ZSBrbm93LCBkb2Vzbid0IGVtdWxhdGUgdGhpcyBzdHVmZiBwcm9wZXJseSwgaWYgYXQgYWxsLlxuXG5UaGVyZWZvcmUsIGdpdmVuIHRoZSBpbmhlcmVudCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBpbnN0cnVjdGlvbnMgSSBoYXZlLCBJIGNvbmNsdWRlIHRoYXQgdGhpcyBjb2RlIHBhdGggaXMgbm90IHdvcnRoIGZ1enppbmcuIEl0J3MgYSBub24tc3RhcnRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQzMCwiT3V0cHV0VG9rZW5zIjo5NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNToyNjoxMy4yMjIxOTYzNzlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzM5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyIGZvciBRdWFsY29tbSBoYXJkd2FyZS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBvciBBSEIgaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGluaXRpYWxpemUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aCBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgZm9yIFF1YWxjb21tIGhhcmR3YXJlLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIG9yIEFIQiBoYXJkd2FyZSB0byBwcm9iZSBhbmQgaW5pdGlhbGl6ZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRoIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTU6MjY6MTMuMjIyMjIzMTQ5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2scxv[1] Phase: Running StartedAt: 2026-08-15 15:26:24 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2scxv[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-15 15:26:24 +0000 UTC FinishedAt: 2026-08-15 15:26:29 +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,}