Name: series-workflowtz7lc Phase: Failed StartedAt: 2026-07-29 07:48:44 +0000 UTC FinishedAt: 2026-07-29 08:08:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtz7lc[0] Phase: Succeeded StartedAt: 2026-07-29 07:48:44 +0000 UTC FinishedAt: 2026-07-29 08:08:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtz7lc[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 07:48:45 +0000 UTC FinishedAt: 2026-07-29 08:08:33 +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+CgkJCTx0ZD4yMDI2LzA3LzI5IDA4OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayB0aGF0IGNoZWNrcyB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIGZvciBzcGVjaWZpYyBMaW5rc3lzIHJvdXRlciBjb21wYXRpYmxlIHN0cmluZ3MgKGBsaW5rc3lzLHdydDMyMDBhY21gIGFuZCBgbGlua3N5cyx3cnQzMnhgKS4gSW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIHdpbGwgbm90IG1hdGNoIHRoZXNlIHN0cmluZ3MsIG1ha2luZyB0aGUgbmV3IGNvZGUgcGF0aCBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBlZmZlY3RpdmVseSBub3QgYWx0ZXJpbmcgdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI4MmViYzQ0OGU2Yzk3YWViZDJkMDI5ODhlZDNmNzEyZjkxYjVhNjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAwODowNzozNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXG5pbmRleCBhYmM3MDM0NDFjNWQ4Li4wNGY3ZjU4Y2M3ZDBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXG5AQCAtNDg5OSw3ICYjNDM7NDg5OSwxNSBAQCBpbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuIFx0XHRcdFx0Y291bnRyeV9jb2RlID1cbiBcdFx0XHRcdFx0bXdpZmlleF8xMWRfY29kZV8yX3JlZ2lvbihcbiBcdFx0XHRcdFx0XHRhZGFwdGVyLVx1MDAzZXJlZ2lvbl9jb2RlKTtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0LyogV1JUMzIwMEFDTS9XUlQzMnggUk9NIGFsd2F5cyByZXBvcnRzIFVTLCB3aGljaFxuJiM0MztcdFx0XHRcdCAqIGNvbmZsaWN0cyB3aXRoIHJvdXRlcnMgc29sZCBvdXRzaWRlIHRoZSBVUy5cbiYjNDM7XHRcdFx0XHQgKiBJZ25vcmUgdGhpcyBoaW50IHNvIHVzZXJzcGFjZSBjYW5cbiYjNDM7XHRcdFx0XHQgKiBzZXQgdGhlIGNvcnJlY3QgcmVndWxhdG9yeSBkb21haW4uXG4mIzQzO1x0XHRcdFx0ICovXG4gXHRcdFx0XHRpZiAoY291bnRyeV9jb2RlIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0XHRcdCAgICAhb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKFwmIzM0O2xpbmtzeXMsd3J0MzIwMGFjbVwmIzM0OykgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdFx0ICAgICFvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXCYjMzQ7bGlua3N5cyx3cnQzMnhcJiMzNDspIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0ICAgIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgY291bnRyeV9jb2RlKSlcbiBcdFx0XHRcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUixcbiBcdFx0XHRcdFx0XHQgICAgXCYjMzQ7cmVndWxhdG9yeV9oaW50KCkgZmFpbGVkXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGhhcmR3YXJlLXNwZWNpZmljIHF1aXJrIHRoYXQgY2hlY2tzIHRoZSByb290IGRldmljZSB0cmVlIG5vZGUgZm9yIHNwZWNpZmljIExpbmtzeXMgcm91dGVyIGNvbXBhdGlibGUgc3RyaW5ncyAoYGxpbmtzeXMsd3J0MzIwMGFjbWAgYW5kIGBsaW5rc3lzLHdydDMyeGApLiBJbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHRoZSByb290IGRldmljZSB0cmVlIG5vZGUgd2lsbCBub3QgbWF0Y2ggdGhlc2Ugc3RyaW5ncywgbWFraW5nIHRoZSBuZXcgY29kZSBwYXRoIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGVmZmVjdGl2ZWx5IG5vdCBhbHRlcmluZyB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjgyZWJjNDQ4ZTZjOTdhZWJkMmQwMjk4OGVkM2Y3MTJmOTFiNWE2MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDI5IDA4OjA3OjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYwppbmRleCBhYmM3MDM0NDFjNWQ4Li4wNGY3ZjU4Y2M3ZDBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYwpAQCAtNDg5OSw3ICYjNDM7NDg5OSwxNSBAQCBpbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKQogCQkJCWNvdW50cnlfY29kZSA9CiAJCQkJCW13aWZpZXhfMTFkX2NvZGVfMl9yZWdpb24oCiAJCQkJCQlhZGFwdGVyLSZndDtyZWdpb25fY29kZSk7CiYjNDM7CiYjNDM7CQkJCS8qIFdSVDMyMDBBQ00vV1JUMzJ4IFJPTSBhbHdheXMgcmVwb3J0cyBVUywgd2hpY2gKJiM0MzsJCQkJICogY29uZmxpY3RzIHdpdGggcm91dGVycyBzb2xkIG91dHNpZGUgdGhlIFVTLgomIzQzOwkJCQkgKiBJZ25vcmUgdGhpcyBoaW50IHNvIHVzZXJzcGFjZSBjYW4KJiM0MzsJCQkJICogc2V0IHRoZSBjb3JyZWN0IHJlZ3VsYXRvcnkgZG9tYWluLgomIzQzOwkJCQkgKi8KIAkJCQlpZiAoY291bnRyeV9jb2RlICZhbXA7JmFtcDsKJiM0MzsJCQkJICAgICFvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoJiMzNDtsaW5rc3lzLHdydDMyMDBhY20mIzM0OykgJmFtcDsmYW1wOwomIzQzOwkJCQkgICAgIW9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSgmIzM0O2xpbmtzeXMsd3J0MzJ4JiMzNDspICZhbXA7JmFtcDsKIAkJCQkgICAgcmVndWxhdG9yeV9oaW50KHdpcGh5LCBjb3VudHJ5X2NvZGUpKQogCQkJCQltd2lmaWV4X2RiZyhwcml2LSZndDthZGFwdGVyLCBFUlJPUiwKIAkJCQkJCSAgICAmIzM0O3JlZ3VsYXRvcnlfaGludCgpIGZhaWxlZFxuJiMzNDspOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjEwCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jYC4gSXQmIzM5O3MgYSBjb25kaXRpb25hbCBjaGVjayBmb3IgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSgmIzM0O2xpbmtzeXMsd3J0MzIwMGFjbSYjMzQ7KWAgb3IgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSgmIzM0O2xpbmtzeXMsd3J0MzJ4JiMzNDspYCBiZWZvcmUgY2FsbGluZyBgcmVndWxhdG9yeV9oaW50YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gKndvcnRoKiBzcGVuZGluZyB0aW1lIGZ1enppbmc/CgpUaGUgcGF0Y2ggaXRzZWxmIGFsdGVycyBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAuIFNvLCBpdCYjMzk7cyBhIGNvZGUgYWRkaXRpb24sIGEgY29udHJvbCBmbG93IG1vZGlmaWNhdGlvbiwgYnV0LCBhIHByZXR0eSBuYXJyb3cgb25lLCB0YXJnZXRlZCB0byB0aGVzZSBzcGVjaWZpYyBMaW5rc3lzIGRldmljZXMuIFRoZSBkcml2ZXIgaXRzZWxmIGlzIGZvciBNYXJ2ZWxsIFdpRmksIGBtd2lmaWV4YCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZC4KCk5vdywgdGhlIHF1ZXN0aW9uIG9mIHJlYWNoYWJpbGl0eSBhcmlzZXMuIENhbiBJIHRyaWdnZXIgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQ/IFllcywgYG13aWZpZXhgICpjYW4qIGJlIGxvYWRlZCwgYW5kIGBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExYCBpcyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBIb3dldmVyLCBgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlYCBpcyB0aGUga2V5LiBJdCBjaGVja3MgdGhlIGRldmljZSB0cmVlJiMzOTtzIHJvb3Qgbm9kZSBjb21wYXRpYmxlIHN0cmluZy4gSW4gYSBnZW5lcmljIHNldHVwLCBzYXkgUUVNVSB3aXRob3V0IGEgc3BlY2lmaWMgRFQsIHRoaXMgY2hlY2sgd2lsbCBhbG1vc3QgY2VydGFpbmx5IHJldHVybiBmYWxzZS4gVGhhdCBtZWFucywgd2l0aG91dCBwcm92aWRpbmcgYSBEVCwgdGhlIGNvZGUgcGF0aCBpcyB1bmNoYW5nZWQuCgpFdmVuICppZiogSSBjb3VsZCBzb21laG93IGZlZWQgdGhlIGZ1enplciBhIGRldmljZSB0cmVlIHRoYXQgcGFzc2VzIHRoZSBjaGVjaywgYWxsIHRoYXQgaGFwcGVucyBpcyB0aGUgY2FsbCB0byBgcmVndWxhdG9yeV9oaW50YCBpcyBza2lwcGVkLiBJIGhhdmUgdG8gYXNrIG15c2VsZiwgaXMgdGhhdCBzbWFsbCBza2lwIGluIGJlaGF2aW9yIGEgd29ydGh3aGlsZSB0YXJnZXQgZm9yIGZ1enppbmc/IFByb2JhYmx5IG5vdC4gSXQmIzM5O3MgYSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIHF1aXJrLiBTbywgdW5sZXNzIHRoZSBkcml2ZXIgaGFzIHNvbWUgc2lnbmlmaWNhbnQgYnVncyBJJiMzOTttIG1pc3NpbmcsIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBkaWcgbW9yZSBpbnRvIGBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExYCB0byBmaW5kIGEgYmV0dGVyIGZ1enppbmcgdGFyZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA4OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTQ2NzA9aW50IG13aWZpZXhfaW5pdF9jaGFubmVsX3NjYW5fZ2FwKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDY5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjQ3MDA6aW50IG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQ3MDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5oLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmg6MTU6aW50IG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5oLTE2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9NTM1PXN0YXRpYyBpbnQgX213aWZpZXhfZndfZHBjKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy01ODYtXHRpZiAoIWFkYXB0ZXItXHUwMDNld2lwaHkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6NTg3Olx0XHRpZiAobXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShhZGFwdGVyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy01ODgtXHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDg6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciBhIExpbmtzeXMgUm91dGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyBhIHRpbnkgY2hhbmdlIOKAkyBqdXN0IGJ5cGFzc2luZyBgcmVndWxhdG9yeV9oaW50YCB1bmRlciBzcGVjaWZpYyBMaW5rc3lzIHJvdXRlciBjb25kaXRpb25zLiBQdXJlIGhhcmR3YXJlIHF1aXJrLCByZWFsbHkuIE5vdGhpbmcgZmFuY3kuIE5vIGNvbXBsZXggYWxnb3JpdGhtcyB0byBwb2tlIGF0IHdpdGggZnV6emluZy4gTXkgaW5pdGlhbCBpbnN0aW5jdCB3YXMgdG8gZmxhZyBpdCBhcyBgV29ydGhGdXp6aW5nPXRydWVgLCBidXQgaG9sZCBvbi4uLiBpcyB0aGF0IGV2ZW4ganVzdGlmaWVkPyBJdCYjMzk7cyBsaXRlcmFsbHkgYSBvbmUtbGluZXIgKG9yIHR3byBsaW5lcyBvZiBjb25kaXRpb25zLCBpZiB5b3Ugd2FudCB0byBiZSBwZWRhbnRpYyEpIGFuZCBgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlYCBpcyBqdXN0IGEgc2ltcGxlIHN0cmluZyBjb21wYXJpc29uIGFnYWluc3QgdGhlIGRldmljZSB0cmVlLgoKSXQgZG9lc24mIzM5O3Qgc2VlbSBsaWtlIHRoZSBtb3N0IGZydWl0ZnVsIHRhcmdldCwgYnV0IEkgc2hvdWxkIGxvb2sgZGVlcGVyLCBJIHNob3VsZCBzZWUgaWYgdGhlcmUgaXMgYSByZWFsIGZ1enppbmcgdGFyZ2V0LiBMZXQgbWUgc2VlLi4uIHllcywgSSB0aGluayBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgaGFzIHBvdGVudGlhbC4gTGV0IG1lIHRyYWNrIGRvd24gdGhlIGFwcHJvcHJpYXRlIGNvbmZpZyBvcHRpb25zIHRvIHVzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyNTpjb25maWcgTVdJRklFWF9QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA4OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbXdpZmlleGAgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBgbXdpZmlleGAgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgTVdJRklFWGAsIGBNV0lGSUVYX1NESU9gLCBgTVdJRklFWF9QQ0lFYCwgYW5kIGBNV0lGSUVYX1VTQmAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRoYXQgc2luY2UgYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIGlzIGRlZmluaXRlbHkgZGVmaW5lZCB3aXRoaW4gYGNmZzgwMjExLmNgLCB3aGljaCBpcyAqY29yZSogdG8gdGhlIGBtd2lmaWV4YCBtb2R1bGUsIGBNV0lGSUVYYCBpdHNlbGYgaXMgZ29pbmcgdG8gYmUgYSBmdW5kYW1lbnRhbCByZXF1aXJlbWVudC4gQnV0Li4uIGhvbGQgb24gYSBzZWNvbmQuIERvZXMgYE1XSUZJRVhgICpyZXF1aXJlKiBvbmUgb2YgdGhlIGRldmljZS1zcGVjaWZpYyBvcHRpb25zIOKAkyBlaXRoZXIgYE1XSUZJRVhfU0RJT2AsIGBNV0lGSUVYX1BDSUVgLCBvciBgTVdJRklFWF9VU0JgIOKAkyB0byBhY3R1YWxseSAqZG8qIGFueXRoaW5nIG9yIGxvYWQgcHJvcGVybHk/IEkgdGhpbmsgSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgbWFrZWZpbGVzIHRvIGJlIHN1cmUuIFRpbWUgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZWAuIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBsb2dpYyBmbG93IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA4OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIENvcHlyaWdodCAyMDExLTIwMjAgTlhQXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdFxuICAgNzpcdG13aWZpZXgteSAmIzQzOz0gbWFpbi5vXG4gICA4Olx0bXdpZmlleC15ICYjNDM7PSBpbml0Lm9cbiAgIDk6XHRtd2lmaWV4LXkgJiM0Mzs9IGNmcC5vXG4gIDEwOlx0bXdpZmlleC15ICYjNDM7PSBjbWRldnQub1xuICAxMTpcdG13aWZpZXgteSAmIzQzOz0gdXRpbC5vXG4gIDEyOlx0bXdpZmlleC15ICYjNDM7PSB0eHJ4Lm9cbiAgMTM6XHRtd2lmaWV4LXkgJiM0Mzs9IHdtbS5vXG4gIDE0Olx0bXdpZmlleC15ICYjNDM7PSAxMW4ub1xuICAxNTpcdG13aWZpZXgteSAmIzQzOz0gMTFhYy5vXG4gIDE2Olx0bXdpZmlleC15ICYjNDM7PSAxMW5fYWdnci5vXG4gIDE3Olx0bXdpZmlleC15ICYjNDM7PSAxMW5fcnhyZW9yZGVyLm9cbiAgMTg6XHRtd2lmaWV4LXkgJiM0Mzs9IHNjYW4ub1xuICAxOTpcdG13aWZpZXgteSAmIzQzOz0gam9pbi5vXG4gIDIwOlx0bXdpZmlleC15ICYjNDM7PSBzdGFfaW9jdGwub1xuICAyMTpcdG13aWZpZXgteSAmIzQzOz0gc3RhX2NtZC5vXG4gIDIyOlx0bXdpZmlleC15ICYjNDM7PSB1YXBfY21kLm9cbiAgMjM6XHRtd2lmaWV4LXkgJiM0Mzs9IGllLm9cbiAgMjQ6XHRtd2lmaWV4LXkgJiM0Mzs9IHN0YV9jbWRyZXNwLm9cbiAgMjU6XHRtd2lmaWV4LXkgJiM0Mzs9IHN0YV9ldmVudC5vXG4gIDI2Olx0bXdpZmlleC15ICYjNDM7PSB1YXBfZXZlbnQub1xuICAyNzpcdG13aWZpZXgteSAmIzQzOz0gc3RhX3R4Lm9cbiAgMjg6XHRtd2lmaWV4LXkgJiM0Mzs9IHN0YV9yeC5vXG4gIDI5Olx0bXdpZmlleC15ICYjNDM7PSB1YXBfdHhyeC5vXG4gIDMwOlx0bXdpZmlleC15ICYjNDM7PSBjZmc4MDIxMS5vXG4gIDMxOlx0bXdpZmlleC15ICYjNDM7PSBldGh0b29sLm9cbiAgMzI6XHRtd2lmaWV4LXkgJiM0Mzs9IDExaC5vXG4gIDMzOlx0bXdpZmlleC15ICYjNDM7PSB0ZGxzLm9cbiAgMzQ6XHRtd2lmaWV4LSQoQ09ORklHX0RFQlVHX0ZTKSAmIzQzOz0gZGVidWdmcy5vXG4gIDM1Olx0b2JqLSQoQ09ORklHX01XSUZJRVgpICYjNDM7PSBtd2lmaWV4Lm9cbiAgMzY6XHRcbiAgMzc6XHRtd2lmaWV4X3NkaW8teSAmIzQzOz0gc2Rpby5vXG4gIDM4Olx0b2JqLSQoQ09ORklHX01XSUZJRVhfU0RJTykgJiM0Mzs9IG13aWZpZXhfc2Rpby5vXG4gIDM5Olx0XG4gIDQwOlx0bXdpZmlleF9wY2llLXkgJiM0Mzs9IHBjaWUub1xuICA0MTpcdG13aWZpZXhfcGNpZS15ICYjNDM7PSBwY2llX3F1aXJrcy5vXG4gIDQyOlx0b2JqLSQoQ09ORklHX01XSUZJRVhfUENJRSkgJiM0Mzs9IG13aWZpZXhfcGNpZS5vXG4gIDQzOlx0XG4gIDQ0Olx0bXdpZmlleF91c2IteSAmIzQzOz0gdXNiLm9cbiAgNDU6XHRvYmotJChDT05GSUdfTVdJRklFWF9VU0IpICYjNDM7PSBtd2lmaWV4X3VzYi5vXG4gIDQ2Olx0XG4gIDQ3Olx0Y2NmbGFncy15ICYjNDM7PSAtRF9fQ0hFQ0tfRU5ESUFOXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDg6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ1OQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDkwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgTVdJRklFWCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYE1XSUZJRVhgLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIExpbmtzeXMgV1JUMzIwMEFDTS9XUlQzMnguIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZW5hYmxlIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBmb3IgZnV6emluZywgc2luY2UgVVNCIGlzIGEgY29udmVuaWVudCBlbnRyeSBwb2ludCB3aXRoIGEgZHVtbXkgSENELiBIb3dldmVyLCB0aGlzIGlzIGp1c3QgYSBtaW5vciBoYXJkd2FyZSBxdWlyaywgc28gSSBuZWVkIHRvIGNhcmVmdWxseSBjb25zaWRlciBpZiBpdCYjMzk7cyBldmVuIHdvcnRoIHRoZSBlZmZvcnQuCgpUaGUgcHJvbXB0IGxheXMgb3V0IHNwZWNpZmljIGNyaXRlcmlhIGZvciBleGNsdWRpbmcgcGF0Y2hlcyBmcm9tIGZ1enppbmcuIExldCBtZSByZXZpZXcgdGhvc2UgZXhjbHVzaW9ucy4gVGhlIHByaW1hcnkgY29uY2VybiBoZXJlIGlzIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdGhvc2UgZW52aXJvbm1lbnRzLgoKVGhlIHBhdGNoIHVzZXMgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSgmIzM0O2xpbmtzeXMsd3J0MzIwMGFjbSYjMzQ7KWAgd2hpY2gsIHdpdGhvdXQgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSwgd2lsbCByZXR1cm4gZmFsc2UgaW4gUUVNVS4gQXQgZmlyc3QsIEkgdGhvdWdodCB0aGF0IGV2ZW4gdGhvdWdoIHRoZSBzcGVjaWZpYyBicmFuY2ggbWlnaHQgbm90IGJlIGhpdCwgdGhlIHN1cnJvdW5kaW5nIGBpZmAgc3RhdGVtZW50IHdvdWxkIHN0aWxsIGJlIHJlYWNoYWJsZSwgYW5kIHRodXMsIHBvdGVudGlhbGx5IHdvcnRoIGZ1enppbmcuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgYmVjYXVzZSBgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlYCBpcyBmYWxzZSwgdGhlbiB0aGUgY29uZGl0aW9uIGAhb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKC4uLilgIHdvdWxkIGJlIHRydWUgYW5kIHRoZSBjb2RlIHdvdWxkIHByb2NlZWQgdG8gYHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgY291bnRyeV9jb2RlKWAuIEhvd2V2ZXIsIEkgcXVpY2tseSByZWFsaXplZCB0aGF0IHRoZSBleGVjdXRpb24gZmxvdyBpbiBRRU1VICppcyogZXhhY3RseSB0aGUgc2FtZSBhcyBiZWZvcmUgdGhlIHBhdGNoLiBUaGUgcGF0Y2ggb25seSBhbHRlcnMgdGhlIGZsb3cgaWYgdGhlIG1hY2hpbmUgKmlzKiBjb21wYXRpYmxlLCB3aGljaCBRRU1VIChpbiBpdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uKSB3b24mIzM5O3QgYmUuCgpTeXprYWxsZXIsIG15IHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudCwgZG9lc24mIzM5O3QgZHluYW1pY2FsbHkgY2hhbmdlIHRoZSBkZXZpY2UgdHJlZSYjMzk7cyByb290IG1hY2hpbmUgY29tcGF0aWJsZSBzdHJpbmcuIFNvLCB3aGlsZSBJIGRpZCB0aGluayB0aGlzIHBhdGNoIG1pZ2h0IHJlcHJlc2VudCBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBpdCYjMzk7cyB0cml2aWFsIGluIHRoaXMgY2FzZSBhbmQgZG9lc24mIzM5O3QuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGNyaXRlcmlhIGFnYWluLiBUaGUgcGF0Y2ggYWRkcyBgIW9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSgmIzM0O2xpbmtzeXMsd3J0MzIwMGFjbSYjMzQ7KSAmYW1wOyZhbXA7ICFvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoJiMzNDtsaW5rc3lzLHdydDMyeCYjMzQ7KWAgdG8gYW4gZXhpc3RpbmcgYGlmYCBjb25kaXRpb24uIFRoaXMgbmV3IGNvZGUgcGF0aCwgd2hlcmUgdGhlIG9yaWdpbmFsIGNvbmRpdGlvbiBiZWNvbWVzIGZhbHNlIChiZWNhdXNlIG9mIHRoZSBhZGRpdGlvbmFsIGNoZWNrcyksIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gUUVNVSBiZWNhdXNlIHRoZSByb290IG1hY2hpbmUgY29tcGF0aWJsZSBzdHJpbmcgaXMgbm90IHdoYXQmIzM5O3MgZXhwZWN0ZWQuIGBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGVgIGNoZWNrcyB0aGUgcm9vdCBub2RlIG9mIHRoZSBkZXZpY2UgdHJlZSwgYW5kIFN5emthbGxlciBjYW4mIzM5O3QgYWx0ZXIgdGhhdC4KClRoZXJlZm9yZSwgdGhlIGZ1bmN0aW9uYWxseSBjaGFuZ2VkIGNvZGUgKHNraXBwaW5nIGByZWd1bGF0b3J5X2hpbnRgKSAqaXMqIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBBY2NvcmRpbmcgdG8gdGhlIGNyaXRlcmlhLCB0aGlzIHdhcnJhbnRzIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gU28sIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL29mLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL29mL2FkZHJlc3MuYz0zOTY9c3RhdGljIGludCBvZl9lbXB0eV9yYW5nZXNfcXVpcmsoY29uc3Qgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL29mL2FkZHJlc3MuYy00MDgtXHRcdFx0cXVpcmtfc3RhdGUgPVxuZHJpdmVycy9vZi9hZGRyZXNzLmM6NDA5Olx0XHRcdFx0b2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKFwmIzM0O1Bvd2VyIE1hY2ludG9zaFwmIzM0OykgfHxcbmRyaXZlcnMvb2YvYWRkcmVzcy5jOjQxMDpcdFx0XHRcdG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZShcJiMzNDtNYWNSSVNDXCYjMzQ7KTtcbmRyaXZlcnMvb2YvYWRkcmVzcy5jLTQxMS1cdFx0cmV0dXJuIHF1aXJrX3N0YXRlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTI0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZWAqKgoKT2theSwgdGltZSB0byBkaXNzZWN0IHRoaXMgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZWAgZGVmaW5pdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvcmUgbG9naWMgaW1tZWRpYXRlbHksIGdpdmVuIG15IGJhY2tncm91bmQsIEkmIzM5O20gZXhwZWN0aW5nIGEgbnVhbmNlZCBhbmQgcG90ZW50aWFsbHkgaW50cmljYXRlIHNldCBvZiBjaGVja3MuIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IGl0IGxpa2VseSBwcm9iZXMgdGhlIGVudmlyb25tZW50LCBwZXJoYXBzIGV4YW1pbmluZyBoYXJkd2FyZSBzcGVjaWZpY2F0aW9ucywgc29mdHdhcmUgdmVyc2lvbnMsIG9yIGV2ZW4gcmVzb3VyY2UgYXZhaWxhYmlsaXR5LCBhZ2FpbnN0IGEgcHJlZGVmaW5lZCBjb21wYXRpYmlsaXR5IG1hdHJpeCBvciBzZXQgb2YgcmVxdWlyZW1lbnRzLiBJIGFudGljaXBhdGUgaXQmIzM5O2xsIGxldmVyYWdlIHNvbWUgZm9ybSBvZiBpbnRyb3NwZWN0aW9uIG9yIGRlcGVuZGVuY3kgY2hlY2tpbmcuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBob3cgaXQgaGFuZGxlcyBlZGdlIGNhc2VzIGFuZCBwb3RlbnRpYWwgYW1iaWd1aXRpZXMgaW4gdGhlIHN5c3RlbSBzdGF0ZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB3aGVyZSBhbmQgaG93IHRoaXMgaXMgdXNlZCB3aXRoaW4gdGhlIG92ZXJhbGwgc3lzdGVtLCB3aGV0aGVyIGl0IGlzIHB1cmVseSBzdGF0aWMgb3IgYWxsb3dzIGZvciBkeW5hbWljIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgYW5kIGhvdyB0byBkZWJ1ZyBpdHMgYmVoYXZpb3IgaWYgdGhpbmdzIGdvIHdyb25nLiBUaW1lIHRvIGRpdmUgaW4gYW5kIGNvbmZpcm0gKG9yIGZhbHNpZnkhKSB0aGVzZSBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDg6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9vZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mzg0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgRGV2aWNlIFRyZWUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHN5c3RlbSBpcyBpbnRlcmFjdGluZyB3aXRoIGl0cyBoYXJkd2FyZSwgc28gdGhlIGZpcnN0IHBsYWNlIEkmIzM5O20gZ29pbmcgdG8gbG9vayBpcyB0aGUgaGVhcnQgb2YgRGV2aWNlIFRyZWUgaGFuZGxpbmc6IGBpbmNsdWRlL2xpbnV4L29mLmhgLiBUaGlzIGhlYWRlciBmaWxlIGlzICpjcnVjaWFsKi4gSXQmIzM5O3Mgd2hlcmUgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBBUElzIGZvciBkZWFsaW5nIHdpdGggRGV2aWNlIFRyZWUgYmluZGluZ3MgYXJlIGRlZmluZWQuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGtleSBzdHJ1Y3R1cmVzIGxpa2UgYHN0cnVjdCBkZXZpY2Vfbm9kZWAsIHRoZSBwcm9wZXJ0eSBkZWZpbml0aW9ucywgbWFjcm9zIGZvciBtYW5pcHVsYXRpbmcgRGV2aWNlIFRyZWUgZGF0YSwgYW5kIGFsbCB0aGUgbG93LWxldmVsIGZ1bmN0aW9ucyB3ZSB1c2UgdG8gdHJhdmVyc2UgdGhlIHRyZWUuIFVuZGVyc3RhbmRpbmcgdGhpcyBoZWFkZXIgaXMgZnVuZGFtZW50YWwgdG8gZGVidWdnaW5nLCBjb25maWd1cmluZywgYW5kIGV4dGVuZGluZyBhbnkgc3lzdGVtIHVzaW5nIGEgRGV2aWNlIFRyZWUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYmFzaWMgb3BlcmF0aW9ucyBhbmQgZGF0YSB0eXBlcy4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgYXJlIGNvbnRhaW5lZCB3aXRoaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA4OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29mX21hY2hpbmVfaXNfY29tcGF0aWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvb2YuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L29mLmg9NDE0PWNvbnN0IHZvaWQgKm9mX21hY2hpbmVfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqbWF0Y2hlcyk7XG4tLVxuaW5jbHVkZS9saW51eC9vZi5oLTQxNi0vKipcbmluY2x1ZGUvbGludXgvb2YuaDo0MTc6ICogb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlIC0gVGVzdCByb290IG9mIGRldmljZSB0cmVlIGZvciBhIGdpdmVuIGNvbXBhdGlibGUgdmFsdWVcbmluY2x1ZGUvbGludXgvb2YuaC00MTgtICogQGNvbXBhdDogY29tcGF0aWJsZSBzdHJpbmcgdG8gbG9vayBmb3IgaW4gcm9vdCBub2RlJiMzOTtzIGNvbXBhdGlibGUgcHJvcGVydHkuXG4tLVxuaW5jbHVkZS9saW51eC9vZi5oLTQyMS0gKi9cbmluY2x1ZGUvbGludXgvb2YuaDo0MjI6c3RhdGljIGlubGluZSBib29sIG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZShjb25zdCBjaGFyICpjb21wYXQpXG5pbmNsdWRlL2xpbnV4L29mLmgtNDIzLXtcbi0tXG5pbmNsdWRlL2xpbnV4L29mLmg9ODU2PXN0YXRpYyBpbmxpbmUgaW50IG9mX2FsaWFzX2dldF9oaWdoZXN0X2lkKGNvbnN0IGNoYXIgKnN0ZW0pXG4tLVxuaW5jbHVkZS9saW51eC9vZi5oLTg2MC1cbmluY2x1ZGUvbGludXgvb2YuaDo4NjE6c3RhdGljIGlubGluZSBpbnQgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKGNvbnN0IGNoYXIgKmNvbXBhdClcbmluY2x1ZGUvbGludXgvb2YuaC04NjIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODg2CgkJCQkJCQlvdXRwdXQ6IDExNwoJCQkJCQkJdGhvdWdodHM6IDIxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9RmFsc2U6IE5vIEltcGFjdCBpbiB0aGUgRnV6emVyKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIuIEl0JiMzOTtzIGRyaWxsaW5nIGRvd24gaW50byB0aGUgcm9vdCBvZiB0aGUgZGV2aWNlIHRyZWUsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciB0aG9zZSBMaW5rc3lzIHJvdXRlciBjb21wYXRpYmxlIHN0cmluZ3M6ICYjMzQ7bGlua3N5cyx3cnQzMjAwYWNtJiMzNDsgYW5kICYjMzQ7bGlua3N5cyx3cnQzMngmIzM0Oy4gQnV0LCBhbmQgdGhpcyBpcyB0aGUgY3J1Y2lhbCBwb2ludCwgYmVjYXVzZSB3ZSYjMzk7cmUgcnVubmluZyB0aGlzIHRlc3QgdW5kZXIgc3l6a2FsbGVyIGluIGEgZ2VuZXJpYyBRRU1VIGVudmlyb25tZW50LCB0aGF0IHJvb3Qgbm9kZSAqd29uJiMzOTt0KiBoYXZlIHRob3NlIGNvbXBhdGlibGUgc3RyaW5ncy4gSXQmIzM5O2xsIGJlIHNvbWV0aGluZyBnZW5lcmljLCBub3Qgc3BlY2lmaWMgdG8gdGhhdCBMaW5rc3lzIGhhcmR3YXJlLgoKVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgcGF0aCB0aGUgcGF0Y2ggaW50cm9kdWNlcywgd2hlcmUgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZWAgd291bGQgcmV0dXJuIHRydWUgYW5kIHNob3J0LWNpcmN1aXQgdGhlIGBpZmAgY29uZGl0aW9uLCBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIG91ciBmdXp6ZXIgc2V0dXAuIFRoaXMgcGF0Y2gsIGVmZmVjdGl2ZWx5LCAqZG9lc24mIzM5O3QqIGNoYW5nZSB0aGUgZXhlY3V0aW9uIGZsb3cgYXQgYWxsIGluIG91ciBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUgYWRkZWQgaGFyZHdhcmUtc3BlY2lmaWMgY2hlY2sgaXMgaXJyZWxldmFudCBmb3IgdXMuIENvbnNlcXVlbnRseSwgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0JiMzOTtzIG5vdCBnb2luZyB0byBsZWFkIHRvIG5ldyBjb2RlIGNvdmVyYWdlIGluIG91ciBjb250ZXh0LCBzbyB0aGVyZSYjMzk7cyBubyB2YWx1ZSBpbiBmdXp6aW5nIHRoaXMgc3BlY2lmaWMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayB0aGF0IGNoZWNrcyB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIGZvciBzcGVjaWZpYyBMaW5rc3lzIHJvdXRlciBjb21wYXRpYmxlIHN0cmluZ3MgKGBsaW5rc3lzLHdydDMyMDBhY21gIGFuZCBgbGlua3N5cyx3cnQzMnhgKS4gSW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIHdpbGwgbm90IG1hdGNoIHRoZXNlIHN0cmluZ3MsIG1ha2luZyB0aGUgbmV3IGNvZGUgcGF0aCBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBlZmZlY3RpdmVseSBub3QgYWx0ZXJpbmcgdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGhhcmR3YXJlLXNwZWNpZmljIHF1aXJrIHRoYXQgY2hlY2tzIHRoZSByb290IGRldmljZSB0cmVlIG5vZGUgZm9yIHNwZWNpZmljIExpbmtzeXMgcm91dGVyIGNvbXBhdGlibGUgc3RyaW5ncyAoYGxpbmtzeXMsd3J0MzIwMGFjbWAgYW5kIGBsaW5rc3lzLHdydDMyeGApLiBJbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHRoZSByb290IGRldmljZSB0cmVlIG5vZGUgd2lsbCBub3QgbWF0Y2ggdGhlc2Ugc3RyaW5ncywgbWFraW5nIHRoZSBuZXcgY29kZSBwYXRoIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGVmZmVjdGl2ZWx5IG5vdCBhbHRlcmluZyB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDc6MzguMTA0NzM2MTIzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzMTI0Nzc1NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayB0aGF0IGNoZWNrcyB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIGZvciBzcGVjaWZpYyBMaW5rc3lzIHJvdXRlciBjb21wYXRpYmxlIHN0cmluZ3MgKGBsaW5rc3lzLHdydDMyMDBhY21gIGFuZCBgbGlua3N5cyx3cnQzMnhgKS4gSW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIHdpbGwgbm90IG1hdGNoIHRoZXNlIHN0cmluZ3MsIG1ha2luZyB0aGUgbmV3IGNvZGUgcGF0aCBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBlZmZlY3RpdmVseSBub3QgYWx0ZXJpbmcgdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDc6MzguMTA0NzQ5OTczWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTk3ODQ0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyODJlYmM0NDhlNmM5N2FlYmQyZDAyOTg4ZWQzZjcxMmY5MWI1YTYzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDA4OjA3OjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcXG5pbmRleCBhYmM3MDM0NDFjNWQ4Li4wNGY3ZjU4Y2M3ZDBjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcXG5AQCAtNDg5OSw3ICs0ODk5LDE1IEBAIGludCBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIFxcdFxcdFxcdFxcdGNvdW50cnlfY29kZSA9XFxuIFxcdFxcdFxcdFxcdFxcdG13aWZpZXhfMTFkX2NvZGVfMl9yZWdpb24oXFxuIFxcdFxcdFxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXJlZ2lvbl9jb2RlKTtcXG4rXFxuK1xcdFxcdFxcdFxcdC8qIFdSVDMyMDBBQ00vV1JUMzJ4IFJPTSBhbHdheXMgcmVwb3J0cyBVUywgd2hpY2hcXG4rXFx0XFx0XFx0XFx0ICogY29uZmxpY3RzIHdpdGggcm91dGVycyBzb2xkIG91dHNpZGUgdGhlIFVTLlxcbitcXHRcXHRcXHRcXHQgKiBJZ25vcmUgdGhpcyBoaW50IHNvIHVzZXJzcGFjZSBjYW5cXG4rXFx0XFx0XFx0XFx0ICogc2V0IHRoZSBjb3JyZWN0IHJlZ3VsYXRvcnkgZG9tYWluLlxcbitcXHRcXHRcXHRcXHQgKi9cXG4gXFx0XFx0XFx0XFx0aWYgKGNvdW50cnlfY29kZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHRcXHQgICAgIW9mX21hY2hpbmVfaXNfY29tcGF0aWJsZShcXFwibGlua3N5cyx3cnQzMjAwYWNtXFxcIikgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0XFx0ICAgICFvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXFxcImxpbmtzeXMsd3J0MzJ4XFxcIikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0ICAgIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgY291bnRyeV9jb2RlKSlcXG4gXFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgRVJST1IsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXFwicmVndWxhdG9yeV9oaW50KCkgZmFpbGVkXFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDc6MzguNTA1MjgwMzYzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDI5MTE5MjYyMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayB0aGF0IGNoZWNrcyB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIGZvciBzcGVjaWZpYyBMaW5rc3lzIHJvdXRlciBjb21wYXRpYmxlIHN0cmluZ3MgKGBsaW5rc3lzLHdydDMyMDBhY21gIGFuZCBgbGlua3N5cyx3cnQzMnhgKS4gSW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIHdpbGwgbm90IG1hdGNoIHRoZXNlIHN0cmluZ3MsIG1ha2luZyB0aGUgbmV3IGNvZGUgcGF0aCBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBlZmZlY3RpdmVseSBub3QgYWx0ZXJpbmcgdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjgyZWJjNDQ4ZTZjOTdhZWJkMmQwMjk4OGVkM2Y3MTJmOTFiNWE2M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDA4OjA3OjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuaW5kZXggYWJjNzAzNDQxYzVkOC4uMDRmN2Y1OGNjN2QwYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuQEAgLTQ4OTksNyArNDg5OSwxNSBAQCBpbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuIFx0XHRcdFx0Y291bnRyeV9jb2RlID1cbiBcdFx0XHRcdFx0bXdpZmlleF8xMWRfY29kZV8yX3JlZ2lvbihcbiBcdFx0XHRcdFx0XHRhZGFwdGVyLVx1MDAzZXJlZ2lvbl9jb2RlKTtcbitcbitcdFx0XHRcdC8qIFdSVDMyMDBBQ00vV1JUMzJ4IFJPTSBhbHdheXMgcmVwb3J0cyBVUywgd2hpY2hcbitcdFx0XHRcdCAqIGNvbmZsaWN0cyB3aXRoIHJvdXRlcnMgc29sZCBvdXRzaWRlIHRoZSBVUy5cbitcdFx0XHRcdCAqIElnbm9yZSB0aGlzIGhpbnQgc28gdXNlcnNwYWNlIGNhblxuK1x0XHRcdFx0ICogc2V0IHRoZSBjb3JyZWN0IHJlZ3VsYXRvcnkgZG9tYWluLlxuK1x0XHRcdFx0ICovXG4gXHRcdFx0XHRpZiAoY291bnRyeV9jb2RlIFx1MDAyNlx1MDAyNlxuK1x0XHRcdFx0ICAgICFvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXCJsaW5rc3lzLHdydDMyMDBhY21cIikgXHUwMDI2XHUwMDI2XG4rXHRcdFx0XHQgICAgIW9mX21hY2hpbmVfaXNfY29tcGF0aWJsZShcImxpbmtzeXMsd3J0MzJ4XCIpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0ICAgIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgY291bnRyeV9jb2RlKSlcbiBcdFx0XHRcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUixcbiBcdFx0XHRcdFx0XHQgICAgXCJyZWd1bGF0b3J5X2hpbnQoKSBmYWlsZWRcXG5cIik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwODowNzozOC41MDUyODEzNTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTg5NTI2ODQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY2AuIEl0J3MgYSBjb25kaXRpb25hbCBjaGVjayBmb3IgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZShcImxpbmtzeXMsd3J0MzIwMGFjbVwiKWAgb3IgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZShcImxpbmtzeXMsd3J0MzJ4XCIpYCBiZWZvcmUgY2FsbGluZyBgcmVndWxhdG9yeV9oaW50YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gKndvcnRoKiBzcGVuZGluZyB0aW1lIGZ1enppbmc/XG5cblRoZSBwYXRjaCBpdHNlbGYgYWx0ZXJzIGBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExYC4gU28sIGl0J3MgYSBjb2RlIGFkZGl0aW9uLCBhIGNvbnRyb2wgZmxvdyBtb2RpZmljYXRpb24sIGJ1dCwgYSBwcmV0dHkgbmFycm93IG9uZSwgdGFyZ2V0ZWQgdG8gdGhlc2Ugc3BlY2lmaWMgTGlua3N5cyBkZXZpY2VzLiBUaGUgZHJpdmVyIGl0c2VsZiBpcyBmb3IgTWFydmVsbCBXaUZpLCBgbXdpZmlleGAsIHdoaWNoIGlzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIG9mIHJlYWNoYWJpbGl0eSBhcmlzZXMuIENhbiBJIHRyaWdnZXIgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQ/IFllcywgYG13aWZpZXhgICpjYW4qIGJlIGxvYWRlZCwgYW5kIGBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExYCBpcyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBIb3dldmVyLCBgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlYCBpcyB0aGUga2V5LiBJdCBjaGVja3MgdGhlIGRldmljZSB0cmVlJ3Mgcm9vdCBub2RlIGNvbXBhdGlibGUgc3RyaW5nLiBJbiBhIGdlbmVyaWMgc2V0dXAsIHNheSBRRU1VIHdpdGhvdXQgYSBzcGVjaWZpYyBEVCwgdGhpcyBjaGVjayB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgcmV0dXJuIGZhbHNlLiBUaGF0IG1lYW5zLCB3aXRob3V0IHByb3ZpZGluZyBhIERULCB0aGUgY29kZSBwYXRoIGlzIHVuY2hhbmdlZC5cblxuRXZlbiAqaWYqIEkgY291bGQgc29tZWhvdyBmZWVkIHRoZSBmdXp6ZXIgYSBkZXZpY2UgdHJlZSB0aGF0IHBhc3NlcyB0aGUgY2hlY2ssIGFsbCB0aGF0IGhhcHBlbnMgaXMgdGhlIGNhbGwgdG8gYHJlZ3VsYXRvcnlfaGludGAgaXMgc2tpcHBlZC4gSSBoYXZlIHRvIGFzayBteXNlbGYsIGlzIHRoYXQgc21hbGwgc2tpcCBpbiBiZWhhdmlvciBhIHdvcnRod2hpbGUgdGFyZ2V0IGZvciBmdXp6aW5nPyBQcm9iYWJseSBub3QuIEl0J3MgYSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIHF1aXJrLiBTbywgdW5sZXNzIHRoZSBkcml2ZXIgaGFzIHNvbWUgc2lnbmlmaWNhbnQgYnVncyBJJ20gbWlzc2luZywgSSdtIGdvaW5nIHRvIGhhdmUgdG8gZGlnIG1vcmUgaW50byBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgdG8gZmluZCBhIGJldHRlciBmdXp6aW5nIHRhcmdldC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxMCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA4OjA3OjQ1LjQ5NDgxMTIzNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI4MzAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NDY3MD1pbnQgbXdpZmlleF9pbml0X2NoYW5uZWxfc2Nhbl9nYXAoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQ2OTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDcwMDppbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQ3MDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmgtMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmg6MTU6aW50IG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuaC0xNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9NTM1PXN0YXRpYyBpbnQgX213aWZpZXhfZndfZHBjKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTU4Ni1cXHRpZiAoIWFkYXB0ZXItXFx1MDAzZXdpcGh5KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzo1ODc6XFx0XFx0aWYgKG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTEoYWRhcHRlcikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTU4OC1cXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDc6NDUuNTQxMTAyMjE0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYzODk1ODkyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciBhIExpbmtzeXMgUm91dGVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQncyBhIHRpbnkgY2hhbmdlIOKAkyBqdXN0IGJ5cGFzc2luZyBgcmVndWxhdG9yeV9oaW50YCB1bmRlciBzcGVjaWZpYyBMaW5rc3lzIHJvdXRlciBjb25kaXRpb25zLiBQdXJlIGhhcmR3YXJlIHF1aXJrLCByZWFsbHkuIE5vdGhpbmcgZmFuY3kuIE5vIGNvbXBsZXggYWxnb3JpdGhtcyB0byBwb2tlIGF0IHdpdGggZnV6emluZy4gTXkgaW5pdGlhbCBpbnN0aW5jdCB3YXMgdG8gZmxhZyBpdCBhcyBgV29ydGhGdXp6aW5nPXRydWVgLCBidXQgaG9sZCBvbi4uLiBpcyB0aGF0IGV2ZW4ganVzdGlmaWVkPyBJdCdzIGxpdGVyYWxseSBhIG9uZS1saW5lciAob3IgdHdvIGxpbmVzIG9mIGNvbmRpdGlvbnMsIGlmIHlvdSB3YW50IHRvIGJlIHBlZGFudGljISkgYW5kIGBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGVgIGlzIGp1c3QgYSBzaW1wbGUgc3RyaW5nIGNvbXBhcmlzb24gYWdhaW5zdCB0aGUgZGV2aWNlIHRyZWUuXG5cbkl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHRoZSBtb3N0IGZydWl0ZnVsIHRhcmdldCwgYnV0IEkgc2hvdWxkIGxvb2sgZGVlcGVyLCBJIHNob3VsZCBzZWUgaWYgdGhlcmUgaXMgYSByZWFsIGZ1enppbmcgdGFyZ2V0LiBMZXQgbWUgc2VlLi4uIHllcywgSSB0aGluayBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgaGFzIHBvdGVudGlhbC4gTGV0IG1lIHRyYWNrIGRvd24gdGhlIGFwcHJvcHJpYXRlIGNvbmZpZyBvcHRpb25zIHRvIHVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwODowNzo1MC4xODAwNjQyNDNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3MjUwNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1XSUZJRVhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI1OmNvbmZpZyBNV0lGSUVYX1BDSUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDc6NTAuMjI1Nzk0NzgyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwMTc2MDIyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBtd2lmaWV4YCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBgbXdpZmlleGAgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgTVdJRklFWGAsIGBNV0lGSUVYX1NESU9gLCBgTVdJRklFWF9QQ0lFYCwgYW5kIGBNV0lGSUVYX1VTQmAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRoYXQgc2luY2UgYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIGlzIGRlZmluaXRlbHkgZGVmaW5lZCB3aXRoaW4gYGNmZzgwMjExLmNgLCB3aGljaCBpcyAqY29yZSogdG8gdGhlIGBtd2lmaWV4YCBtb2R1bGUsIGBNV0lGSUVYYCBpdHNlbGYgaXMgZ29pbmcgdG8gYmUgYSBmdW5kYW1lbnRhbCByZXF1aXJlbWVudC4gQnV0Li4uIGhvbGQgb24gYSBzZWNvbmQuIERvZXMgYE1XSUZJRVhgICpyZXF1aXJlKiBvbmUgb2YgdGhlIGRldmljZS1zcGVjaWZpYyBvcHRpb25zIOKAkyBlaXRoZXIgYE1XSUZJRVhfU0RJT2AsIGBNV0lGSUVYX1BDSUVgLCBvciBgTVdJRklFWF9VU0JgIOKAkyB0byBhY3R1YWxseSAqZG8qIGFueXRoaW5nIG9yIGxvYWQgcHJvcGVybHk/IEkgdGhpbmsgSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgbWFrZWZpbGVzIHRvIGJlIHN1cmUuIFRpbWUgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZWAuIEknbGwgY29uZmlybSB0aGF0IGxvZ2ljIGZsb3cgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDc6NTQuMjI3NTU3MjEzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBDb3B5cmlnaHQgMjAxMS0yMDIwIE5YUFxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRcXG4gICA3OlxcdG13aWZpZXgteSArPSBtYWluLm9cXG4gICA4OlxcdG13aWZpZXgteSArPSBpbml0Lm9cXG4gICA5OlxcdG13aWZpZXgteSArPSBjZnAub1xcbiAgMTA6XFx0bXdpZmlleC15ICs9IGNtZGV2dC5vXFxuICAxMTpcXHRtd2lmaWV4LXkgKz0gdXRpbC5vXFxuICAxMjpcXHRtd2lmaWV4LXkgKz0gdHhyeC5vXFxuICAxMzpcXHRtd2lmaWV4LXkgKz0gd21tLm9cXG4gIDE0OlxcdG13aWZpZXgteSArPSAxMW4ub1xcbiAgMTU6XFx0bXdpZmlleC15ICs9IDExYWMub1xcbiAgMTY6XFx0bXdpZmlleC15ICs9IDExbl9hZ2dyLm9cXG4gIDE3OlxcdG13aWZpZXgteSArPSAxMW5fcnhyZW9yZGVyLm9cXG4gIDE4OlxcdG13aWZpZXgteSArPSBzY2FuLm9cXG4gIDE5OlxcdG13aWZpZXgteSArPSBqb2luLm9cXG4gIDIwOlxcdG13aWZpZXgteSArPSBzdGFfaW9jdGwub1xcbiAgMjE6XFx0bXdpZmlleC15ICs9IHN0YV9jbWQub1xcbiAgMjI6XFx0bXdpZmlleC15ICs9IHVhcF9jbWQub1xcbiAgMjM6XFx0bXdpZmlleC15ICs9IGllLm9cXG4gIDI0OlxcdG13aWZpZXgteSArPSBzdGFfY21kcmVzcC5vXFxuICAyNTpcXHRtd2lmaWV4LXkgKz0gc3RhX2V2ZW50Lm9cXG4gIDI2OlxcdG13aWZpZXgteSArPSB1YXBfZXZlbnQub1xcbiAgMjc6XFx0bXdpZmlleC15ICs9IHN0YV90eC5vXFxuICAyODpcXHRtd2lmaWV4LXkgKz0gc3RhX3J4Lm9cXG4gIDI5OlxcdG13aWZpZXgteSArPSB1YXBfdHhyeC5vXFxuICAzMDpcXHRtd2lmaWV4LXkgKz0gY2ZnODAyMTEub1xcbiAgMzE6XFx0bXdpZmlleC15ICs9IGV0aHRvb2wub1xcbiAgMzI6XFx0bXdpZmlleC15ICs9IDExaC5vXFxuICAzMzpcXHRtd2lmaWV4LXkgKz0gdGRscy5vXFxuICAzNDpcXHRtd2lmaWV4LSQoQ09ORklHX0RFQlVHX0ZTKSArPSBkZWJ1Z2ZzLm9cXG4gIDM1OlxcdG9iai0kKENPTkZJR19NV0lGSUVYKSArPSBtd2lmaWV4Lm9cXG4gIDM2OlxcdFxcbiAgMzc6XFx0bXdpZmlleF9zZGlvLXkgKz0gc2Rpby5vXFxuICAzODpcXHRvYmotJChDT05GSUdfTVdJRklFWF9TRElPKSArPSBtd2lmaWV4X3NkaW8ub1xcbiAgMzk6XFx0XFxuICA0MDpcXHRtd2lmaWV4X3BjaWUteSArPSBwY2llLm9cXG4gIDQxOlxcdG13aWZpZXhfcGNpZS15ICs9IHBjaWVfcXVpcmtzLm9cXG4gIDQyOlxcdG9iai0kKENPTkZJR19NV0lGSUVYX1BDSUUpICs9IG13aWZpZXhfcGNpZS5vXFxuICA0MzpcXHRcXG4gIDQ0OlxcdG13aWZpZXhfdXNiLXkgKz0gdXNiLm9cXG4gIDQ1OlxcdG9iai0kKENPTkZJR19NV0lGSUVYX1VTQikgKz0gbXdpZmlleF91c2Iub1xcbiAgNDY6XFx0XFxuICA0NzpcXHRjY2ZsYWdzLXkgKz0gLURfX0NIRUNLX0VORElBTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwODowNzo1NC4yMjc2Mjc2MjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTQ3NzUzNTQ2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgTVdJRklFWCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBNV0lGSUVYYCwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBMaW5rc3lzIFdSVDMyMDBBQ00vV1JUMzJ4LiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGVuYWJsZSBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgZm9yIGZ1enppbmcsIHNpbmNlIFVTQiBpcyBhIGNvbnZlbmllbnQgZW50cnkgcG9pbnQgd2l0aCBhIGR1bW15IEhDRC4gSG93ZXZlciwgdGhpcyBpcyBqdXN0IGEgbWlub3IgaGFyZHdhcmUgcXVpcmssIHNvIEkgbmVlZCB0byBjYXJlZnVsbHkgY29uc2lkZXIgaWYgaXQncyBldmVuIHdvcnRoIHRoZSBlZmZvcnQuXG5cblRoZSBwcm9tcHQgbGF5cyBvdXQgc3BlY2lmaWMgY3JpdGVyaWEgZm9yIGV4Y2x1ZGluZyBwYXRjaGVzIGZyb20gZnV6emluZy4gTGV0IG1lIHJldmlldyB0aG9zZSBleGNsdXNpb25zLiBUaGUgcHJpbWFyeSBjb25jZXJuIGhlcmUgaXMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlIHByb21wdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB0aG9zZSBlbnZpcm9ubWVudHMuXG5cblRoZSBwYXRjaCB1c2VzIGBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXCJsaW5rc3lzLHdydDMyMDBhY21cIilgIHdoaWNoLCB3aXRob3V0IGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUsIHdpbGwgcmV0dXJuIGZhbHNlIGluIFFFTVUuIEF0IGZpcnN0LCBJIHRob3VnaHQgdGhhdCBldmVuIHRob3VnaCB0aGUgc3BlY2lmaWMgYnJhbmNoIG1pZ2h0IG5vdCBiZSBoaXQsIHRoZSBzdXJyb3VuZGluZyBgaWZgIHN0YXRlbWVudCB3b3VsZCBzdGlsbCBiZSByZWFjaGFibGUsIGFuZCB0aHVzLCBwb3RlbnRpYWxseSB3b3J0aCBmdXp6aW5nLiBJbml0aWFsbHksIEkgd2FzIHRoaW5raW5nIGJlY2F1c2UgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZWAgaXMgZmFsc2UsIHRoZW4gdGhlIGNvbmRpdGlvbiBgIW9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSguLi4pYCB3b3VsZCBiZSB0cnVlIGFuZCB0aGUgY29kZSB3b3VsZCBwcm9jZWVkIHRvIGByZWd1bGF0b3J5X2hpbnQod2lwaHksIGNvdW50cnlfY29kZSlgLiBIb3dldmVyLCBJIHF1aWNrbHkgcmVhbGl6ZWQgdGhhdCB0aGUgZXhlY3V0aW9uIGZsb3cgaW4gUUVNVSAqaXMqIGV4YWN0bHkgdGhlIHNhbWUgYXMgYmVmb3JlIHRoZSBwYXRjaC4gVGhlIHBhdGNoIG9ubHkgYWx0ZXJzIHRoZSBmbG93IGlmIHRoZSBtYWNoaW5lICppcyogY29tcGF0aWJsZSwgd2hpY2ggUUVNVSAoaW4gaXRzIGRlZmF1bHQgY29uZmlndXJhdGlvbikgd29uJ3QgYmUuXG5cblN5emthbGxlciwgbXkgdHlwaWNhbCBmdXp6aW5nIGVudmlyb25tZW50LCBkb2Vzbid0IGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgZGV2aWNlIHRyZWUncyByb290IG1hY2hpbmUgY29tcGF0aWJsZSBzdHJpbmcuIFNvLCB3aGlsZSBJIGRpZCB0aGluayB0aGlzIHBhdGNoIG1pZ2h0IHJlcHJlc2VudCBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBpdCdzIHRyaXZpYWwgaW4gdGhpcyBjYXNlIGFuZCBkb2Vzbid0LlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCB0aGUgY3JpdGVyaWEgYWdhaW4uIFRoZSBwYXRjaCBhZGRzIGAhb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKFwibGlua3N5cyx3cnQzMjAwYWNtXCIpIFx1MDAyNlx1MDAyNiAhb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKFwibGlua3N5cyx3cnQzMnhcIilgIHRvIGFuIGV4aXN0aW5nIGBpZmAgY29uZGl0aW9uLiBUaGlzIG5ldyBjb2RlIHBhdGgsIHdoZXJlIHRoZSBvcmlnaW5hbCBjb25kaXRpb24gYmVjb21lcyBmYWxzZSAoYmVjYXVzZSBvZiB0aGUgYWRkaXRpb25hbCBjaGVja3MpLCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIFFFTVUgYmVjYXVzZSB0aGUgcm9vdCBtYWNoaW5lIGNvbXBhdGlibGUgc3RyaW5nIGlzIG5vdCB3aGF0J3MgZXhwZWN0ZWQuIGBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGVgIGNoZWNrcyB0aGUgcm9vdCBub2RlIG9mIHRoZSBkZXZpY2UgdHJlZSwgYW5kIFN5emthbGxlciBjYW4ndCBhbHRlciB0aGF0LlxuXG5UaGVyZWZvcmUsIHRoZSBmdW5jdGlvbmFsbHkgY2hhbmdlZCBjb2RlIChza2lwcGluZyBgcmVndWxhdG9yeV9oaW50YCkgKmlzKiBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQWNjb3JkaW5nIHRvIHRoZSBjcml0ZXJpYSwgdGhpcyB3YXJyYW50cyByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFNvLCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDU5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTA4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDg6MDUuNzA1MTY1NTE2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzgyNDk5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9vZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9vZi9hZGRyZXNzLmM9Mzk2PXN0YXRpYyBpbnQgb2ZfZW1wdHlfcmFuZ2VzX3F1aXJrKGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL29mL2FkZHJlc3MuYy00MDgtXFx0XFx0XFx0cXVpcmtfc3RhdGUgPVxcbmRyaXZlcnMvb2YvYWRkcmVzcy5jOjQwOTpcXHRcXHRcXHRcXHRvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXFxcIlBvd2VyIE1hY2ludG9zaFxcXCIpIHx8XFxuZHJpdmVycy9vZi9hZGRyZXNzLmM6NDEwOlxcdFxcdFxcdFxcdG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZShcXFwiTWFjUklTQ1xcXCIpO1xcbmRyaXZlcnMvb2YvYWRkcmVzcy5jLTQxMS1cXHRcXHRyZXR1cm4gcXVpcmtfc3RhdGU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA4OjA4OjA1Ljc0ODk5ODcyNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjY5MDg0MzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlYCoqXG5cbk9rYXksIHRpbWUgdG8gZGlzc2VjdCB0aGlzIGBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGVgIGRlZmluaXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb3JlIGxvZ2ljIGltbWVkaWF0ZWx5LCBnaXZlbiBteSBiYWNrZ3JvdW5kLCBJJ20gZXhwZWN0aW5nIGEgbnVhbmNlZCBhbmQgcG90ZW50aWFsbHkgaW50cmljYXRlIHNldCBvZiBjaGVja3MuIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IGl0IGxpa2VseSBwcm9iZXMgdGhlIGVudmlyb25tZW50LCBwZXJoYXBzIGV4YW1pbmluZyBoYXJkd2FyZSBzcGVjaWZpY2F0aW9ucywgc29mdHdhcmUgdmVyc2lvbnMsIG9yIGV2ZW4gcmVzb3VyY2UgYXZhaWxhYmlsaXR5LCBhZ2FpbnN0IGEgcHJlZGVmaW5lZCBjb21wYXRpYmlsaXR5IG1hdHJpeCBvciBzZXQgb2YgcmVxdWlyZW1lbnRzLiBJIGFudGljaXBhdGUgaXQnbGwgbGV2ZXJhZ2Ugc29tZSBmb3JtIG9mIGludHJvc3BlY3Rpb24gb3IgZGVwZW5kZW5jeSBjaGVja2luZy4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgaG93IGl0IGhhbmRsZXMgZWRnZSBjYXNlcyBhbmQgcG90ZW50aWFsIGFtYmlndWl0aWVzIGluIHRoZSBzeXN0ZW0gc3RhdGUuIFNwZWNpZmljYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciB3aGVyZSBhbmQgaG93IHRoaXMgaXMgdXNlZCB3aXRoaW4gdGhlIG92ZXJhbGwgc3lzdGVtLCB3aGV0aGVyIGl0IGlzIHB1cmVseSBzdGF0aWMgb3IgYWxsb3dzIGZvciBkeW5hbWljIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgYW5kIGhvdyB0byBkZWJ1ZyBpdHMgYmVoYXZpb3IgaWYgdGhpbmdzIGdvIHdyb25nLiBUaW1lIHRvIGRpdmUgaW4gYW5kIGNvbmZpcm0gKG9yIGZhbHNpZnkhKSB0aGVzZSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzEyNCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA4OjA4OjA5LjAxODA4NTk3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjUyMTcwOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL29mL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDg6MDkuMDY0NjE0Nzg5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTQ4OTkyMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIERldmljZSBUcmVlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHN5c3RlbSBpcyBpbnRlcmFjdGluZyB3aXRoIGl0cyBoYXJkd2FyZSwgc28gdGhlIGZpcnN0IHBsYWNlIEknbSBnb2luZyB0byBsb29rIGlzIHRoZSBoZWFydCBvZiBEZXZpY2UgVHJlZSBoYW5kbGluZzogYGluY2x1ZGUvbGludXgvb2YuaGAuIFRoaXMgaGVhZGVyIGZpbGUgaXMgKmNydWNpYWwqLiBJdCdzIHdoZXJlIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgQVBJcyBmb3IgZGVhbGluZyB3aXRoIERldmljZSBUcmVlIGJpbmRpbmdzIGFyZSBkZWZpbmVkLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGtleSBzdHJ1Y3R1cmVzIGxpa2UgYHN0cnVjdCBkZXZpY2Vfbm9kZWAsIHRoZSBwcm9wZXJ0eSBkZWZpbml0aW9ucywgbWFjcm9zIGZvciBtYW5pcHVsYXRpbmcgRGV2aWNlIFRyZWUgZGF0YSwgYW5kIGFsbCB0aGUgbG93LWxldmVsIGZ1bmN0aW9ucyB3ZSB1c2UgdG8gdHJhdmVyc2UgdGhlIHRyZWUuIFVuZGVyc3RhbmRpbmcgdGhpcyBoZWFkZXIgaXMgZnVuZGFtZW50YWwgdG8gZGVidWdnaW5nLCBjb25maWd1cmluZywgYW5kIGV4dGVuZGluZyBhbnkgc3lzdGVtIHVzaW5nIGEgRGV2aWNlIFRyZWUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYmFzaWMgb3BlcmF0aW9ucyBhbmQgZGF0YSB0eXBlcy4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgY29udGFpbmVkIHdpdGhpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM4NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA4OjA4OjEyLjUxOTUxNjc3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjE0NDA1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9vZi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvb2YuaD00MTQ9Y29uc3Qgdm9pZCAqb2ZfbWFjaGluZV9nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaGVzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvb2YuaC00MTYtLyoqXFxuaW5jbHVkZS9saW51eC9vZi5oOjQxNzogKiBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUgLSBUZXN0IHJvb3Qgb2YgZGV2aWNlIHRyZWUgZm9yIGEgZ2l2ZW4gY29tcGF0aWJsZSB2YWx1ZVxcbmluY2x1ZGUvbGludXgvb2YuaC00MTgtICogQGNvbXBhdDogY29tcGF0aWJsZSBzdHJpbmcgdG8gbG9vayBmb3IgaW4gcm9vdCBub2RlJ3MgY29tcGF0aWJsZSBwcm9wZXJ0eS5cXG4tLVxcbmluY2x1ZGUvbGludXgvb2YuaC00MjEtICovXFxuaW5jbHVkZS9saW51eC9vZi5oOjQyMjpzdGF0aWMgaW5saW5lIGJvb2wgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKGNvbnN0IGNoYXIgKmNvbXBhdClcXG5pbmNsdWRlL2xpbnV4L29mLmgtNDIzLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvb2YuaD04NTY9c3RhdGljIGlubGluZSBpbnQgb2ZfYWxpYXNfZ2V0X2hpZ2hlc3RfaWQoY29uc3QgY2hhciAqc3RlbSlcXG4tLVxcbmluY2x1ZGUvbGludXgvb2YuaC04NjAtXFxuaW5jbHVkZS9saW51eC9vZi5oOjg2MTpzdGF0aWMgaW5saW5lIGludCBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoY29uc3QgY2hhciAqY29tcGF0KVxcbmluY2x1ZGUvbGludXgvb2YuaC04NjIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwODowODoxMi41NjU2NjUxMjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg1MTUxMzY4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9RmFsc2U6IE5vIEltcGFjdCBpbiB0aGUgRnV6emVyKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBwcmV0dHkgY2xlYXIuIEl0J3MgZHJpbGxpbmcgZG93biBpbnRvIHRoZSByb290IG9mIHRoZSBkZXZpY2UgdHJlZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIHRob3NlIExpbmtzeXMgcm91dGVyIGNvbXBhdGlibGUgc3RyaW5nczogXCJsaW5rc3lzLHdydDMyMDBhY21cIiBhbmQgXCJsaW5rc3lzLHdydDMyeFwiLiBCdXQsIGFuZCB0aGlzIGlzIHRoZSBjcnVjaWFsIHBvaW50LCBiZWNhdXNlIHdlJ3JlIHJ1bm5pbmcgdGhpcyB0ZXN0IHVuZGVyIHN5emthbGxlciBpbiBhIGdlbmVyaWMgUUVNVSBlbnZpcm9ubWVudCwgdGhhdCByb290IG5vZGUgKndvbid0KiBoYXZlIHRob3NlIGNvbXBhdGlibGUgc3RyaW5ncy4gSXQnbGwgYmUgc29tZXRoaW5nIGdlbmVyaWMsIG5vdCBzcGVjaWZpYyB0byB0aGF0IExpbmtzeXMgaGFyZHdhcmUuXG5cblRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIHBhdGggdGhlIHBhdGNoIGludHJvZHVjZXMsIHdoZXJlIGBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGVgIHdvdWxkIHJldHVybiB0cnVlIGFuZCBzaG9ydC1jaXJjdWl0IHRoZSBgaWZgIGNvbmRpdGlvbiwgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBvdXIgZnV6emVyIHNldHVwLiBUaGlzIHBhdGNoLCBlZmZlY3RpdmVseSwgKmRvZXNuJ3QqIGNoYW5nZSB0aGUgZXhlY3V0aW9uIGZsb3cgYXQgYWxsIGluIG91ciBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUgYWRkZWQgaGFyZHdhcmUtc3BlY2lmaWMgY2hlY2sgaXMgaXJyZWxldmFudCBmb3IgdXMuIENvbnNlcXVlbnRseSwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQncyBub3QgZ29pbmcgdG8gbGVhZCB0byBuZXcgY29kZSBjb3ZlcmFnZSBpbiBvdXIgY29udGV4dCwgc28gdGhlcmUncyBubyB2YWx1ZSBpbiBmdXp6aW5nIHRoaXMgc3BlY2lmaWMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODg2LCJPdXRwdXRUb2tlbnMiOjExNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwODowODoyMS40MTcxODE1MzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmsgdGhhdCBjaGVja3MgdGhlIHJvb3QgZGV2aWNlIHRyZWUgbm9kZSBmb3Igc3BlY2lmaWMgTGlua3N5cyByb3V0ZXIgY29tcGF0aWJsZSBzdHJpbmdzIChgbGlua3N5cyx3cnQzMjAwYWNtYCBhbmQgYGxpbmtzeXMsd3J0MzJ4YCkuIEluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50IGxpa2UgUUVNVSwgdGhlIHJvb3QgZGV2aWNlIHRyZWUgbm9kZSB3aWxsIG5vdCBtYXRjaCB0aGVzZSBzdHJpbmdzLCBtYWtpbmcgdGhlIG5ldyBjb2RlIHBhdGggaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZWZmZWN0aXZlbHkgbm90IGFsdGVyaW5nIHRoZSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayB0aGF0IGNoZWNrcyB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIGZvciBzcGVjaWZpYyBMaW5rc3lzIHJvdXRlciBjb21wYXRpYmxlIHN0cmluZ3MgKGBsaW5rc3lzLHdydDMyMDBhY21gIGFuZCBgbGlua3N5cyx3cnQzMnhgKS4gSW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIHdpbGwgbm90IG1hdGNoIHRoZXNlIHN0cmluZ3MsIG1ha2luZyB0aGUgbmV3IGNvZGUgcGF0aCBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBlZmZlY3RpdmVseSBub3QgYWx0ZXJpbmcgdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtz7lc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 07:48:45 +0000 UTC FinishedAt: 2026-07-29 08:08:23 +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+CgkJCTx0ZD4yMDI2LzA3LzI5IDA4OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayB0aGF0IGNoZWNrcyB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIGZvciBzcGVjaWZpYyBMaW5rc3lzIHJvdXRlciBjb21wYXRpYmxlIHN0cmluZ3MgKGBsaW5rc3lzLHdydDMyMDBhY21gIGFuZCBgbGlua3N5cyx3cnQzMnhgKS4gSW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIHdpbGwgbm90IG1hdGNoIHRoZXNlIHN0cmluZ3MsIG1ha2luZyB0aGUgbmV3IGNvZGUgcGF0aCBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBlZmZlY3RpdmVseSBub3QgYWx0ZXJpbmcgdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI4MmViYzQ0OGU2Yzk3YWViZDJkMDI5ODhlZDNmNzEyZjkxYjVhNjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAwODowNzozNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXG5pbmRleCBhYmM3MDM0NDFjNWQ4Li4wNGY3ZjU4Y2M3ZDBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXG5AQCAtNDg5OSw3ICYjNDM7NDg5OSwxNSBAQCBpbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuIFx0XHRcdFx0Y291bnRyeV9jb2RlID1cbiBcdFx0XHRcdFx0bXdpZmlleF8xMWRfY29kZV8yX3JlZ2lvbihcbiBcdFx0XHRcdFx0XHRhZGFwdGVyLVx1MDAzZXJlZ2lvbl9jb2RlKTtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0LyogV1JUMzIwMEFDTS9XUlQzMnggUk9NIGFsd2F5cyByZXBvcnRzIFVTLCB3aGljaFxuJiM0MztcdFx0XHRcdCAqIGNvbmZsaWN0cyB3aXRoIHJvdXRlcnMgc29sZCBvdXRzaWRlIHRoZSBVUy5cbiYjNDM7XHRcdFx0XHQgKiBJZ25vcmUgdGhpcyBoaW50IHNvIHVzZXJzcGFjZSBjYW5cbiYjNDM7XHRcdFx0XHQgKiBzZXQgdGhlIGNvcnJlY3QgcmVndWxhdG9yeSBkb21haW4uXG4mIzQzO1x0XHRcdFx0ICovXG4gXHRcdFx0XHRpZiAoY291bnRyeV9jb2RlIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0XHRcdCAgICAhb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKFwmIzM0O2xpbmtzeXMsd3J0MzIwMGFjbVwmIzM0OykgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdFx0ICAgICFvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXCYjMzQ7bGlua3N5cyx3cnQzMnhcJiMzNDspIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0ICAgIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgY291bnRyeV9jb2RlKSlcbiBcdFx0XHRcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUixcbiBcdFx0XHRcdFx0XHQgICAgXCYjMzQ7cmVndWxhdG9yeV9oaW50KCkgZmFpbGVkXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGhhcmR3YXJlLXNwZWNpZmljIHF1aXJrIHRoYXQgY2hlY2tzIHRoZSByb290IGRldmljZSB0cmVlIG5vZGUgZm9yIHNwZWNpZmljIExpbmtzeXMgcm91dGVyIGNvbXBhdGlibGUgc3RyaW5ncyAoYGxpbmtzeXMsd3J0MzIwMGFjbWAgYW5kIGBsaW5rc3lzLHdydDMyeGApLiBJbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHRoZSByb290IGRldmljZSB0cmVlIG5vZGUgd2lsbCBub3QgbWF0Y2ggdGhlc2Ugc3RyaW5ncywgbWFraW5nIHRoZSBuZXcgY29kZSBwYXRoIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGVmZmVjdGl2ZWx5IG5vdCBhbHRlcmluZyB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjgyZWJjNDQ4ZTZjOTdhZWJkMmQwMjk4OGVkM2Y3MTJmOTFiNWE2MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDI5IDA4OjA3OjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYwppbmRleCBhYmM3MDM0NDFjNWQ4Li4wNGY3ZjU4Y2M3ZDBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYwpAQCAtNDg5OSw3ICYjNDM7NDg5OSwxNSBAQCBpbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKQogCQkJCWNvdW50cnlfY29kZSA9CiAJCQkJCW13aWZpZXhfMTFkX2NvZGVfMl9yZWdpb24oCiAJCQkJCQlhZGFwdGVyLSZndDtyZWdpb25fY29kZSk7CiYjNDM7CiYjNDM7CQkJCS8qIFdSVDMyMDBBQ00vV1JUMzJ4IFJPTSBhbHdheXMgcmVwb3J0cyBVUywgd2hpY2gKJiM0MzsJCQkJICogY29uZmxpY3RzIHdpdGggcm91dGVycyBzb2xkIG91dHNpZGUgdGhlIFVTLgomIzQzOwkJCQkgKiBJZ25vcmUgdGhpcyBoaW50IHNvIHVzZXJzcGFjZSBjYW4KJiM0MzsJCQkJICogc2V0IHRoZSBjb3JyZWN0IHJlZ3VsYXRvcnkgZG9tYWluLgomIzQzOwkJCQkgKi8KIAkJCQlpZiAoY291bnRyeV9jb2RlICZhbXA7JmFtcDsKJiM0MzsJCQkJICAgICFvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoJiMzNDtsaW5rc3lzLHdydDMyMDBhY20mIzM0OykgJmFtcDsmYW1wOwomIzQzOwkJCQkgICAgIW9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSgmIzM0O2xpbmtzeXMsd3J0MzJ4JiMzNDspICZhbXA7JmFtcDsKIAkJCQkgICAgcmVndWxhdG9yeV9oaW50KHdpcGh5LCBjb3VudHJ5X2NvZGUpKQogCQkJCQltd2lmaWV4X2RiZyhwcml2LSZndDthZGFwdGVyLCBFUlJPUiwKIAkJCQkJCSAgICAmIzM0O3JlZ3VsYXRvcnlfaGludCgpIGZhaWxlZFxuJiMzNDspOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjEwCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jYC4gSXQmIzM5O3MgYSBjb25kaXRpb25hbCBjaGVjayBmb3IgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSgmIzM0O2xpbmtzeXMsd3J0MzIwMGFjbSYjMzQ7KWAgb3IgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSgmIzM0O2xpbmtzeXMsd3J0MzJ4JiMzNDspYCBiZWZvcmUgY2FsbGluZyBgcmVndWxhdG9yeV9oaW50YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gKndvcnRoKiBzcGVuZGluZyB0aW1lIGZ1enppbmc/CgpUaGUgcGF0Y2ggaXRzZWxmIGFsdGVycyBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAuIFNvLCBpdCYjMzk7cyBhIGNvZGUgYWRkaXRpb24sIGEgY29udHJvbCBmbG93IG1vZGlmaWNhdGlvbiwgYnV0LCBhIHByZXR0eSBuYXJyb3cgb25lLCB0YXJnZXRlZCB0byB0aGVzZSBzcGVjaWZpYyBMaW5rc3lzIGRldmljZXMuIFRoZSBkcml2ZXIgaXRzZWxmIGlzIGZvciBNYXJ2ZWxsIFdpRmksIGBtd2lmaWV4YCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZC4KCk5vdywgdGhlIHF1ZXN0aW9uIG9mIHJlYWNoYWJpbGl0eSBhcmlzZXMuIENhbiBJIHRyaWdnZXIgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQ/IFllcywgYG13aWZpZXhgICpjYW4qIGJlIGxvYWRlZCwgYW5kIGBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExYCBpcyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBIb3dldmVyLCBgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlYCBpcyB0aGUga2V5LiBJdCBjaGVja3MgdGhlIGRldmljZSB0cmVlJiMzOTtzIHJvb3Qgbm9kZSBjb21wYXRpYmxlIHN0cmluZy4gSW4gYSBnZW5lcmljIHNldHVwLCBzYXkgUUVNVSB3aXRob3V0IGEgc3BlY2lmaWMgRFQsIHRoaXMgY2hlY2sgd2lsbCBhbG1vc3QgY2VydGFpbmx5IHJldHVybiBmYWxzZS4gVGhhdCBtZWFucywgd2l0aG91dCBwcm92aWRpbmcgYSBEVCwgdGhlIGNvZGUgcGF0aCBpcyB1bmNoYW5nZWQuCgpFdmVuICppZiogSSBjb3VsZCBzb21laG93IGZlZWQgdGhlIGZ1enplciBhIGRldmljZSB0cmVlIHRoYXQgcGFzc2VzIHRoZSBjaGVjaywgYWxsIHRoYXQgaGFwcGVucyBpcyB0aGUgY2FsbCB0byBgcmVndWxhdG9yeV9oaW50YCBpcyBza2lwcGVkLiBJIGhhdmUgdG8gYXNrIG15c2VsZiwgaXMgdGhhdCBzbWFsbCBza2lwIGluIGJlaGF2aW9yIGEgd29ydGh3aGlsZSB0YXJnZXQgZm9yIGZ1enppbmc/IFByb2JhYmx5IG5vdC4gSXQmIzM5O3MgYSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIHF1aXJrLiBTbywgdW5sZXNzIHRoZSBkcml2ZXIgaGFzIHNvbWUgc2lnbmlmaWNhbnQgYnVncyBJJiMzOTttIG1pc3NpbmcsIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBkaWcgbW9yZSBpbnRvIGBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExYCB0byBmaW5kIGEgYmV0dGVyIGZ1enppbmcgdGFyZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA4OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTQ2NzA9aW50IG13aWZpZXhfaW5pdF9jaGFubmVsX3NjYW5fZ2FwKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNDY5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjQ3MDA6aW50IG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQ3MDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5oLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmg6MTU6aW50IG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5oLTE2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9NTM1PXN0YXRpYyBpbnQgX213aWZpZXhfZndfZHBjKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy01ODYtXHRpZiAoIWFkYXB0ZXItXHUwMDNld2lwaHkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6NTg3Olx0XHRpZiAobXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShhZGFwdGVyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy01ODgtXHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDg6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciBhIExpbmtzeXMgUm91dGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyBhIHRpbnkgY2hhbmdlIOKAkyBqdXN0IGJ5cGFzc2luZyBgcmVndWxhdG9yeV9oaW50YCB1bmRlciBzcGVjaWZpYyBMaW5rc3lzIHJvdXRlciBjb25kaXRpb25zLiBQdXJlIGhhcmR3YXJlIHF1aXJrLCByZWFsbHkuIE5vdGhpbmcgZmFuY3kuIE5vIGNvbXBsZXggYWxnb3JpdGhtcyB0byBwb2tlIGF0IHdpdGggZnV6emluZy4gTXkgaW5pdGlhbCBpbnN0aW5jdCB3YXMgdG8gZmxhZyBpdCBhcyBgV29ydGhGdXp6aW5nPXRydWVgLCBidXQgaG9sZCBvbi4uLiBpcyB0aGF0IGV2ZW4ganVzdGlmaWVkPyBJdCYjMzk7cyBsaXRlcmFsbHkgYSBvbmUtbGluZXIgKG9yIHR3byBsaW5lcyBvZiBjb25kaXRpb25zLCBpZiB5b3Ugd2FudCB0byBiZSBwZWRhbnRpYyEpIGFuZCBgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlYCBpcyBqdXN0IGEgc2ltcGxlIHN0cmluZyBjb21wYXJpc29uIGFnYWluc3QgdGhlIGRldmljZSB0cmVlLgoKSXQgZG9lc24mIzM5O3Qgc2VlbSBsaWtlIHRoZSBtb3N0IGZydWl0ZnVsIHRhcmdldCwgYnV0IEkgc2hvdWxkIGxvb2sgZGVlcGVyLCBJIHNob3VsZCBzZWUgaWYgdGhlcmUgaXMgYSByZWFsIGZ1enppbmcgdGFyZ2V0LiBMZXQgbWUgc2VlLi4uIHllcywgSSB0aGluayBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgaGFzIHBvdGVudGlhbC4gTGV0IG1lIHRyYWNrIGRvd24gdGhlIGFwcHJvcHJpYXRlIGNvbmZpZyBvcHRpb25zIHRvIHVzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyNTpjb25maWcgTVdJRklFWF9QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA4OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbXdpZmlleGAgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBgbXdpZmlleGAgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgTVdJRklFWGAsIGBNV0lGSUVYX1NESU9gLCBgTVdJRklFWF9QQ0lFYCwgYW5kIGBNV0lGSUVYX1VTQmAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRoYXQgc2luY2UgYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIGlzIGRlZmluaXRlbHkgZGVmaW5lZCB3aXRoaW4gYGNmZzgwMjExLmNgLCB3aGljaCBpcyAqY29yZSogdG8gdGhlIGBtd2lmaWV4YCBtb2R1bGUsIGBNV0lGSUVYYCBpdHNlbGYgaXMgZ29pbmcgdG8gYmUgYSBmdW5kYW1lbnRhbCByZXF1aXJlbWVudC4gQnV0Li4uIGhvbGQgb24gYSBzZWNvbmQuIERvZXMgYE1XSUZJRVhgICpyZXF1aXJlKiBvbmUgb2YgdGhlIGRldmljZS1zcGVjaWZpYyBvcHRpb25zIOKAkyBlaXRoZXIgYE1XSUZJRVhfU0RJT2AsIGBNV0lGSUVYX1BDSUVgLCBvciBgTVdJRklFWF9VU0JgIOKAkyB0byBhY3R1YWxseSAqZG8qIGFueXRoaW5nIG9yIGxvYWQgcHJvcGVybHk/IEkgdGhpbmsgSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgbWFrZWZpbGVzIHRvIGJlIHN1cmUuIFRpbWUgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZWAuIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBsb2dpYyBmbG93IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA4OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIENvcHlyaWdodCAyMDExLTIwMjAgTlhQXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdFxuICAgNzpcdG13aWZpZXgteSAmIzQzOz0gbWFpbi5vXG4gICA4Olx0bXdpZmlleC15ICYjNDM7PSBpbml0Lm9cbiAgIDk6XHRtd2lmaWV4LXkgJiM0Mzs9IGNmcC5vXG4gIDEwOlx0bXdpZmlleC15ICYjNDM7PSBjbWRldnQub1xuICAxMTpcdG13aWZpZXgteSAmIzQzOz0gdXRpbC5vXG4gIDEyOlx0bXdpZmlleC15ICYjNDM7PSB0eHJ4Lm9cbiAgMTM6XHRtd2lmaWV4LXkgJiM0Mzs9IHdtbS5vXG4gIDE0Olx0bXdpZmlleC15ICYjNDM7PSAxMW4ub1xuICAxNTpcdG13aWZpZXgteSAmIzQzOz0gMTFhYy5vXG4gIDE2Olx0bXdpZmlleC15ICYjNDM7PSAxMW5fYWdnci5vXG4gIDE3Olx0bXdpZmlleC15ICYjNDM7PSAxMW5fcnhyZW9yZGVyLm9cbiAgMTg6XHRtd2lmaWV4LXkgJiM0Mzs9IHNjYW4ub1xuICAxOTpcdG13aWZpZXgteSAmIzQzOz0gam9pbi5vXG4gIDIwOlx0bXdpZmlleC15ICYjNDM7PSBzdGFfaW9jdGwub1xuICAyMTpcdG13aWZpZXgteSAmIzQzOz0gc3RhX2NtZC5vXG4gIDIyOlx0bXdpZmlleC15ICYjNDM7PSB1YXBfY21kLm9cbiAgMjM6XHRtd2lmaWV4LXkgJiM0Mzs9IGllLm9cbiAgMjQ6XHRtd2lmaWV4LXkgJiM0Mzs9IHN0YV9jbWRyZXNwLm9cbiAgMjU6XHRtd2lmaWV4LXkgJiM0Mzs9IHN0YV9ldmVudC5vXG4gIDI2Olx0bXdpZmlleC15ICYjNDM7PSB1YXBfZXZlbnQub1xuICAyNzpcdG13aWZpZXgteSAmIzQzOz0gc3RhX3R4Lm9cbiAgMjg6XHRtd2lmaWV4LXkgJiM0Mzs9IHN0YV9yeC5vXG4gIDI5Olx0bXdpZmlleC15ICYjNDM7PSB1YXBfdHhyeC5vXG4gIDMwOlx0bXdpZmlleC15ICYjNDM7PSBjZmc4MDIxMS5vXG4gIDMxOlx0bXdpZmlleC15ICYjNDM7PSBldGh0b29sLm9cbiAgMzI6XHRtd2lmaWV4LXkgJiM0Mzs9IDExaC5vXG4gIDMzOlx0bXdpZmlleC15ICYjNDM7PSB0ZGxzLm9cbiAgMzQ6XHRtd2lmaWV4LSQoQ09ORklHX0RFQlVHX0ZTKSAmIzQzOz0gZGVidWdmcy5vXG4gIDM1Olx0b2JqLSQoQ09ORklHX01XSUZJRVgpICYjNDM7PSBtd2lmaWV4Lm9cbiAgMzY6XHRcbiAgMzc6XHRtd2lmaWV4X3NkaW8teSAmIzQzOz0gc2Rpby5vXG4gIDM4Olx0b2JqLSQoQ09ORklHX01XSUZJRVhfU0RJTykgJiM0Mzs9IG13aWZpZXhfc2Rpby5vXG4gIDM5Olx0XG4gIDQwOlx0bXdpZmlleF9wY2llLXkgJiM0Mzs9IHBjaWUub1xuICA0MTpcdG13aWZpZXhfcGNpZS15ICYjNDM7PSBwY2llX3F1aXJrcy5vXG4gIDQyOlx0b2JqLSQoQ09ORklHX01XSUZJRVhfUENJRSkgJiM0Mzs9IG13aWZpZXhfcGNpZS5vXG4gIDQzOlx0XG4gIDQ0Olx0bXdpZmlleF91c2IteSAmIzQzOz0gdXNiLm9cbiAgNDU6XHRvYmotJChDT05GSUdfTVdJRklFWF9VU0IpICYjNDM7PSBtd2lmaWV4X3VzYi5vXG4gIDQ2Olx0XG4gIDQ3Olx0Y2NmbGFncy15ICYjNDM7PSAtRF9fQ0hFQ0tfRU5ESUFOXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDg6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ1OQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDkwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgTVdJRklFWCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYE1XSUZJRVhgLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIExpbmtzeXMgV1JUMzIwMEFDTS9XUlQzMnguIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZW5hYmxlIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBmb3IgZnV6emluZywgc2luY2UgVVNCIGlzIGEgY29udmVuaWVudCBlbnRyeSBwb2ludCB3aXRoIGEgZHVtbXkgSENELiBIb3dldmVyLCB0aGlzIGlzIGp1c3QgYSBtaW5vciBoYXJkd2FyZSBxdWlyaywgc28gSSBuZWVkIHRvIGNhcmVmdWxseSBjb25zaWRlciBpZiBpdCYjMzk7cyBldmVuIHdvcnRoIHRoZSBlZmZvcnQuCgpUaGUgcHJvbXB0IGxheXMgb3V0IHNwZWNpZmljIGNyaXRlcmlhIGZvciBleGNsdWRpbmcgcGF0Y2hlcyBmcm9tIGZ1enppbmcuIExldCBtZSByZXZpZXcgdGhvc2UgZXhjbHVzaW9ucy4gVGhlIHByaW1hcnkgY29uY2VybiBoZXJlIGlzIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdGhvc2UgZW52aXJvbm1lbnRzLgoKVGhlIHBhdGNoIHVzZXMgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSgmIzM0O2xpbmtzeXMsd3J0MzIwMGFjbSYjMzQ7KWAgd2hpY2gsIHdpdGhvdXQgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSwgd2lsbCByZXR1cm4gZmFsc2UgaW4gUUVNVS4gQXQgZmlyc3QsIEkgdGhvdWdodCB0aGF0IGV2ZW4gdGhvdWdoIHRoZSBzcGVjaWZpYyBicmFuY2ggbWlnaHQgbm90IGJlIGhpdCwgdGhlIHN1cnJvdW5kaW5nIGBpZmAgc3RhdGVtZW50IHdvdWxkIHN0aWxsIGJlIHJlYWNoYWJsZSwgYW5kIHRodXMsIHBvdGVudGlhbGx5IHdvcnRoIGZ1enppbmcuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgYmVjYXVzZSBgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlYCBpcyBmYWxzZSwgdGhlbiB0aGUgY29uZGl0aW9uIGAhb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKC4uLilgIHdvdWxkIGJlIHRydWUgYW5kIHRoZSBjb2RlIHdvdWxkIHByb2NlZWQgdG8gYHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgY291bnRyeV9jb2RlKWAuIEhvd2V2ZXIsIEkgcXVpY2tseSByZWFsaXplZCB0aGF0IHRoZSBleGVjdXRpb24gZmxvdyBpbiBRRU1VICppcyogZXhhY3RseSB0aGUgc2FtZSBhcyBiZWZvcmUgdGhlIHBhdGNoLiBUaGUgcGF0Y2ggb25seSBhbHRlcnMgdGhlIGZsb3cgaWYgdGhlIG1hY2hpbmUgKmlzKiBjb21wYXRpYmxlLCB3aGljaCBRRU1VIChpbiBpdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uKSB3b24mIzM5O3QgYmUuCgpTeXprYWxsZXIsIG15IHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudCwgZG9lc24mIzM5O3QgZHluYW1pY2FsbHkgY2hhbmdlIHRoZSBkZXZpY2UgdHJlZSYjMzk7cyByb290IG1hY2hpbmUgY29tcGF0aWJsZSBzdHJpbmcuIFNvLCB3aGlsZSBJIGRpZCB0aGluayB0aGlzIHBhdGNoIG1pZ2h0IHJlcHJlc2VudCBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBpdCYjMzk7cyB0cml2aWFsIGluIHRoaXMgY2FzZSBhbmQgZG9lc24mIzM5O3QuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGNyaXRlcmlhIGFnYWluLiBUaGUgcGF0Y2ggYWRkcyBgIW9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSgmIzM0O2xpbmtzeXMsd3J0MzIwMGFjbSYjMzQ7KSAmYW1wOyZhbXA7ICFvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoJiMzNDtsaW5rc3lzLHdydDMyeCYjMzQ7KWAgdG8gYW4gZXhpc3RpbmcgYGlmYCBjb25kaXRpb24uIFRoaXMgbmV3IGNvZGUgcGF0aCwgd2hlcmUgdGhlIG9yaWdpbmFsIGNvbmRpdGlvbiBiZWNvbWVzIGZhbHNlIChiZWNhdXNlIG9mIHRoZSBhZGRpdGlvbmFsIGNoZWNrcyksIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gUUVNVSBiZWNhdXNlIHRoZSByb290IG1hY2hpbmUgY29tcGF0aWJsZSBzdHJpbmcgaXMgbm90IHdoYXQmIzM5O3MgZXhwZWN0ZWQuIGBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGVgIGNoZWNrcyB0aGUgcm9vdCBub2RlIG9mIHRoZSBkZXZpY2UgdHJlZSwgYW5kIFN5emthbGxlciBjYW4mIzM5O3QgYWx0ZXIgdGhhdC4KClRoZXJlZm9yZSwgdGhlIGZ1bmN0aW9uYWxseSBjaGFuZ2VkIGNvZGUgKHNraXBwaW5nIGByZWd1bGF0b3J5X2hpbnRgKSAqaXMqIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBBY2NvcmRpbmcgdG8gdGhlIGNyaXRlcmlhLCB0aGlzIHdhcnJhbnRzIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gU28sIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL29mLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL29mL2FkZHJlc3MuYz0zOTY9c3RhdGljIGludCBvZl9lbXB0eV9yYW5nZXNfcXVpcmsoY29uc3Qgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL29mL2FkZHJlc3MuYy00MDgtXHRcdFx0cXVpcmtfc3RhdGUgPVxuZHJpdmVycy9vZi9hZGRyZXNzLmM6NDA5Olx0XHRcdFx0b2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKFwmIzM0O1Bvd2VyIE1hY2ludG9zaFwmIzM0OykgfHxcbmRyaXZlcnMvb2YvYWRkcmVzcy5jOjQxMDpcdFx0XHRcdG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZShcJiMzNDtNYWNSSVNDXCYjMzQ7KTtcbmRyaXZlcnMvb2YvYWRkcmVzcy5jLTQxMS1cdFx0cmV0dXJuIHF1aXJrX3N0YXRlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTI0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZWAqKgoKT2theSwgdGltZSB0byBkaXNzZWN0IHRoaXMgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZWAgZGVmaW5pdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvcmUgbG9naWMgaW1tZWRpYXRlbHksIGdpdmVuIG15IGJhY2tncm91bmQsIEkmIzM5O20gZXhwZWN0aW5nIGEgbnVhbmNlZCBhbmQgcG90ZW50aWFsbHkgaW50cmljYXRlIHNldCBvZiBjaGVja3MuIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IGl0IGxpa2VseSBwcm9iZXMgdGhlIGVudmlyb25tZW50LCBwZXJoYXBzIGV4YW1pbmluZyBoYXJkd2FyZSBzcGVjaWZpY2F0aW9ucywgc29mdHdhcmUgdmVyc2lvbnMsIG9yIGV2ZW4gcmVzb3VyY2UgYXZhaWxhYmlsaXR5LCBhZ2FpbnN0IGEgcHJlZGVmaW5lZCBjb21wYXRpYmlsaXR5IG1hdHJpeCBvciBzZXQgb2YgcmVxdWlyZW1lbnRzLiBJIGFudGljaXBhdGUgaXQmIzM5O2xsIGxldmVyYWdlIHNvbWUgZm9ybSBvZiBpbnRyb3NwZWN0aW9uIG9yIGRlcGVuZGVuY3kgY2hlY2tpbmcuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBob3cgaXQgaGFuZGxlcyBlZGdlIGNhc2VzIGFuZCBwb3RlbnRpYWwgYW1iaWd1aXRpZXMgaW4gdGhlIHN5c3RlbSBzdGF0ZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB3aGVyZSBhbmQgaG93IHRoaXMgaXMgdXNlZCB3aXRoaW4gdGhlIG92ZXJhbGwgc3lzdGVtLCB3aGV0aGVyIGl0IGlzIHB1cmVseSBzdGF0aWMgb3IgYWxsb3dzIGZvciBkeW5hbWljIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgYW5kIGhvdyB0byBkZWJ1ZyBpdHMgYmVoYXZpb3IgaWYgdGhpbmdzIGdvIHdyb25nLiBUaW1lIHRvIGRpdmUgaW4gYW5kIGNvbmZpcm0gKG9yIGZhbHNpZnkhKSB0aGVzZSBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDg6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9vZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mzg0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgRGV2aWNlIFRyZWUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHN5c3RlbSBpcyBpbnRlcmFjdGluZyB3aXRoIGl0cyBoYXJkd2FyZSwgc28gdGhlIGZpcnN0IHBsYWNlIEkmIzM5O20gZ29pbmcgdG8gbG9vayBpcyB0aGUgaGVhcnQgb2YgRGV2aWNlIFRyZWUgaGFuZGxpbmc6IGBpbmNsdWRlL2xpbnV4L29mLmhgLiBUaGlzIGhlYWRlciBmaWxlIGlzICpjcnVjaWFsKi4gSXQmIzM5O3Mgd2hlcmUgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBBUElzIGZvciBkZWFsaW5nIHdpdGggRGV2aWNlIFRyZWUgYmluZGluZ3MgYXJlIGRlZmluZWQuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGtleSBzdHJ1Y3R1cmVzIGxpa2UgYHN0cnVjdCBkZXZpY2Vfbm9kZWAsIHRoZSBwcm9wZXJ0eSBkZWZpbml0aW9ucywgbWFjcm9zIGZvciBtYW5pcHVsYXRpbmcgRGV2aWNlIFRyZWUgZGF0YSwgYW5kIGFsbCB0aGUgbG93LWxldmVsIGZ1bmN0aW9ucyB3ZSB1c2UgdG8gdHJhdmVyc2UgdGhlIHRyZWUuIFVuZGVyc3RhbmRpbmcgdGhpcyBoZWFkZXIgaXMgZnVuZGFtZW50YWwgdG8gZGVidWdnaW5nLCBjb25maWd1cmluZywgYW5kIGV4dGVuZGluZyBhbnkgc3lzdGVtIHVzaW5nIGEgRGV2aWNlIFRyZWUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYmFzaWMgb3BlcmF0aW9ucyBhbmQgZGF0YSB0eXBlcy4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgYXJlIGNvbnRhaW5lZCB3aXRoaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA4OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29mX21hY2hpbmVfaXNfY29tcGF0aWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvb2YuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L29mLmg9NDE0PWNvbnN0IHZvaWQgKm9mX21hY2hpbmVfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqbWF0Y2hlcyk7XG4tLVxuaW5jbHVkZS9saW51eC9vZi5oLTQxNi0vKipcbmluY2x1ZGUvbGludXgvb2YuaDo0MTc6ICogb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlIC0gVGVzdCByb290IG9mIGRldmljZSB0cmVlIGZvciBhIGdpdmVuIGNvbXBhdGlibGUgdmFsdWVcbmluY2x1ZGUvbGludXgvb2YuaC00MTgtICogQGNvbXBhdDogY29tcGF0aWJsZSBzdHJpbmcgdG8gbG9vayBmb3IgaW4gcm9vdCBub2RlJiMzOTtzIGNvbXBhdGlibGUgcHJvcGVydHkuXG4tLVxuaW5jbHVkZS9saW51eC9vZi5oLTQyMS0gKi9cbmluY2x1ZGUvbGludXgvb2YuaDo0MjI6c3RhdGljIGlubGluZSBib29sIG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZShjb25zdCBjaGFyICpjb21wYXQpXG5pbmNsdWRlL2xpbnV4L29mLmgtNDIzLXtcbi0tXG5pbmNsdWRlL2xpbnV4L29mLmg9ODU2PXN0YXRpYyBpbmxpbmUgaW50IG9mX2FsaWFzX2dldF9oaWdoZXN0X2lkKGNvbnN0IGNoYXIgKnN0ZW0pXG4tLVxuaW5jbHVkZS9saW51eC9vZi5oLTg2MC1cbmluY2x1ZGUvbGludXgvb2YuaDo4NjE6c3RhdGljIGlubGluZSBpbnQgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKGNvbnN0IGNoYXIgKmNvbXBhdClcbmluY2x1ZGUvbGludXgvb2YuaC04NjIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODg2CgkJCQkJCQlvdXRwdXQ6IDExNwoJCQkJCQkJdGhvdWdodHM6IDIxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9RmFsc2U6IE5vIEltcGFjdCBpbiB0aGUgRnV6emVyKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIuIEl0JiMzOTtzIGRyaWxsaW5nIGRvd24gaW50byB0aGUgcm9vdCBvZiB0aGUgZGV2aWNlIHRyZWUsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciB0aG9zZSBMaW5rc3lzIHJvdXRlciBjb21wYXRpYmxlIHN0cmluZ3M6ICYjMzQ7bGlua3N5cyx3cnQzMjAwYWNtJiMzNDsgYW5kICYjMzQ7bGlua3N5cyx3cnQzMngmIzM0Oy4gQnV0LCBhbmQgdGhpcyBpcyB0aGUgY3J1Y2lhbCBwb2ludCwgYmVjYXVzZSB3ZSYjMzk7cmUgcnVubmluZyB0aGlzIHRlc3QgdW5kZXIgc3l6a2FsbGVyIGluIGEgZ2VuZXJpYyBRRU1VIGVudmlyb25tZW50LCB0aGF0IHJvb3Qgbm9kZSAqd29uJiMzOTt0KiBoYXZlIHRob3NlIGNvbXBhdGlibGUgc3RyaW5ncy4gSXQmIzM5O2xsIGJlIHNvbWV0aGluZyBnZW5lcmljLCBub3Qgc3BlY2lmaWMgdG8gdGhhdCBMaW5rc3lzIGhhcmR3YXJlLgoKVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgcGF0aCB0aGUgcGF0Y2ggaW50cm9kdWNlcywgd2hlcmUgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZWAgd291bGQgcmV0dXJuIHRydWUgYW5kIHNob3J0LWNpcmN1aXQgdGhlIGBpZmAgY29uZGl0aW9uLCBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIG91ciBmdXp6ZXIgc2V0dXAuIFRoaXMgcGF0Y2gsIGVmZmVjdGl2ZWx5LCAqZG9lc24mIzM5O3QqIGNoYW5nZSB0aGUgZXhlY3V0aW9uIGZsb3cgYXQgYWxsIGluIG91ciBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUgYWRkZWQgaGFyZHdhcmUtc3BlY2lmaWMgY2hlY2sgaXMgaXJyZWxldmFudCBmb3IgdXMuIENvbnNlcXVlbnRseSwgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0JiMzOTtzIG5vdCBnb2luZyB0byBsZWFkIHRvIG5ldyBjb2RlIGNvdmVyYWdlIGluIG91ciBjb250ZXh0LCBzbyB0aGVyZSYjMzk7cyBubyB2YWx1ZSBpbiBmdXp6aW5nIHRoaXMgc3BlY2lmaWMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwODowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayB0aGF0IGNoZWNrcyB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIGZvciBzcGVjaWZpYyBMaW5rc3lzIHJvdXRlciBjb21wYXRpYmxlIHN0cmluZ3MgKGBsaW5rc3lzLHdydDMyMDBhY21gIGFuZCBgbGlua3N5cyx3cnQzMnhgKS4gSW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIHdpbGwgbm90IG1hdGNoIHRoZXNlIHN0cmluZ3MsIG1ha2luZyB0aGUgbmV3IGNvZGUgcGF0aCBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBlZmZlY3RpdmVseSBub3QgYWx0ZXJpbmcgdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGhhcmR3YXJlLXNwZWNpZmljIHF1aXJrIHRoYXQgY2hlY2tzIHRoZSByb290IGRldmljZSB0cmVlIG5vZGUgZm9yIHNwZWNpZmljIExpbmtzeXMgcm91dGVyIGNvbXBhdGlibGUgc3RyaW5ncyAoYGxpbmtzeXMsd3J0MzIwMGFjbWAgYW5kIGBsaW5rc3lzLHdydDMyeGApLiBJbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHRoZSByb290IGRldmljZSB0cmVlIG5vZGUgd2lsbCBub3QgbWF0Y2ggdGhlc2Ugc3RyaW5ncywgbWFraW5nIHRoZSBuZXcgY29kZSBwYXRoIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGVmZmVjdGl2ZWx5IG5vdCBhbHRlcmluZyB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDc6MzguMTA0NzM2MTIzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzMTI0Nzc1NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayB0aGF0IGNoZWNrcyB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIGZvciBzcGVjaWZpYyBMaW5rc3lzIHJvdXRlciBjb21wYXRpYmxlIHN0cmluZ3MgKGBsaW5rc3lzLHdydDMyMDBhY21gIGFuZCBgbGlua3N5cyx3cnQzMnhgKS4gSW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIHdpbGwgbm90IG1hdGNoIHRoZXNlIHN0cmluZ3MsIG1ha2luZyB0aGUgbmV3IGNvZGUgcGF0aCBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBlZmZlY3RpdmVseSBub3QgYWx0ZXJpbmcgdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDc6MzguMTA0NzQ5OTczWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTk3ODQ0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyODJlYmM0NDhlNmM5N2FlYmQyZDAyOTg4ZWQzZjcxMmY5MWI1YTYzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDA4OjA3OjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcXG5pbmRleCBhYmM3MDM0NDFjNWQ4Li4wNGY3ZjU4Y2M3ZDBjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcXG5AQCAtNDg5OSw3ICs0ODk5LDE1IEBAIGludCBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIFxcdFxcdFxcdFxcdGNvdW50cnlfY29kZSA9XFxuIFxcdFxcdFxcdFxcdFxcdG13aWZpZXhfMTFkX2NvZGVfMl9yZWdpb24oXFxuIFxcdFxcdFxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXJlZ2lvbl9jb2RlKTtcXG4rXFxuK1xcdFxcdFxcdFxcdC8qIFdSVDMyMDBBQ00vV1JUMzJ4IFJPTSBhbHdheXMgcmVwb3J0cyBVUywgd2hpY2hcXG4rXFx0XFx0XFx0XFx0ICogY29uZmxpY3RzIHdpdGggcm91dGVycyBzb2xkIG91dHNpZGUgdGhlIFVTLlxcbitcXHRcXHRcXHRcXHQgKiBJZ25vcmUgdGhpcyBoaW50IHNvIHVzZXJzcGFjZSBjYW5cXG4rXFx0XFx0XFx0XFx0ICogc2V0IHRoZSBjb3JyZWN0IHJlZ3VsYXRvcnkgZG9tYWluLlxcbitcXHRcXHRcXHRcXHQgKi9cXG4gXFx0XFx0XFx0XFx0aWYgKGNvdW50cnlfY29kZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHRcXHQgICAgIW9mX21hY2hpbmVfaXNfY29tcGF0aWJsZShcXFwibGlua3N5cyx3cnQzMjAwYWNtXFxcIikgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0XFx0ICAgICFvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXFxcImxpbmtzeXMsd3J0MzJ4XFxcIikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0ICAgIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgY291bnRyeV9jb2RlKSlcXG4gXFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgRVJST1IsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXFwicmVndWxhdG9yeV9oaW50KCkgZmFpbGVkXFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDc6MzguNTA1MjgwMzYzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDI5MTE5MjYyMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayB0aGF0IGNoZWNrcyB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIGZvciBzcGVjaWZpYyBMaW5rc3lzIHJvdXRlciBjb21wYXRpYmxlIHN0cmluZ3MgKGBsaW5rc3lzLHdydDMyMDBhY21gIGFuZCBgbGlua3N5cyx3cnQzMnhgKS4gSW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIHdpbGwgbm90IG1hdGNoIHRoZXNlIHN0cmluZ3MsIG1ha2luZyB0aGUgbmV3IGNvZGUgcGF0aCBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBlZmZlY3RpdmVseSBub3QgYWx0ZXJpbmcgdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjgyZWJjNDQ4ZTZjOTdhZWJkMmQwMjk4OGVkM2Y3MTJmOTFiNWE2M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDA4OjA3OjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuaW5kZXggYWJjNzAzNDQxYzVkOC4uMDRmN2Y1OGNjN2QwYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuQEAgLTQ4OTksNyArNDg5OSwxNSBAQCBpbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuIFx0XHRcdFx0Y291bnRyeV9jb2RlID1cbiBcdFx0XHRcdFx0bXdpZmlleF8xMWRfY29kZV8yX3JlZ2lvbihcbiBcdFx0XHRcdFx0XHRhZGFwdGVyLVx1MDAzZXJlZ2lvbl9jb2RlKTtcbitcbitcdFx0XHRcdC8qIFdSVDMyMDBBQ00vV1JUMzJ4IFJPTSBhbHdheXMgcmVwb3J0cyBVUywgd2hpY2hcbitcdFx0XHRcdCAqIGNvbmZsaWN0cyB3aXRoIHJvdXRlcnMgc29sZCBvdXRzaWRlIHRoZSBVUy5cbitcdFx0XHRcdCAqIElnbm9yZSB0aGlzIGhpbnQgc28gdXNlcnNwYWNlIGNhblxuK1x0XHRcdFx0ICogc2V0IHRoZSBjb3JyZWN0IHJlZ3VsYXRvcnkgZG9tYWluLlxuK1x0XHRcdFx0ICovXG4gXHRcdFx0XHRpZiAoY291bnRyeV9jb2RlIFx1MDAyNlx1MDAyNlxuK1x0XHRcdFx0ICAgICFvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXCJsaW5rc3lzLHdydDMyMDBhY21cIikgXHUwMDI2XHUwMDI2XG4rXHRcdFx0XHQgICAgIW9mX21hY2hpbmVfaXNfY29tcGF0aWJsZShcImxpbmtzeXMsd3J0MzJ4XCIpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0ICAgIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgY291bnRyeV9jb2RlKSlcbiBcdFx0XHRcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUixcbiBcdFx0XHRcdFx0XHQgICAgXCJyZWd1bGF0b3J5X2hpbnQoKSBmYWlsZWRcXG5cIik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwODowNzozOC41MDUyODEzNTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTg5NTI2ODQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY2AuIEl0J3MgYSBjb25kaXRpb25hbCBjaGVjayBmb3IgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZShcImxpbmtzeXMsd3J0MzIwMGFjbVwiKWAgb3IgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZShcImxpbmtzeXMsd3J0MzJ4XCIpYCBiZWZvcmUgY2FsbGluZyBgcmVndWxhdG9yeV9oaW50YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gKndvcnRoKiBzcGVuZGluZyB0aW1lIGZ1enppbmc/XG5cblRoZSBwYXRjaCBpdHNlbGYgYWx0ZXJzIGBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExYC4gU28sIGl0J3MgYSBjb2RlIGFkZGl0aW9uLCBhIGNvbnRyb2wgZmxvdyBtb2RpZmljYXRpb24sIGJ1dCwgYSBwcmV0dHkgbmFycm93IG9uZSwgdGFyZ2V0ZWQgdG8gdGhlc2Ugc3BlY2lmaWMgTGlua3N5cyBkZXZpY2VzLiBUaGUgZHJpdmVyIGl0c2VsZiBpcyBmb3IgTWFydmVsbCBXaUZpLCBgbXdpZmlleGAsIHdoaWNoIGlzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIG9mIHJlYWNoYWJpbGl0eSBhcmlzZXMuIENhbiBJIHRyaWdnZXIgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQ/IFllcywgYG13aWZpZXhgICpjYW4qIGJlIGxvYWRlZCwgYW5kIGBtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExYCBpcyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBIb3dldmVyLCBgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlYCBpcyB0aGUga2V5LiBJdCBjaGVja3MgdGhlIGRldmljZSB0cmVlJ3Mgcm9vdCBub2RlIGNvbXBhdGlibGUgc3RyaW5nLiBJbiBhIGdlbmVyaWMgc2V0dXAsIHNheSBRRU1VIHdpdGhvdXQgYSBzcGVjaWZpYyBEVCwgdGhpcyBjaGVjayB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgcmV0dXJuIGZhbHNlLiBUaGF0IG1lYW5zLCB3aXRob3V0IHByb3ZpZGluZyBhIERULCB0aGUgY29kZSBwYXRoIGlzIHVuY2hhbmdlZC5cblxuRXZlbiAqaWYqIEkgY291bGQgc29tZWhvdyBmZWVkIHRoZSBmdXp6ZXIgYSBkZXZpY2UgdHJlZSB0aGF0IHBhc3NlcyB0aGUgY2hlY2ssIGFsbCB0aGF0IGhhcHBlbnMgaXMgdGhlIGNhbGwgdG8gYHJlZ3VsYXRvcnlfaGludGAgaXMgc2tpcHBlZC4gSSBoYXZlIHRvIGFzayBteXNlbGYsIGlzIHRoYXQgc21hbGwgc2tpcCBpbiBiZWhhdmlvciBhIHdvcnRod2hpbGUgdGFyZ2V0IGZvciBmdXp6aW5nPyBQcm9iYWJseSBub3QuIEl0J3MgYSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIHF1aXJrLiBTbywgdW5sZXNzIHRoZSBkcml2ZXIgaGFzIHNvbWUgc2lnbmlmaWNhbnQgYnVncyBJJ20gbWlzc2luZywgSSdtIGdvaW5nIHRvIGhhdmUgdG8gZGlnIG1vcmUgaW50byBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgdG8gZmluZCBhIGJldHRlciBmdXp6aW5nIHRhcmdldC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxMCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA4OjA3OjQ1LjQ5NDgxMTIzNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI4MzAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3JlZ2lzdGVyX2NmZzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NDY3MD1pbnQgbXdpZmlleF9pbml0X2NoYW5uZWxfc2Nhbl9nYXAoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQ2OTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6NDcwMDppbnQgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTQ3MDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmgtMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmg6MTU6aW50IG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuaC0xNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9NTM1PXN0YXRpYyBpbnQgX213aWZpZXhfZndfZHBjKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsIHZvaWQgKmNvbnRleHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTU4Ni1cXHRpZiAoIWFkYXB0ZXItXFx1MDAzZXdpcGh5KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzo1ODc6XFx0XFx0aWYgKG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTEoYWRhcHRlcikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTU4OC1cXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDc6NDUuNTQxMTAyMjE0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYzODk1ODkyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciBhIExpbmtzeXMgUm91dGVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQncyBhIHRpbnkgY2hhbmdlIOKAkyBqdXN0IGJ5cGFzc2luZyBgcmVndWxhdG9yeV9oaW50YCB1bmRlciBzcGVjaWZpYyBMaW5rc3lzIHJvdXRlciBjb25kaXRpb25zLiBQdXJlIGhhcmR3YXJlIHF1aXJrLCByZWFsbHkuIE5vdGhpbmcgZmFuY3kuIE5vIGNvbXBsZXggYWxnb3JpdGhtcyB0byBwb2tlIGF0IHdpdGggZnV6emluZy4gTXkgaW5pdGlhbCBpbnN0aW5jdCB3YXMgdG8gZmxhZyBpdCBhcyBgV29ydGhGdXp6aW5nPXRydWVgLCBidXQgaG9sZCBvbi4uLiBpcyB0aGF0IGV2ZW4ganVzdGlmaWVkPyBJdCdzIGxpdGVyYWxseSBhIG9uZS1saW5lciAob3IgdHdvIGxpbmVzIG9mIGNvbmRpdGlvbnMsIGlmIHlvdSB3YW50IHRvIGJlIHBlZGFudGljISkgYW5kIGBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGVgIGlzIGp1c3QgYSBzaW1wbGUgc3RyaW5nIGNvbXBhcmlzb24gYWdhaW5zdCB0aGUgZGV2aWNlIHRyZWUuXG5cbkl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHRoZSBtb3N0IGZydWl0ZnVsIHRhcmdldCwgYnV0IEkgc2hvdWxkIGxvb2sgZGVlcGVyLCBJIHNob3VsZCBzZWUgaWYgdGhlcmUgaXMgYSByZWFsIGZ1enppbmcgdGFyZ2V0LiBMZXQgbWUgc2VlLi4uIHllcywgSSB0aGluayBgbXdpZmlleF9yZWdpc3Rlcl9jZmc4MDIxMWAgaGFzIHBvdGVudGlhbC4gTGV0IG1lIHRyYWNrIGRvd24gdGhlIGFwcHJvcHJpYXRlIGNvbmZpZyBvcHRpb25zIHRvIHVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwODowNzo1MC4xODAwNjQyNDNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3MjUwNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1XSUZJRVhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI1OmNvbmZpZyBNV0lGSUVYX1BDSUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDc6NTAuMjI1Nzk0NzgyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwMTc2MDIyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBtd2lmaWV4YCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBgbXdpZmlleGAgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgTVdJRklFWGAsIGBNV0lGSUVYX1NESU9gLCBgTVdJRklFWF9QQ0lFYCwgYW5kIGBNV0lGSUVYX1VTQmAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRoYXQgc2luY2UgYG13aWZpZXhfcmVnaXN0ZXJfY2ZnODAyMTFgIGlzIGRlZmluaXRlbHkgZGVmaW5lZCB3aXRoaW4gYGNmZzgwMjExLmNgLCB3aGljaCBpcyAqY29yZSogdG8gdGhlIGBtd2lmaWV4YCBtb2R1bGUsIGBNV0lGSUVYYCBpdHNlbGYgaXMgZ29pbmcgdG8gYmUgYSBmdW5kYW1lbnRhbCByZXF1aXJlbWVudC4gQnV0Li4uIGhvbGQgb24gYSBzZWNvbmQuIERvZXMgYE1XSUZJRVhgICpyZXF1aXJlKiBvbmUgb2YgdGhlIGRldmljZS1zcGVjaWZpYyBvcHRpb25zIOKAkyBlaXRoZXIgYE1XSUZJRVhfU0RJT2AsIGBNV0lGSUVYX1BDSUVgLCBvciBgTVdJRklFWF9VU0JgIOKAkyB0byBhY3R1YWxseSAqZG8qIGFueXRoaW5nIG9yIGxvYWQgcHJvcGVybHk/IEkgdGhpbmsgSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgbWFrZWZpbGVzIHRvIGJlIHN1cmUuIFRpbWUgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZWAuIEknbGwgY29uZmlybSB0aGF0IGxvZ2ljIGZsb3cgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDc6NTQuMjI3NTU3MjEzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBDb3B5cmlnaHQgMjAxMS0yMDIwIE5YUFxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRcXG4gICA3OlxcdG13aWZpZXgteSArPSBtYWluLm9cXG4gICA4OlxcdG13aWZpZXgteSArPSBpbml0Lm9cXG4gICA5OlxcdG13aWZpZXgteSArPSBjZnAub1xcbiAgMTA6XFx0bXdpZmlleC15ICs9IGNtZGV2dC5vXFxuICAxMTpcXHRtd2lmaWV4LXkgKz0gdXRpbC5vXFxuICAxMjpcXHRtd2lmaWV4LXkgKz0gdHhyeC5vXFxuICAxMzpcXHRtd2lmaWV4LXkgKz0gd21tLm9cXG4gIDE0OlxcdG13aWZpZXgteSArPSAxMW4ub1xcbiAgMTU6XFx0bXdpZmlleC15ICs9IDExYWMub1xcbiAgMTY6XFx0bXdpZmlleC15ICs9IDExbl9hZ2dyLm9cXG4gIDE3OlxcdG13aWZpZXgteSArPSAxMW5fcnhyZW9yZGVyLm9cXG4gIDE4OlxcdG13aWZpZXgteSArPSBzY2FuLm9cXG4gIDE5OlxcdG13aWZpZXgteSArPSBqb2luLm9cXG4gIDIwOlxcdG13aWZpZXgteSArPSBzdGFfaW9jdGwub1xcbiAgMjE6XFx0bXdpZmlleC15ICs9IHN0YV9jbWQub1xcbiAgMjI6XFx0bXdpZmlleC15ICs9IHVhcF9jbWQub1xcbiAgMjM6XFx0bXdpZmlleC15ICs9IGllLm9cXG4gIDI0OlxcdG13aWZpZXgteSArPSBzdGFfY21kcmVzcC5vXFxuICAyNTpcXHRtd2lmaWV4LXkgKz0gc3RhX2V2ZW50Lm9cXG4gIDI2OlxcdG13aWZpZXgteSArPSB1YXBfZXZlbnQub1xcbiAgMjc6XFx0bXdpZmlleC15ICs9IHN0YV90eC5vXFxuICAyODpcXHRtd2lmaWV4LXkgKz0gc3RhX3J4Lm9cXG4gIDI5OlxcdG13aWZpZXgteSArPSB1YXBfdHhyeC5vXFxuICAzMDpcXHRtd2lmaWV4LXkgKz0gY2ZnODAyMTEub1xcbiAgMzE6XFx0bXdpZmlleC15ICs9IGV0aHRvb2wub1xcbiAgMzI6XFx0bXdpZmlleC15ICs9IDExaC5vXFxuICAzMzpcXHRtd2lmaWV4LXkgKz0gdGRscy5vXFxuICAzNDpcXHRtd2lmaWV4LSQoQ09ORklHX0RFQlVHX0ZTKSArPSBkZWJ1Z2ZzLm9cXG4gIDM1OlxcdG9iai0kKENPTkZJR19NV0lGSUVYKSArPSBtd2lmaWV4Lm9cXG4gIDM2OlxcdFxcbiAgMzc6XFx0bXdpZmlleF9zZGlvLXkgKz0gc2Rpby5vXFxuICAzODpcXHRvYmotJChDT05GSUdfTVdJRklFWF9TRElPKSArPSBtd2lmaWV4X3NkaW8ub1xcbiAgMzk6XFx0XFxuICA0MDpcXHRtd2lmaWV4X3BjaWUteSArPSBwY2llLm9cXG4gIDQxOlxcdG13aWZpZXhfcGNpZS15ICs9IHBjaWVfcXVpcmtzLm9cXG4gIDQyOlxcdG9iai0kKENPTkZJR19NV0lGSUVYX1BDSUUpICs9IG13aWZpZXhfcGNpZS5vXFxuICA0MzpcXHRcXG4gIDQ0OlxcdG13aWZpZXhfdXNiLXkgKz0gdXNiLm9cXG4gIDQ1OlxcdG9iai0kKENPTkZJR19NV0lGSUVYX1VTQikgKz0gbXdpZmlleF91c2Iub1xcbiAgNDY6XFx0XFxuICA0NzpcXHRjY2ZsYWdzLXkgKz0gLURfX0NIRUNLX0VORElBTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwODowNzo1NC4yMjc2Mjc2MjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTQ3NzUzNTQ2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgTVdJRklFWCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBNV0lGSUVYYCwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBMaW5rc3lzIFdSVDMyMDBBQ00vV1JUMzJ4LiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGVuYWJsZSBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgZm9yIGZ1enppbmcsIHNpbmNlIFVTQiBpcyBhIGNvbnZlbmllbnQgZW50cnkgcG9pbnQgd2l0aCBhIGR1bW15IEhDRC4gSG93ZXZlciwgdGhpcyBpcyBqdXN0IGEgbWlub3IgaGFyZHdhcmUgcXVpcmssIHNvIEkgbmVlZCB0byBjYXJlZnVsbHkgY29uc2lkZXIgaWYgaXQncyBldmVuIHdvcnRoIHRoZSBlZmZvcnQuXG5cblRoZSBwcm9tcHQgbGF5cyBvdXQgc3BlY2lmaWMgY3JpdGVyaWEgZm9yIGV4Y2x1ZGluZyBwYXRjaGVzIGZyb20gZnV6emluZy4gTGV0IG1lIHJldmlldyB0aG9zZSBleGNsdXNpb25zLiBUaGUgcHJpbWFyeSBjb25jZXJuIGhlcmUgaXMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhlIHByb21wdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB0aG9zZSBlbnZpcm9ubWVudHMuXG5cblRoZSBwYXRjaCB1c2VzIGBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXCJsaW5rc3lzLHdydDMyMDBhY21cIilgIHdoaWNoLCB3aXRob3V0IGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUsIHdpbGwgcmV0dXJuIGZhbHNlIGluIFFFTVUuIEF0IGZpcnN0LCBJIHRob3VnaHQgdGhhdCBldmVuIHRob3VnaCB0aGUgc3BlY2lmaWMgYnJhbmNoIG1pZ2h0IG5vdCBiZSBoaXQsIHRoZSBzdXJyb3VuZGluZyBgaWZgIHN0YXRlbWVudCB3b3VsZCBzdGlsbCBiZSByZWFjaGFibGUsIGFuZCB0aHVzLCBwb3RlbnRpYWxseSB3b3J0aCBmdXp6aW5nLiBJbml0aWFsbHksIEkgd2FzIHRoaW5raW5nIGJlY2F1c2UgYG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZWAgaXMgZmFsc2UsIHRoZW4gdGhlIGNvbmRpdGlvbiBgIW9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSguLi4pYCB3b3VsZCBiZSB0cnVlIGFuZCB0aGUgY29kZSB3b3VsZCBwcm9jZWVkIHRvIGByZWd1bGF0b3J5X2hpbnQod2lwaHksIGNvdW50cnlfY29kZSlgLiBIb3dldmVyLCBJIHF1aWNrbHkgcmVhbGl6ZWQgdGhhdCB0aGUgZXhlY3V0aW9uIGZsb3cgaW4gUUVNVSAqaXMqIGV4YWN0bHkgdGhlIHNhbWUgYXMgYmVmb3JlIHRoZSBwYXRjaC4gVGhlIHBhdGNoIG9ubHkgYWx0ZXJzIHRoZSBmbG93IGlmIHRoZSBtYWNoaW5lICppcyogY29tcGF0aWJsZSwgd2hpY2ggUUVNVSAoaW4gaXRzIGRlZmF1bHQgY29uZmlndXJhdGlvbikgd29uJ3QgYmUuXG5cblN5emthbGxlciwgbXkgdHlwaWNhbCBmdXp6aW5nIGVudmlyb25tZW50LCBkb2Vzbid0IGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgZGV2aWNlIHRyZWUncyByb290IG1hY2hpbmUgY29tcGF0aWJsZSBzdHJpbmcuIFNvLCB3aGlsZSBJIGRpZCB0aGluayB0aGlzIHBhdGNoIG1pZ2h0IHJlcHJlc2VudCBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBpdCdzIHRyaXZpYWwgaW4gdGhpcyBjYXNlIGFuZCBkb2Vzbid0LlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCB0aGUgY3JpdGVyaWEgYWdhaW4uIFRoZSBwYXRjaCBhZGRzIGAhb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKFwibGlua3N5cyx3cnQzMjAwYWNtXCIpIFx1MDAyNlx1MDAyNiAhb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKFwibGlua3N5cyx3cnQzMnhcIilgIHRvIGFuIGV4aXN0aW5nIGBpZmAgY29uZGl0aW9uLiBUaGlzIG5ldyBjb2RlIHBhdGgsIHdoZXJlIHRoZSBvcmlnaW5hbCBjb25kaXRpb24gYmVjb21lcyBmYWxzZSAoYmVjYXVzZSBvZiB0aGUgYWRkaXRpb25hbCBjaGVja3MpLCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIFFFTVUgYmVjYXVzZSB0aGUgcm9vdCBtYWNoaW5lIGNvbXBhdGlibGUgc3RyaW5nIGlzIG5vdCB3aGF0J3MgZXhwZWN0ZWQuIGBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGVgIGNoZWNrcyB0aGUgcm9vdCBub2RlIG9mIHRoZSBkZXZpY2UgdHJlZSwgYW5kIFN5emthbGxlciBjYW4ndCBhbHRlciB0aGF0LlxuXG5UaGVyZWZvcmUsIHRoZSBmdW5jdGlvbmFsbHkgY2hhbmdlZCBjb2RlIChza2lwcGluZyBgcmVndWxhdG9yeV9oaW50YCkgKmlzKiBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQWNjb3JkaW5nIHRvIHRoZSBjcml0ZXJpYSwgdGhpcyB3YXJyYW50cyByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFNvLCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDU5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTA4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDg6MDUuNzA1MTY1NTE2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzgyNDk5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9vZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9vZi9hZGRyZXNzLmM9Mzk2PXN0YXRpYyBpbnQgb2ZfZW1wdHlfcmFuZ2VzX3F1aXJrKGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL29mL2FkZHJlc3MuYy00MDgtXFx0XFx0XFx0cXVpcmtfc3RhdGUgPVxcbmRyaXZlcnMvb2YvYWRkcmVzcy5jOjQwOTpcXHRcXHRcXHRcXHRvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoXFxcIlBvd2VyIE1hY2ludG9zaFxcXCIpIHx8XFxuZHJpdmVycy9vZi9hZGRyZXNzLmM6NDEwOlxcdFxcdFxcdFxcdG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZShcXFwiTWFjUklTQ1xcXCIpO1xcbmRyaXZlcnMvb2YvYWRkcmVzcy5jLTQxMS1cXHRcXHRyZXR1cm4gcXVpcmtfc3RhdGU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA4OjA4OjA1Ljc0ODk5ODcyNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjY5MDg0MzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlYCoqXG5cbk9rYXksIHRpbWUgdG8gZGlzc2VjdCB0aGlzIGBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGVgIGRlZmluaXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb3JlIGxvZ2ljIGltbWVkaWF0ZWx5LCBnaXZlbiBteSBiYWNrZ3JvdW5kLCBJJ20gZXhwZWN0aW5nIGEgbnVhbmNlZCBhbmQgcG90ZW50aWFsbHkgaW50cmljYXRlIHNldCBvZiBjaGVja3MuIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IGl0IGxpa2VseSBwcm9iZXMgdGhlIGVudmlyb25tZW50LCBwZXJoYXBzIGV4YW1pbmluZyBoYXJkd2FyZSBzcGVjaWZpY2F0aW9ucywgc29mdHdhcmUgdmVyc2lvbnMsIG9yIGV2ZW4gcmVzb3VyY2UgYXZhaWxhYmlsaXR5LCBhZ2FpbnN0IGEgcHJlZGVmaW5lZCBjb21wYXRpYmlsaXR5IG1hdHJpeCBvciBzZXQgb2YgcmVxdWlyZW1lbnRzLiBJIGFudGljaXBhdGUgaXQnbGwgbGV2ZXJhZ2Ugc29tZSBmb3JtIG9mIGludHJvc3BlY3Rpb24gb3IgZGVwZW5kZW5jeSBjaGVja2luZy4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgaG93IGl0IGhhbmRsZXMgZWRnZSBjYXNlcyBhbmQgcG90ZW50aWFsIGFtYmlndWl0aWVzIGluIHRoZSBzeXN0ZW0gc3RhdGUuIFNwZWNpZmljYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciB3aGVyZSBhbmQgaG93IHRoaXMgaXMgdXNlZCB3aXRoaW4gdGhlIG92ZXJhbGwgc3lzdGVtLCB3aGV0aGVyIGl0IGlzIHB1cmVseSBzdGF0aWMgb3IgYWxsb3dzIGZvciBkeW5hbWljIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgYW5kIGhvdyB0byBkZWJ1ZyBpdHMgYmVoYXZpb3IgaWYgdGhpbmdzIGdvIHdyb25nLiBUaW1lIHRvIGRpdmUgaW4gYW5kIGNvbmZpcm0gKG9yIGZhbHNpZnkhKSB0aGVzZSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzEyNCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA4OjA4OjA5LjAxODA4NTk3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjUyMTcwOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL29mL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDg6MDg6MDkuMDY0NjE0Nzg5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTQ4OTkyMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIERldmljZSBUcmVlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHN5c3RlbSBpcyBpbnRlcmFjdGluZyB3aXRoIGl0cyBoYXJkd2FyZSwgc28gdGhlIGZpcnN0IHBsYWNlIEknbSBnb2luZyB0byBsb29rIGlzIHRoZSBoZWFydCBvZiBEZXZpY2UgVHJlZSBoYW5kbGluZzogYGluY2x1ZGUvbGludXgvb2YuaGAuIFRoaXMgaGVhZGVyIGZpbGUgaXMgKmNydWNpYWwqLiBJdCdzIHdoZXJlIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgQVBJcyBmb3IgZGVhbGluZyB3aXRoIERldmljZSBUcmVlIGJpbmRpbmdzIGFyZSBkZWZpbmVkLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGtleSBzdHJ1Y3R1cmVzIGxpa2UgYHN0cnVjdCBkZXZpY2Vfbm9kZWAsIHRoZSBwcm9wZXJ0eSBkZWZpbml0aW9ucywgbWFjcm9zIGZvciBtYW5pcHVsYXRpbmcgRGV2aWNlIFRyZWUgZGF0YSwgYW5kIGFsbCB0aGUgbG93LWxldmVsIGZ1bmN0aW9ucyB3ZSB1c2UgdG8gdHJhdmVyc2UgdGhlIHRyZWUuIFVuZGVyc3RhbmRpbmcgdGhpcyBoZWFkZXIgaXMgZnVuZGFtZW50YWwgdG8gZGVidWdnaW5nLCBjb25maWd1cmluZywgYW5kIGV4dGVuZGluZyBhbnkgc3lzdGVtIHVzaW5nIGEgRGV2aWNlIFRyZWUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYmFzaWMgb3BlcmF0aW9ucyBhbmQgZGF0YSB0eXBlcy4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgY29udGFpbmVkIHdpdGhpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM4NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA4OjA4OjEyLjUxOTUxNjc3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjE0NDA1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9vZi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvb2YuaD00MTQ9Y29uc3Qgdm9pZCAqb2ZfbWFjaGluZV9nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaGVzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvb2YuaC00MTYtLyoqXFxuaW5jbHVkZS9saW51eC9vZi5oOjQxNzogKiBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUgLSBUZXN0IHJvb3Qgb2YgZGV2aWNlIHRyZWUgZm9yIGEgZ2l2ZW4gY29tcGF0aWJsZSB2YWx1ZVxcbmluY2x1ZGUvbGludXgvb2YuaC00MTgtICogQGNvbXBhdDogY29tcGF0aWJsZSBzdHJpbmcgdG8gbG9vayBmb3IgaW4gcm9vdCBub2RlJ3MgY29tcGF0aWJsZSBwcm9wZXJ0eS5cXG4tLVxcbmluY2x1ZGUvbGludXgvb2YuaC00MjEtICovXFxuaW5jbHVkZS9saW51eC9vZi5oOjQyMjpzdGF0aWMgaW5saW5lIGJvb2wgb2ZfbWFjaGluZV9pc19jb21wYXRpYmxlKGNvbnN0IGNoYXIgKmNvbXBhdClcXG5pbmNsdWRlL2xpbnV4L29mLmgtNDIzLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvb2YuaD04NTY9c3RhdGljIGlubGluZSBpbnQgb2ZfYWxpYXNfZ2V0X2hpZ2hlc3RfaWQoY29uc3QgY2hhciAqc3RlbSlcXG4tLVxcbmluY2x1ZGUvbGludXgvb2YuaC04NjAtXFxuaW5jbHVkZS9saW51eC9vZi5oOjg2MTpzdGF0aWMgaW5saW5lIGludCBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoY29uc3QgY2hhciAqY29tcGF0KVxcbmluY2x1ZGUvbGludXgvb2YuaC04NjIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwODowODoxMi41NjU2NjUxMjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg1MTUxMzY4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9RmFsc2U6IE5vIEltcGFjdCBpbiB0aGUgRnV6emVyKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBwcmV0dHkgY2xlYXIuIEl0J3MgZHJpbGxpbmcgZG93biBpbnRvIHRoZSByb290IG9mIHRoZSBkZXZpY2UgdHJlZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIHRob3NlIExpbmtzeXMgcm91dGVyIGNvbXBhdGlibGUgc3RyaW5nczogXCJsaW5rc3lzLHdydDMyMDBhY21cIiBhbmQgXCJsaW5rc3lzLHdydDMyeFwiLiBCdXQsIGFuZCB0aGlzIGlzIHRoZSBjcnVjaWFsIHBvaW50LCBiZWNhdXNlIHdlJ3JlIHJ1bm5pbmcgdGhpcyB0ZXN0IHVuZGVyIHN5emthbGxlciBpbiBhIGdlbmVyaWMgUUVNVSBlbnZpcm9ubWVudCwgdGhhdCByb290IG5vZGUgKndvbid0KiBoYXZlIHRob3NlIGNvbXBhdGlibGUgc3RyaW5ncy4gSXQnbGwgYmUgc29tZXRoaW5nIGdlbmVyaWMsIG5vdCBzcGVjaWZpYyB0byB0aGF0IExpbmtzeXMgaGFyZHdhcmUuXG5cblRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIHBhdGggdGhlIHBhdGNoIGludHJvZHVjZXMsIHdoZXJlIGBvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGVgIHdvdWxkIHJldHVybiB0cnVlIGFuZCBzaG9ydC1jaXJjdWl0IHRoZSBgaWZgIGNvbmRpdGlvbiwgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBvdXIgZnV6emVyIHNldHVwLiBUaGlzIHBhdGNoLCBlZmZlY3RpdmVseSwgKmRvZXNuJ3QqIGNoYW5nZSB0aGUgZXhlY3V0aW9uIGZsb3cgYXQgYWxsIGluIG91ciBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUgYWRkZWQgaGFyZHdhcmUtc3BlY2lmaWMgY2hlY2sgaXMgaXJyZWxldmFudCBmb3IgdXMuIENvbnNlcXVlbnRseSwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQncyBub3QgZ29pbmcgdG8gbGVhZCB0byBuZXcgY29kZSBjb3ZlcmFnZSBpbiBvdXIgY29udGV4dCwgc28gdGhlcmUncyBubyB2YWx1ZSBpbiBmdXp6aW5nIHRoaXMgc3BlY2lmaWMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODg2LCJPdXRwdXRUb2tlbnMiOjExNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwODowODoyMS40MTcxODE1MzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmsgdGhhdCBjaGVja3MgdGhlIHJvb3QgZGV2aWNlIHRyZWUgbm9kZSBmb3Igc3BlY2lmaWMgTGlua3N5cyByb3V0ZXIgY29tcGF0aWJsZSBzdHJpbmdzIChgbGlua3N5cyx3cnQzMjAwYWNtYCBhbmQgYGxpbmtzeXMsd3J0MzJ4YCkuIEluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50IGxpa2UgUUVNVSwgdGhlIHJvb3QgZGV2aWNlIHRyZWUgbm9kZSB3aWxsIG5vdCBtYXRjaCB0aGVzZSBzdHJpbmdzLCBtYWtpbmcgdGhlIG5ldyBjb2RlIHBhdGggaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZWZmZWN0aXZlbHkgbm90IGFsdGVyaW5nIHRoZSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayB0aGF0IGNoZWNrcyB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIGZvciBzcGVjaWZpYyBMaW5rc3lzIHJvdXRlciBjb21wYXRpYmxlIHN0cmluZ3MgKGBsaW5rc3lzLHdydDMyMDBhY21gIGFuZCBgbGlua3N5cyx3cnQzMnhgKS4gSW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGUgcm9vdCBkZXZpY2UgdHJlZSBub2RlIHdpbGwgbm90IG1hdGNoIHRoZXNlIHN0cmluZ3MsIG1ha2luZyB0aGUgbmV3IGNvZGUgcGF0aCBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBlZmZlY3RpdmVseSBub3QgYWx0ZXJpbmcgdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtz7lc[1] Phase: Running StartedAt: 2026-07-29 08:08:33 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtz7lc[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-29 08:08:33 +0000 UTC FinishedAt: 2026-07-29 08:08:37 +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,}